Application Delivery Management
Application Modernization & Connectivity
CyberRes
IT Operations Management
VisiBroker Naming Service (also known as VisiNaming) is a directory service for CORBA Server Object References. It is implemented based on the OMG CORBA Naming Service specification. All the Object References registered to the Naming Service are associated with logical names. These logical names are usually organized in a hierarchy of Naming Contexts. A Client that needs to access a CORBA Server will query VisiNaming for the target Server's Object Reference using its associated hierarchical logical name.
If you have multiple instances of VisiNaming running in your distributed deployment environment, managing them will be a challenge. Furthermore, if each VisiNaming instance is registered with many Naming Contexts and Object References in its Namespace, your job of managing the Namespace will not be trivial. It will be nice if there is a tool to help you manage the VisiNaming instances and their Namespaces.
The VBConsole’s Naming Service Browser may be just the tool you need. It uses a Tree View GUI widget to display the hierarchical Namespace of Naming Contexts and Object References. This allows you to easily browse, select and modify the Namespace.
This article will give you an introduction of using the Naming Service Browser and other tools within VBConsole to manage VisiNaming. It assumes that you already know the general concept of CORBA Naming Service, and also have some knowledge of using the “nsutil” command line tool to manage VisiNaming. A detailed explanation of the usage of VisiNaming is not in the scope of this article. Please read the chapter on "Using the VisiNaming Service" and "VisiBroker properties" inside the VisiBroker (Java and C ) Developer's Guide in VisiBroker 8.5 documentation for more information.
Please note that the VBConsole and its various tools and browsers described in this article is based on VisiBroker 8.5.
This article is divided into a number of sections. Each section teaches and explains to you a particular feature available in VBConsole that can help you manage VisiNaming. The following is a brief summary of each section.
The first step to manage the VisiNaming services running in your ORB Domain is to know how to locate and identify them in the VBConsole. This section teaches you how this can be done.
This section describes the “Info” View which displays the general configuration settings of VisiNaming.
This section describes the “Contents” View which displays the hierarchical Naming Service Namespace using a Tree View GUI widget. It teaches you how to browse and manipulate (add, remove and modify) the Naming Contexts and Object References in the Namespace. It also shows you why using the “nsutil” command line tool to manipulate the Namespace is not as intuitive and user friendly as compared to the Naming Service Browser.
This section describes the “Storage” View which displays the backend data storage (e.g. Database) configuration settings of VisiNaming.
This section describes the “Services Cluster” View which displays the VisiNaming cluster configuration settings.
This section describes the “Proxies” View which displays the VisiNaming cluster proxy addresses and ports configuration settings.
This section describes the “Environment” View which displays the run-time environment settings of VisiNaming.
This section describes the “Tuning” View which displays some general tuning properties available in VisiNaming.
This section describes the “SCM Tuning” View which displays the current properties and run-time statistics of the Thread Pool and Connection Pool. These information may be useful when you are monitoring and tuning the thread or socket resource consumption by VisiNaming.
Sometimes, you may need to tune the Thread Pool or Connection Pool properties immediately in order to resolve some performance issues due to high load in VisiNaming, but without disrupting the production system. This section teaches you how to dynamically tune and modify the Thread Pool and Connection Pool properties of a running VisiNaming instance without restarting it.
There are times when you urgently need to turn on the VisiNaming debug logs to diagnose some issues, but without disrupting the production system. This section teaches you how to dynamically turn on/off the debug logs and change its log level of a running VisiNaming instance without restarting it.
Sometimes, your VisiNaming services may not be deployed in a Smart Agent Domain. Is VBConsole still able to manage it? This section teaches you how to manage VisiNaming services that are not registered to any Smart Agent Domain.
There are many properties available for configuring the various features in VisiNaming, such as backend storage, clustering, logging, caching, etc. Can you remember their exact property names and possible values when you need to configure it? This section teaches you how to make uses of the various Configuration Wizards to generate the required properties in the VisiNaming properties file.
A short summary of using VBConsole to manage VisiNaming.
To locate the VisiNaming services running in your ORB Domain, first you need to expand the “VisiNaming Services” folder in the Navigation Pane of VBConsole. The names of the VisiNaming services will be listed. Next, click the VisiNaming service that you wish to manage. This will display the Naming Service Browser on the right, which contains the configurations and Naming Service Namespace of the selected VisiNaming service. Please read this article if you need a general introduction of VBConsole.
To view the general configuration of the selected VisiNaming service, click the “VisiNaming Service Properties” button in the Content Pane as shown below.
In the above example, two VisiNaming services (named “NS1” and “NS2”) are running in the ORB Domain using Smart Agent port 41225.
The field names displayed in this View are explained below:
E.g. nameserv -config naming_229.properties NS2
The host name or IP address help you locate the VisiNaming services running in your distributed deployment environment. If you need to debug a VisiNaming related issue, knowing the above information will be helpful in your investigation.
To show the Naming Service Namespace of the selected VisiNaming service, click the “Contents view” button as shown below.
The hierarchical Namespace of Naming Context and Object Reference nodes are displayed using a Tree View GUI widget, with different icons representing the different type of nodes. You can expand and collapse the Naming Context nodes while browsing the hierarchical Namespace. Please refer to the above screen shot for the description of the different types of icons.
Besides displaying the detailed information of the nodes (i.e. Naming Context or Object Reference) in the Namespace, the Naming Service Browser also allows you to add, remove or modify them. The Naming Service related operations available for each type of node are context sensitive. To access these operations, just select a node and pop up its context menu.
The “Root Context” node icon denotes a Naming Context without any parent. The following screen shot shows the information displayed for this type of node and the operations available in its context menu.
Information displayed:
Naming Service operations available:
A “New Naming Context” dialog box pops up for you to specify the stringified name (e.g. Borland.Company) of the new Naming Context.
A “New Naming Component” dialog box pops up to let you specify the stringified name (e.g. Server2.Resource) of the new Naming Context and its associated Object Reference. This operation is only applicable if Implicit Object Clustering feature is enabled in VisiNaming (i.e. Set vbroker.naming.propBindOn=1).
Depending on your deployment requirements, you can choose one of the following approaches to specify the Object Reference:
A “Naming Context (BindingType=ncontext)” node icon denotes a Naming Context that contains binding to another Naming Context. The following screen shot shows the information displayed for this type of node and the operations available in its context menu.
Information displayed:
Naming Service operations available:
A “New Naming Context” dialog box pops up for you to specify the stringified name of the new Naming Context.
A “New Naming Component” dialog box pops up to let you specify the stringified name of the new Naming Context and its associated Object Reference. This operation is only applicable if Implicit Object Clustering feature is enabled in VisiNaming (i.e. Set vbroker.naming.propBindOn=1).
As a precaution, a confirmation dialog box pops for you to confirm this operation.
A “Rename Naming Context” dialog box pops up for you to modify the current name.
A “Naming Context (BindingType=nobject)” node icon denotes a Naming Context that contains binding to an Object Reference. The following screen shot shows the information displayed for this type of node and the operations available in its context menu.
Information displayed:
Naming Service operations available:
A “Configure Naming Component” dialog box pops up to help you modify the name of the selected Naming Context and its associated Object Reference. This operation is only applicable if Implicit Object Clustering feature is enabled in VisiNaming (i.e. Set vbroker.naming.propBindOn=1).
A confirmation dialog box pops for you to confirm this operation.
An “Object Reference” node icon denotes an Object Reference that is bound to the Naming Context. The following screen shot shows the information displayed for this type of node and the operations available in its context menu.
Information displayed:
Naming Service operations available:
A confirmation dialog box pops up for you to confirm this operation.
Some operations are available in the context menu of every type of nodes. For example, you can ping a Naming Context or Object Reference by selecting the “Ping CORBA Object…” menu item. You can also view its IOR details by selecting the “IOR Details…” menu item. The following screen shot is an example of the “IOR Details” dialog box of an Object Reference.
I will show you a few examples of using the “nsutil” command line tool to modify or simply browse the Naming Service Namespace. Try to compare its user friendliness with the Naming Service Browser when performing similar operations.
Example 1: To show the Server Object Reference that is bound to the Name “MicroFocus.Company/Engineering.Department/Server1.Resource”. You will need to use “printIOR” (another command line tool) to decode and print the IOR string to a human readable format:
$ nsutil -VBJprop SVCnameroot=NS2 resolve MicroFocus.Company/Engineering.Department/Server1.Resource
IOR:000000000000001c49444c3a42616e6b2f4163636f756e744d616e616765723a312e300000000001000000000000008c000102000000000d31302e31362e31322e3136390000d6be0000002b00504d4300000004000000102f62616e6b5f6167656e745f706f61000000000b42616e6b4d616e616765720000000003564953030000000500070801ff000000000000000000000800000000564953000000000100000018000000000001000100000001050100010001010900000000
$ printIOR IOR:000000000000001c49444c3a42616e6b2f4163636f756e744d616e616765723a312e300000000001000000000000008c000102000000000d31302e31362e31322e3136390000d6be0000002b00504d4300000004000000102f62616e6b5f6167656e745f706f61000000000b42616e6b4d616e616765720000000003564953030000000500070801ff000000000000000000000800000000564953000000000100000018000000000001000100000001050100010001010900000000
Interoperable Object Reference:
Type ID: IDL:Bank/AccountManager:1.0
Contains 1 profile.
Profile 0-IIOP Profile:
version: 1.2
host: 10.16.12.169
port: 54974
Object Key: ServiceId[service=/bank_agent_poa,id={11 bytes: (B)(a)(n)(k)(M)(a)(n)(a)(g)(e)(r)},key_string=PMC/bank_agent_poaBankManager]
VB Capability component:
ORB_TYPE Component: VBJ 4.x
Code Sets Component: native char codeset:ISO 8859_1 conversion_code_sets: ISO UTF-8, native wchar codeset:ISO UTF-16 conversion_code_sets:
Example 2: To ping the Object Reference that is bound to the Name “MicroFocus.Company/Engineering.Department/Server1.Resource”:
$ nsutil -VBJprop SVCnameroot=NS2 ping MicroFocus.Company/Engineering.Department/Server1.Resource
Object MicroFocus.Company/Engineering.Department/Server1.Resource exists.
Example 3: To browse the Namespace starting from the Root Context:
$ nsutil -VBJprop SVCnameroot=NS2 list
Context: MicroFocus.Company
Object : serial_provider_defaultname
$ nsutil -VBJprop SVCnameroot=NS2 list MicroFocus.Company
Bindings in MicroFocus.Company
Context: Engineering.Department
$ nsutil -VBJprop SVCnameroot=NS2 list MicroFocus.Company/Engineering.Department
Bindings in MicroFocus.Company/Engineering.Department
Object : Server1.Resource
Example 4: To bind a new Naming Context (named “SupportLine.Department”) to the Name “MicroFocus.Company”:
$ nsutil -VBJprop SVCnameroot=NS2 bind_new_context MicroFocus.Company/SupportLine.Department
Example 5: To bind a new Object Reference (named “Server2.Resource”) to the Name “MicroFocus.Company/SupportLine.Department”:
$ nsutil -VBJprop SVCnameroot=NS2 bind MicroFocus.Company/SupportLine.Department/Server2.Resource IOR:000000000000001c49444c3a42616e6b2f4163636f756e744d616e616765723a312e300000000001000000000000008c000102000000000d31302e31362e31322e313639000086f40000002b00504d4300000004000000102f62616e6b5f6167656e745f706f61000000000b42616e6b4d616e616765720000000003564953030000000500070801ff000000000000000000000800000000564953000000000100000018000000000001000100000001050100010001010900000000
Example 6: To unbind the object named “Server2.Resource” from the Name “MicroFocus.Company/SupportLine.Department”:
$ nsutil -VBJprop SVCnameroot=NS2 unbind MicroFocus.Company/SupportLine.Department/Server2.Resource
As compared to using the Naming Service Browser, you can see that using “nsutil” to manage the Namespace has a higher learning curve because you need to remember the exact command, syntax, arguments and the full hierarchical logical name for every Naming Service operation. Its also prone to typo error. However, "nsutil" (being a light weight command line tool) can be easily integrated to an automation script if required.
To view the backend data storage configuration of the selected VisiNaming service, click the “Backend store view” button as shown below.
The field names displayed in this View are explained below:
These information are essential while investigating any backend data storage issue.
Multiple instances of VisiNaming can be clustered together for failover and load balancing capability. Please read the section VisiNaming Service Clusters for Failover and Load Balancing in the VisiBroker 8.5 Developer's Guide for more information about Naming Service clustering feature.
To view the VisiNaming cluster configuration, click the “Services Cluster” button as shown below.
In the above example, the VisiNaming cluster (named “bank_cluster”) comprises of two VisiNaming instances (named “visinaming_one” and “visinaming_two”). Only the cluster name is shown under the “VisiNaming Services” folder in the Navigation Pane. Note that the Naming Service Browser may access anyone of the VisiNaming instances in the cluster to retrieve the Naming Service Namespace and its configuration information.
Please note that this View is designed to display the configuration for “cluster” mode only (i.e. vbroker.naming.slaveMode=cluster). Its not designed for the “master/slave” mode (i.e. vbroker.naming.slaveMode=slave).
The field names displayed in this View are explained below:
If you need to investigate a VisiNaming clustering issue, knowing the address of every VisiNaming instance from the cluster will be essential.
If the VisiNaming cluster is configured to use proxy addresses and ports, you can view these settings by clicking the “Proxy addresses view” button as shown below.
Please note that this View is designed to display the configuration for “cluster” mode only (i.e. vbroker.naming.slaveMode=cluster). Its not designed for the “master/slave” mode (i.e. vbroker.naming.slaveMode=slave).
The field names displayed in this View are explained below:
If you need to investigate a VisiNaming clustering issue that involves proxy addresses, knowing of these settings will be essential.
To view the environment settings of the selected VisiNaming service, click the “Environment Properties” button as shown below.
The field names displayed in this View are explained below:
These basic information are usually needed to know the run-time environment when investigating any VisiNaming issue.
To view the general tuning properties of the selected VisiNaming service, click the “Tuning Properties” button as shown below.
The field names displayed in this View are explained below:
These property settings may be useful when tuning VisiNaming.
To view the Server Connection Manager (SCM) tuning properties of VisiNaming, click the “SCM tuning properties view” button as shown below. Next choose the component (i.e. “Dispatcher”, “Listener” or “Manager”) that you wish to view from the “Select SCM characteristic” drop-down list.
Please read the chapter on VisiBroker properties inside the VisiBroker Java Developer's Guide for the description of the properties and run-time statistic mentioned in this section.
The common Server Engine field names displayed in every component are explained below:
To view the Thread Pool tuning properties and statistics in VisiNaming, first select “Dispatcher” from the drop-down list, and then select the SCM name (e.g. “iiop_tp”) from the list box as shown below.
These properties and run-time statistics show the current configuration and state of VisiNaming's Thread Pool. They may be useful when you are monitoring and tuning the thread resource consumption by VisiNaming. The field names are explained below:
To view the port settings of VisiNaming, first select “Listener” from the drop-down list, and then select the SCM name (e.g. “iiop_tp”) from the list box as shown below.
These properties show the current Listener's configuration of VisiNaming. The field names are explained below:
To view the current Connection Pool tuning properties and statistics of VisiNaming, first select “Manager” from the drop-down list, and then select the SCM name (e.g. “iiop_tp”) from the list box as shown below.
These properties and run-time statistics show the current configuration and state of VisiNaming Connection Pool. They may be useful when you are monitoring and tuning the socket resource consumption by VisiNaming. The field names are explained below:
In the previous section on SCM Tuning View, you have learnt how to view the properties and monitor the run-time statistics of the Thread Pool and Connection Pool. However, you cannot modify the properties in that View. In order to tune these properties dynamically without restarting VisiNaming, you need to utilize its SCM Container.
To access the VisiNaming’s SCM Container, follow the steps below:
Step 1: Navigate to the corresponding VisiNaming’s Server Manager (e.g. NS2) in the Navigation Pane as shown below. The Server Manager Browser is displayed on the right.
Step 2: Click the “Contents view” button. The hierarchy of Containers of VisiNaming are displayed.
Step 3: Navigate to the specific SCM Container (e.g. ORB/ServerEngines/iiop_tp/iiop_tp) in the Server Manager Browser. The current property settings and run-time statistics of the Thread Pool and Connection Pool are displayed at the bottom half of the Server Manager Browser.
In this example, the VisiNaming’s SCM Container name is “iiop_tp”. The current Thread Pool settings allow unlimited number of worker threads to be created (i.e. vbroker.se.iiop_tp.scm.iiop_tp.dispatcher.threadMax=0) to service requests. The current Connection Pool settings does not restrict the number of connections (i.e. vbroker.se.iiop_tp.scm.iiop_tp.manager.connectionMax=0) from Clients. The current settings may potentially cause out of memory issue if a large number of Clients are connecting and sending requests to VisiNaming simultaneously.
To limit the number of worker threads servicing the requests to only 100, select the “vbroker.se.iiop_tp.scm.iiop_tp.dispatcher.threadMax” property and then click the “Configure Server Manager Properties” button to pop up a dialog box as show below.
Change the value from “0” to “100” and click "OK". Similarly, to restrict the number of connections VisiNaming can accept to 200, you can use similar approach to change the value of the “vbroker.se.iiop_tp.scm.iiop_tp.manager.connectionMax” property from “0” to “200”.
You can save all the changes made to the VisiNaming properties file by clicking the “Update server and save properties to file” button. The modified properties file can be loaded by VisiNaming in future sessions. Those properties with “Read-only” Mode are mostly run-time statistics and cannot be changed.
Sometime, in order to diagnose some run-time issues with VisiNaming, you may need to turn on the logs. The logs may provide some useful information that can help you debug and find the root cause of the issue. However, in some situations, you may not be allowed to restart VisiNaming to turn on the logs as this may disrupt the production system.
Fortunately, you can use VBConsole to turn on/off the logs and change the verbosity level dynamically via its “DebugLogger” Container without restarting VisiNaming.
To access the VisiNaming’s “DebugLogger” Container, follow the steps below:
Step 1: Navigate to the corresponding VisiNaming’s Server Manager (e.g. NS2) in the Navigation Pane as shown below. The Server Manager Browser is displayed on the right.
Step 2: Click the “Contents view” button. The hierarchy of Containers in VisiNaming are displayed.
Step 3: Navigate to the “DebugLogger” Container (i.e. ORB/DebugLogger) in the Server Manager Browser. The current logging property settings are displayed at the bottom half of the Server Manager Browser.
In this example, the VisiNaming instance NS2 is currently configured with a rolling Appender (i.e. vbroker.log.default.appenders=rolling) so that the logs are written to rolling log files. Its logging is disabled (i.e. vbroker.log.enable=false) and the log level is set to “INFO” (i.e. vbroker.log.logLevel=INFO).
To turn on logging, select the “vbroker.log.enable” property and then click the “Configure Server Manager Properties” button to pop up a dialog box as show below.
Change the value from “false” to “true” and click "OK". This change will take effect immediately, and the logs will be written to the rolling log file. Similarly, to print more verbose debug logs, use similar approach to change the value of “vbroker.log.logLevel” from “INFO” to “DEBUG”.
Please note that only changes to properties with “R/W” Mode can take effect immediately. Those properties with “Session” Mode can be changed, but does not have immediate effect. You can save all the changes to the VisiNaming properties file by clicking the “Update server and save properties to file” button. The modified properties file can be loaded by VisiNaming in future sessions.
So far, you’ve learnt how to manage VisiNaming services belonging to a Smart Agent Domain. However, VisiNaming can also be deployed without the Smart Agent feature by setting the property “vbroker.agent.enableLocator=false”. To manage this type of VisiNaming deployment, you must explicitly add it to the “My Services” folder by selecting its context menu item “New Naming Service Reference”. A “New Naming Service Reference” dialog box will pop up to let you specify the Object Reference of the VisiNaming instance.
Depending on your deployment requirements, you can use one of the following approaches to specify the VisiNaming Object Reference:
The following Naming Service Browser example shows two VisiNaming instances (NS1 and NS2) added to the “My Services” folder.
You can access every View and perform all the VisiNaming management operations without Smart Agent. Notice that the “VisiNaming Services” folder is now empty because the Smart Agent feature is disabled.
Similarly, you can also add the corresponding VisiNaming Server Manager to “My Services” by selecting its context menu item “New Server Manager Reference”. You should specify the Object Reference of the VisiNaming in the “New Server Manager Reference” dialog box.
You can remove a service under “My Services” by selecting its context menu item “Remove Reference…”. A dialog box will pop up for you to confirm this action.
VisiNaming can be configured using a properties file. The “VisiBroker Properties File Editor” can help you configure the VisiNaming properties file. To launch this Editor, go to the “Tools” pull-down menu in VBConsole. It helps inexperienced users, who are not familiar with the VisiNaming property names, their possible values and syntax, edit the properties file. Experienced users can still choose to manually edit the properties file with their preferred text editor.
To start editing a VisiNaming properties file, you either open an existing file or create a new file under the “File” pull-down menu in the “VisiBroker Properties File Editor”. Next, choose the required VisiNaming configuration Wizard under the “Wizard” pull-down menu. There are four Wizards to choose from. Each Wizard is used to configure different aspect of VisiNaming as explained in the following sections.
Please read the chapter on Using the VisiNaming Service and VisiBroker properties inside the VisiBroker Developer's Guide for the description and usage of these properties.
This Wizard is used for some general configuration of VisiNaming.
Menu location: Wizard -> VisiNaming Service -> VisiNaming Service Configuration Wizard
This Wizard helps you configure the following properties:
This Wizard is used for the Backend Storage or Database configuration of VisiNaming.
Menu location: Wizard -> VisiNaming Service -> Backend Storage Wizard
This Wizard helps you configure the following properties:
The “Test Connection” button is used to verify whether the configurations and login credentials you have entered can connect to the Database. For this feature to work, you must ensure the Database’s drivers are present the CLASSPATH of VBConsole. In this example, we are using JDatastore Database. Hence you must specify JDatastore’s JDBC drivers in the CLASSPATH when launching VBConsole as shown below:
$ vbconsole –classpath $VBROKERDIR/lib/jds.jar:$VBROKERDIR/lib/jdsremote.jar
This Wizard is used to configure VisiNaming Service in Master/Slave mode.
Menu location: Wizard -> VisiNaming Service -> Master/Slave Configuration Wizard
This Wizard helps you configure the following properties:
This Wizard is used to configure VisiNaming Service in Cluster mode.
Menu location: Wizard -> VisiNaming Service -> Services Cluster Configuration Wizard
This Wizard helps you configure the following properties:
This Wizard is used to configure the debug logging properties in VisiNaming.
Menu location: Wizard -> Debug/Log -> VisiBroker 7.x -> VisiNaming Service
Please read the section on Debug Logging Properties in the VisiBroker Java Developer's Guide for the description of these debug logging properties.
This Wizard helps you configure the following logging properties:
If “rolling” Appender is selected, you can use the “Configure Rolling Log Appender” dialog box for its configuration.
This dialog box helps you configure the following Appender properties:
After the Wizards have generated the properties, you can still modify them or add other properties that are currently not handled by the Wizards using the integrated text editor in “VisiBroker Properties File Editor”. The following example shows a properties file (naming_one.properties) being configured in VisiNaming Service Cluster mode.
When you have made the final modification to the properties, save the properties file. A VisiNaming instance can load this properties file by using the “-config” option as shown below:
$ nameserv –config naming_one.properties visinaming_one
The VBConsole and its tools allow you to easily manage your distributed VisiNaming services from a single GUI. The integrated Naming Service Browser, Server Manager Browser, VisiBroker Properties File Editor and VisiNaming Configuration Wizards can facilitate you in performing the common Naming Service management tasks such as viewing the current configurations; monitoring the run-time statistics of the Thread and Connection Pools and tune their properties; browse and manipulate the hierarchical Naming Service Namespace; turn on/off the debug logs and change its log level; configure the VisiNaming properties file; etc.