Skip to main content

Problem:

Product Name: VisiBroker for Java
Product Version: 8.0 Service Pack 2 & below
Platform/OS Version: All

 

When CORBA the server starts up, it registers the POA or object to the osagent. By default, the server will register to the osagent using the ip address of the Server. When the client invokes Bank.AccountManagerHelper.bind(orb, "BankManager", "host.a.com", null),the client orb will pass the host name to the osagent. Hence, the client orb receives the org.omg.CORBA.OBJECT_NOT_EXIST exception

The test case will illustrate the differences between ip adress or host name registered with the osagent.


1. Run osagent and `vbj Server` at /examples/vbroker/basic/bank_agent. Server will register to osagent. Please note the service provider ("x.x.x.x_*_/bank_agent_poa") from the osagent log shown below.

==>> Sat Apr 25 00:21:23 2009, dsaclnt.C, 0, Inf
registerSvc() Received from client at
Host : x.x.x.x
User : java
PID : -655465027
CAddr : x.x.x.x
VPort : 49492
CPort : 49492
Registering the following service:
x.x.x.x_*_/bank_agent_poa
at location address port .


2. Modify the Client.java to use bind() supplied with the hostname (not IP address). For example,

Bank.AccountManagerHelper.bind(orb, "/bank_agent_poa", "sgrds-tss10", null); // supplying an object name

-- or --

Bank.AccountManagerHelper.bind(orb, "/bank_agent_poa", managerId, "sgrds-tss10", null); // supplying POA name

3. Compile and run `vbj Client` at /examples/vbroker/basic/bank_agent. Client will inquire from osagent with the following request information. Notice the service requested is "sgrds-tss10_*_/bank_agent_poa". osagent will not be able to match this from its list of service provider (it only has the "x.x.x.x_*_/bank_agent_poa" using the IP address) and will return org.omg.CORBA.OBJECT_NOT_EXIST.

==>> Sat Apr 25 00:34:04 2009, dsaclnt.C, 0, Inf
getProvider() Received from client at
Host : x.x.x.x
User : java
PID : -654493787
CAddr : x.x.x.x
VPort : 3666
CPort : 3666
Requesting for the following service:
sgrds-tss10_*_/bank_agent_poa

Resolution:

The vbroker.agent.backcompatBind property is introduced in VB8.0 Service Pack 2 to ensure backward compatible bind behavior. This property is applicable to client side only and the default value is false.

In order to resolve the org.omg.CORBA.OBJECT_NOT_EXIST exception, the client must be run with `vbj -J-Dvbroker.agent.backcompatBind=true Client`. When the value is set to true, the underlying client ORB will convert the hostname supplied to bind() to IP address prior to sending to osagent. It will then match to the list of service providers registered with osagent.

However, if you are using -J-Dvbroker.orb.localhost= on the server side, the server will register to osagent using the host name and not the IP address. You do not need to set the vbroker.agent.backcompatBind property explicitly. When the client execute the bind using the host name, you will get the server object reference.
 


#osagent
#backcompatBind
#VisiBroker
#localhost
#Security