JDK1.4b3 vs Orbix2000 compatibility problem

We have a problem with JDK 1.4 beta 3 ORB compatibility with Orbix2000 v1.2.1 on Solaris 8. I am hoping that you can shed some light on this for us, as we are not sure where the problem is.

We are getting a marshalling exception (minor code 535: REQUEST_MESSAGE_NOT_CONSUMED) when invoking a method with no parameters on a remote object.

For example:

ERROR : org.omg.CORBA.MARSHAL:vmcid: 0x49540000 minor code: 535 completed:

No

org.omg.CORBA.MARSHAL:vmcid: 0x49540000 minor code: 535 completed: No

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct

orAccessorImpl.java:42)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC

onstructorAccessorImpl.java:30)

at java.lang.reflect.Constructor.newInstance(Constructor.java:277)

at java.lang.Class.newInstance0(Class.java:301)

at java.lang.Class.newInstance(Class.java:254)

at com.sun.corba.se.internal.iiop.messages.ReplyMessage_1_2.getSystemExc

eption(ReplyMessage_1_2.java:93)

at com.sun.corba.se.internal.iiop.ClientResponseImpl.getSystemException(

ClientResponseImpl.java:108)

at com.sun.corba.se.internal.corba.ClientDelegate.invoke(ClientDelegate.

java:302)

at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:460)

at CisList._MOInfoListStub.numObjects(_MOInfoListStub.java:575)

at getOrders.main(getOrders.java:78)

Investigation using the GIOP snoop plugin showed that the JDK ORB adds 12 bytes of

information after the CORBA header but before the parametric information.

These bytes appear to be consumed correctly by O2K when there are

parameters for the operation. However, when no parameters exist, O2K

seems to have a logic error because it expects the input buffer to be

empty after processing the header, but there are still 12 bytes

remaining.

Several workarounds have been attempted, including setting Orbix

properties that are supposed to suppress the throwing of this exception,

but none have made any difference.

The 12 bytes actually appear to be part of the service context list and as

such should be considered part of the GIOP request header. JDK sends two

service contexts: the first is the codeset negotiation and the second is the

ORB type. These are detailed in the OMG standard (13.7.2.5 and 13.6.3.1

respectively).

Using the GIOP snoop plugin, it would appear that Orbix considers the

codeset negotiation as part of the header but the ORB type is considered to

be outside the header (however, the snoop utility may not be representitive

of the Orbix marshaling code).

We have tried to use OpenORB with the same server, and this seems to work fine.

Can you confirm where the problem lies? Is there any way that we can use the JDK ORB?

Thanks,

Victor Veres

[3062 byte] By [vicveres] at [2007-9-26 16:37:16]
# 1
Forgot one thing. The client is Windows NT4.Thanks,Victor Veres
vicveres at 2007-7-2 20:22:59 > top of Java-index,Archived Forums,Java 2 Software Development Kit (J2SE SDK)...
# 2

This problem still exists as described by vicveres. I have just tried a similar example with the recently released JDK1.4.1 and Orbix2000 V1.2.3 with exactly the same results.

I have also tried JacORB and it works fine in this case.

This is a real problem, I'm trying to isolate it and will report it to the Bug database soon.

Any other info on this problem would be most welcome.

bwallis at 2007-7-2 20:22:59 > top of Java-index,Archived Forums,Java 2 Software Development Kit (J2SE SDK)...
# 3

I am also getting the same type of errors. I run jdk 1.4.0_01 on Windows 2000 and orbix 2000 1.2.3 on Solaris 2.6. From what I saw in the release notes, I don't think there have been any CORBA-related bugfixes in the latest releases of jdk1.4.

I have a Java subscriber (Win2k) connecting to a C++ server (Solaris). When the server pushes an event to the subscriber, it gets this:

IDL:omg.org/CORBA/MARSHAL:1.0: minor = 0x49540218 (REPLY_MESSAGE_NOT_CONSUMED), completion status = YES

When the client calls an operation on the server, it also gets a CORBA::MARSHAL exception:

org.omg.CORBA.MARSHAL:vmcid: 0x49540000 minor code: 535 completed: No

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:274)

at java.lang.Class.newInstance0(Class.java:296)

at java.lang.Class.newInstance(Class.java:249)

at com.sun.corba.se.internal.iiop.messages.ReplyMessage_1_2.getSystemException(ReplyMessage_1_2.java:90)

at com.sun.corba.se.internal.iiop.ClientResponseImpl.getSystemException(ClientResponseImpl.java:105)

at com.sun.corba.se.internal.corba.ClientDelegate.invoke(ClientDelegate.java:303)

at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)

Cheers,

Serban

serban at 2007-7-2 20:22:59 > top of Java-index,Archived Forums,Java 2 Software Development Kit (J2SE SDK)...