[jacorb-developer] TAO 1.7 Compatibility Issue

Vasya Tretyakov vasyamn at yahoo.com
Wed Jun 20 12:12:37 CEST 2012


Dear Members,

I have a need to write an application that communicates with another process on a different server. The developers of the software I would like to connect to provide an IDL file to facilitate programming language and server independent communication between the interacting applications. The ORB of the server side is implemented in C++ using The ACE ORB (TAO) version 1.7 (as the folder name on the server suggests). I also have several binary pre-compiled sample client applications that successfully communicate with the server and the corresponding C++ source code.

After facing many problems with the ORB implementation provided by Oracle in JDK, I came across your wonderful project.

At this time I managed to connect to the server's Naming Service, receive IOR to the desired object and sucessfully execute a void method on it. However when I try calling the method that requires parameters I get an OperationFailed exception.

Investigation of the possible problem causes lead me to WireShark sniffer, which I used to capture GIOP packets. Here is what I can conlude by comparing the packets sent/received during the sample C++ TAO based client applicaton and my Java JacORB based application:
1) GIOP requests from Java client application have big-endian byte order, while C++ client application uses little-endian byte order.
2) Replies to Java and C++ client applications have little-endian byte order (actually, this was a problem when using JDK's ORB since it could not parse the replies while JacORB does the job).
3) GIOP requests Java and C++ applications have a lot in common (there are some minor differences), expect for the parameter list of the called method. C++ client application contains the name of the method, four zero bytes, and parameter list while Java client contains the name of the method, four zero bytes, and parameter list with a preceeding zero byte.

I conlude that I am facing the following problems:
1) Incorrect byte order in reply messages (though JacORB manages to cope with it).
2) An extra zero byte in the parameter list in the Java JacORB based client implementation.

Since I am quite unexperience with CORBA I would really appreciate your advice on whether the extra zero byte in the parameter list is indeed the cuase of the exception being raised by the server. If so, what is the best place to start looking at in order to fix the problem.

Thank you in advance.

Vasyl


More information about the jacorb-developer mailing list