Java.rmi.MarshalException: error marshalling arguments

I've two class Client and Main. Eventnotify is implemented in class Client using RMI techniques. Here is sample
public interface EventNotify extends Remote {
void SendNotification (String str) throws RemoteException;
public class Client implements EventNotify {
     //implementation of EventNotify
     public void SendNotification(String str) {
     System.out.println("from srver: ..." +str);
class Main {
public static void main(String[] args) {
Client clnt = new Client();
int val = stub.register_client(host, clnt); //THE ERROR IS HERE
The idea is to pass remote objects from client to a server. I've a server program running continously, but the problem is on passing objects of type Client. I'm facing marshaling problem.
AND THE ERROR IS
Client exception: java.rmi.MarshalException: error marshalling arguments; nested exception is:
     java.io.NotSerializableException: Client
java.rmi.MarshalException: error marshalling arguments; nested exception is:
     java.io.NotSerializableException: Client
     at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:156)
     at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:195)
     at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:149)
     at $Proxy0.register_client(Unknown Source)
     at Main.main(Client.java:74)
Thanks for helping.
Caused by: java.io.NotSerializableException: Client
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1173)
     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:343)
     at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:292)
     at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:151)

Probably I have a similar problem while calling remote object's method with parameter looks like that :
public class ParamClass extends AbstractParamClass implements Runnable,
        java.io.Serializable {
    private NodeList field1; // part of crimson's tree
    private NamedNodeMap field2 = null;// part of crimson's tree
public class RmiRemote extends AbstractRemote  { // Remote Object Class
@Override
public  Object remoteMethod1() throws RemoteException{
ParamClass param = new  ParamClass("build with crimson");
CustomInterface stub = (CustomInterface) registry.lookup(name);
stub.callRemoteMethod(param); // exception here
java.rmi.MarshalException: error marshalling arguments; nested exception is:
        java.io.NotSerializableException: org.apache.crimson.tree.AttributeSet
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:138)
        at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)when I build param object with xerces - no exception occurs . Other methods of remote object doing well. Remote object extends AbstractRemote superclass derived from UnicastRemoteObject. How can I avoid this problem and call method with crimson's tree fields parameter?
Thank you.

Similar Messages

  • Java.rmi.MarshalException: error marshalling return;

    Hi All,
    I'm getting the above error whilst performing a query. My set up is,
    Kodo 3.1.5
    Weblogic 8.1
    I have created some classes using the reverse mapping from Sybase,
    enhanced them and uploaded them to my server. I have then attempted to
    retrieve the data via an EJB. However I get NotSerializableExceptions
    whilst doing so.
    I am attempting to return a Collection of enhanced objects, but even a
    single enhanced object throws that error
    I think it may be something to do with my package.jdo or something else.
    Can anyone help?
    My package.jdo looks like this,
    <?xml version="1.0" encoding="UTF-8"?>
    <jdo>
    <package name="com.lehman.clientseg.data">
    <class name="AuditRecord" objectid-class="AuditRecordId"/>
    <class name="Btb" objectid-class="BtbId"/>
    <class name="CashActivity" objectid-class="CashActivityId"/>
    <class name="CashBulk" objectid-class="CashBulkId"/>
    <class name="CcyTypeIndicator" objectid-class="CcyTypeIndicatorId">
    <field name="descn">
    <extension vendor-name="kodo" key="jdbc-size" value="-1"/>
    </field>
    </class>
    <class name="Counterparty" objectid-class="CounterpartyId"/>
    <class name="Currency" objectid-class="CurrencyId"/>
    <class name="DealType" objectid-class="DealTypeId"/>
    <class name="DeliveryInstruction"
    objectid-class="DeliveryInstructionId"/>
    <class name="Entity" objectid-class="EntityId"/>
    <class name="MonitoredEvent" objectid-class="MonitoredEventId"/>
    <class name="PaymentType" objectid-class="PaymentTypeId"/>
    <class name="Sequence" objectid-class="SequenceId"/>
    <class name="SettlementMode" objectid-class="SettlementModeId"/>
    </package>
    </jdo>
    and here is the stack trace,
    java.rmi.MarshalException: error marshalling return; nested exception is:
    java.io.NotSerializableException: com.lehman.clientseg.data.Entity
    at
    weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
    at
    weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:284)
    at
    weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
    at
    com.lehman.clientseg.server.ejb.JDOBean_1a5ozo_EOImpl_812_WLStub.getAllEntities(Unknown
    Source)
    at com.lehman.clientseg.BeanTest.<init>(BeanTest.java:49)
    at com.lehman.clientseg.BeanTest.main(BeanTest.java:62)
    Caused by: java.io.NotSerializableException:
    com.lehman.clientseg.data.Entity
    at
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
    at
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
    at java.util.LinkedList.writeObject(LinkedList.java:681)
    at sun.reflect.GeneratedMethodAccessor157.invoke(Unknown Source)
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at
    java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:795)
    at
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1294)
    at
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1245)
    at
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
    at
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
    at
    weblogic.common.internal.ChunkedObjectOutputStream.writeObject(ChunkedObjectOutputStream.java:116)
    at
    weblogic.rjvm.MsgAbbrevOutputStream.writeObject(MsgAbbrevOutputStream.java:93)
    at
    com.lehman.clientseg.server.ejb.JDOBean_1a5ozo_EOImpl_WLSkel.invoke(Unknown
    Source)
    at
    weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
    at
    weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)
    at
    weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
    at
    weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
    at
    weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
    at
    weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
    at
    weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)

    Abe White wrote:
    Looks like you're trying to serialize a class that's not serializable,
    probably by returning it (or a class that has a relation to it) from an EJB.Very strange. My classes where autogenerated using the reverse mapping
    tool and weren't serializable. I'm sure I once did make them serializable
    and I got more error messages. I just tried again and everything was fine.
    Hmmm... Must be going mad.
    Cheers,
    Stevie :)

  • Java.rmi.MarshalException: CORBA MARSHAL 0[Error unmarshaling value [Error

    Hello,
    I'm here to ask this question.
    Let me describe the problem.
    I have a EJB call that can be excute use Struts Action class(just a general Java class).
    When I call this EJB in other Java class method then have below errors.
    Any body has any idea what's this error means? Thanks in advance!!
    java.rmi.MarshalException: CORBA MARSHAL 0[Error unmarshaling value [Error unmarshaling value [Error unmarshaling value [Error unmarshaling value [unknown protocol: calligo]]]]]
         at java.lang.reflect.Constructor.newInstance(Native Method)

    You must be more precise about the problem. Explain how your CORBA ORB is related to your EJBs or your RMI code, and WHO calls WHOM. We simply dont know what you're talking about.

  • Java.rmi.MarshalException : CORBA MARSHAL 1398079699

    I deployed an application with a stateless SessionBean
    in J2EE 1.3.
    When accessed from a non-java client using JNI, I got InvocationTargetException
    "java.rmi.MarshalException : CORBA MARSHAL 398079699 Maybe;
    nested exception is: org.omg.CORBA.MARSHAL: minor code: 1398079699 completed: Maybe"
    Anybody encountered a similar problem ?

    Hi,
    I think i have exactly the same problem as you. I have a client app accessing a stateless session bean .
    The error I get seems to be related to the argument passed to the method i'm calling. In my application I am passing in a "complicated" value object to the session bean. My guess is that the value object is not compliant with the CORBA rules.
    I'm trying to find out what is and isn't legal for Value Objects. the least i know is that the value object must implement Serializable.
    I'll keep you posted If i can sort it out.

  • Java.rmi.UnmarshalException: error unmarshalling arguments;

    Hi!
    I'm a newbe with rmi, and I try to use a test program, from Thinking in Java:
    ITiempoPerfecto.java
    package c15.rmi;
    import java.rmi.*;
    interface ITiempoPerfecto extends Remote {
         long obtenerTiempoPerfecto() throws RemoteException;
    TiempoPerfecto.java
    package c15.rmi;
    import java.rmi.*;
    import java.rmi.server.*;
    import java.rmi.registry.*;
    import java.net.*;
    public class TiempoPerfecto extends UnicastRemoteObject implements ITiempoPerfecto {
         public long obtenerTiempoPerfecto () throws RemoteException {
              return System.currentTimeMillis();
         public TiempoPerfecto() throws RemoteException {
               super();
         public static void main(String[] args) throws Exception {
              System.setSecurityManager(new RMISecurityManager());
              TiempoPerfecto tp=new TiempoPerfecto();
              Naming.bind("//localhost/TiempoPerfecto",tp);
              System.out.println("Preparado para dar la hora");
    }and
    MostrarTiempoPerfecto.java
    package c15.rmi;
    import java.rmi.*;
    import java.rmi.registry.*;
    public class MostrarTiempoPerfecto {
         public static void main(String[] args) throws Exception {
              System.setSecurityManager( new RMISecurityManager());
              ITiempoPerfecto t=(ITiempoPerfecto)Naming.lookup("//localhost/TiempoPerfecto");
              for (int i=0;i<10;i++)
                   System.out.println("Tiempo perfecto: "+t.obtenerTiempoPerfecto());
    }I compile all the files normally.
    Later I do:
    rmiregistry &
    rmic c15.rmi.TiempoPerfecto(This only generate the file TiempoPerfecto_Stub.class, it's ok?)
    Without warnings or errors. But when I try to create a server object
    java c15/rmi/TiempoPerfectoI obtain this:
    Exception in thread "main" java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
            java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
            java.lang.ClassNotFoundException: c15.rmi.TiempoPerfecto_Stub
            at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:385)
            at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
            at sun.rmi.transport.Transport$1.run(Transport.java:153)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
            at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
            at java.lang.Thread.run(Thread.java:595)
    .......What is the mistake? What may I do to run this programs?
    Thank you!

    You must change your current directory to your class path (EX: java c15/rmi/TiempoPerfecto) then execute command remiregistry.

  • Java.rmi.MarshalException: CORBA MARSHAL

    I am getting the following exception when server is sending response back to client:
    Caused by: java.lang.reflect.InvocationTargetException
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.octagonresearch.viewpoint.client.proxy.weblogic.ClientProxyEjb.invoke(ClientProxyEjb.java:97)
         ... 13 more
    Caused by: java.rmi.MarshalException: CORBA MARSHAL 0 Maybe; nested exception is:
         org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: Maybe
         at com.sun.corba.se.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:197)
         at javax.rmi.CORBA.Util.mapSystemException(Util.java:67)
         at com.octagonresearch.viewpoint.server.biztier.ws._SessionControllerWSRemote_Stub.invoke(Unknown Source)
         ... 18 more
    Caused by: org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: Maybe
         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:513)
         at java.lang.Class.newInstance0(Class.java:355)
         at java.lang.Class.newInstance(Class.java:308)
         at com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.getSystemException(MessageBase.java:897)
         at com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage_1_2.getSystemException(ReplyMessage_1_2.java:99)
         at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.getSystemExceptionReply(CorbaMessageMediatorImpl.java:572)
         at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(CorbaClientRequestDispatcherImpl.java:432)
         at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:326)
         at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)
         at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)
    Any idea how to get rid of this problem. Thank you.

    Hi,
    I am not very sure whether it will work but I have read somewhere that this exception occurs if the Remote Object size is more than the Java stack size at the client side which is by default 256 Kb. So. it might be possible that if the Stub size exceeds, then Client is not able to load the Stubs and hence the Marshal Exception is coming.
    I think increasing the Java stack size of the Web\ EJB containers might resolve the issue.

  • Java.rmi.MarshalException (Stub is there)

    Hi I'm gettin the following errors:
    Exception in thread "main" java.rmi.MarshalException: error marshalling argument
    s; nested exception is:
    java.io.NotSerializableException: package1.InternalRequest
    Above error when running in dos (i have used rmic to create the stub)
    But in Eclipse editor i get the following error when running:
    Exception: java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
         java.lang.ClassNotFoundException: package1.InternalRequest_Stub (no security manager: RMI class loader disabled)
    Any ideas? I've used rmic to create the stub and I've started rmiregistry then started the server again however I still cannot get past this problem. It worked fine before.

    Nope still getting:
    Exception: java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
         java.lang.ClassNotFoundException: package1.InternalRequest_Stub (no security manager: RMI class loader disabled)
    Anyone know why this is happening??
    I have created the stub and I have rmiregistry running.

  • Java.rmi.MarshalException:....Broken pipe (plz help)

    Hi,
    I tried to run one simple RMI application..
    I got the RMI Server running...
    But While running the client I got the following Exception...
    java.rmi.MarshalException: error marshalling arguments; nested exception is:
    java.net.SocketException: Broken pipe
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:129)
    at engine.ServerMain_Stub.addTask(Unknown Source)
    at client.ClientMain.initCompute(ClientMain.java:38)
    at client.ClientMain.main(ClientMain.java:17)
    Caused by: java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:66)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105)
    at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1639)
    at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1146)
    at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1100)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1241)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1355)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:281)
    at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:265)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:124)
    ... 3 more
    I am not able to understand the problem...
    Plz help..
    Regerds
    Jijo Vincent

    Hi, I got same stack trace within RMIConnector.
    MBean Server (= RIM Server) has bean alive, but a MBean client may get following Exception.
    I'm guessing that a port on server side was closed, cause rmi object on server side was unbinded from the rmi registory by some trigger.
    But I don't know what was the trigger for this...
    Caused by: java.rmi.MarshalException: error marshalling arguments; nested exception is:
    java.net.SocketException: Broken pipe
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:138)
    at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
    at javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(Unknown Source)
    at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.invoke(RMIConnector.java:993)
    at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:288)
    ... 7 more
    Caused by: java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
    at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1847)
    at java.io.ObjectOutputStream$BlockDataOutputStream.writeByte(ObjectOutputStream.java:1885)
    at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1546)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:333)
    at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:274)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133)
    ... 11 more
    java.runtime.name = Java(TM) SE Runtime Environment
    java.runtime.version = 1.6.0_24-b07
    java.specification.name = Java Platform API Specification
    java.specification.vendor = Sun Microsystems Inc.
    java.specification.version = 1.6
    os.arch = amd64
    os.name = Linux
    os.version = 2.6.18-194.el5

  • Java.rmi.MarshalException is thrown when we run JUnit TestCase

    Hi,
    We wrote a JUnit TestCase to test our EJBs of our J2EE project.
    When we run the JUnit TestCase, we are facing Marshalling Exception.
    Our application development IDE is WSAD5.0 and it's JUnit jar's version is 3.8.1
    But the application is running fine when we manually run the application. This makes clear that there is no problem in the application.
    And also all the required classes are implementing Serializable.
    Here is the actual stack trace of the exception:
    java.rmi.MarshalException: CORBA MARSHAL 0x0 No; nested exception is:
         org.omg.CORBA.MARSHAL: minor code: 0 completed: No
    org.omg.CORBA.MARSHAL: minor code: 0 completed: No
         at java.lang.Class.newInstance0(Native Method)
         at java.lang.Class.newInstance(Class.java:262)
         at com.ibm.rmi.iiop.ReplyMessage.getSystemException(ReplyMessage.java:206)
         at com.ibm.rmi.iiop.ClientResponseImpl.getSystemException(ClientResponseImpl.java:130)
         at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:556)
         at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:708)
         at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:258)
         at fos.server.lt.medicalInsurance.sbMedicalInsurance._MedicalInsuranceRemote_Stub.getInterventionFee(_MedicalInsuranceRemote_Stub.java:395)
         at getIntFeeEJB.CTestCase_Default._Default_0(CTestCase_Default.java:393)
         at getIntFeeEJB.CTestCase_Default.test_Default_0(CTestCase_Default.java:413)
         at java.lang.reflect.Method.invoke(Native Method)
         at junit.framework.TestCase.runTest(TestCase.java:154)
         at junit.framework.TestCase.runBare(TestCase.java:127)
         at junit.framework.TestResult$1.protect(TestResult.java:106)
         at junit.framework.TestResult.runProtected(TestResult.java:124)
         at junit.framework.TestResult.run(TestResult.java:109)
         at junit.framework.TestCase.run(TestCase.java:118)
         at junit.framework.TestSuite.runTest(TestSuite.java:208)
         at junit.framework.TestSuite.run(TestSuite.java:203)
         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:329)
         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:218)
         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:151)
    Any idea how to resolve this issue. if so, please help.

    i changed my plan to test application ng the way
    mentioned above. But i think that it was due to lack
    of memory on the system.
    I hope this will be helpful.I got probleem whit java applet whit error report 3701
    I hope jou can help me

  • Why do we obtain a java.rmi.MarshalException during a stateless session bean method invocation from a client java program?

    Hello,
    we're using iAS SP3.
    We deployed a stateless session bean that has a business methods with a Vector as argument (put (vector, String)).
    If we call it from a servlet, it works fine. But when we try to call it from a thread, started in a standalone java client program, we obtain a java.rmi.MarshalException.
    We tried to use Vector and HashSet objects as arguments, but we always obtain this kind of exception. It seems strange because a similar
    method that returns a Collection of objects (getAll) works fine. This is the our bean Remote Interface:
    public interface Receive extends EJBObject {
    public void putMessage(Message message, java.lang.String la) throws RemoteException; // it works fine!!!
    public void putMessages(java.util.Vector messages, java.lang.String la) throws RemoteException; // it doesn't work!!!
    Collection getAll (java.lang.String la) throws RemoteException, EJBException; // it works fine!!!!
    This is the java client stack trace:
    java.rmi.MarshalException: CORBA MARSHAL 0 No; nested exception is:
    org.omg.CORBA.MARSHAL: minor code: 0 completed: No
    org.omg.CORBA.MARSHAL: minor code: 0 completed: No
    at java.lang.Class.newInstance0(Native Method)
    at java.lang.Class.newInstance(Class.java:241)
    at com.sun.corba.ee.internal.iiop.ReplyMessage.getSystemException(ReplyMessage.java:93)
    at com.sun.corba.ee.internal.iiop.ClientResponseImpl.getSystemException(ClientResponseImpl.java:82)
    at com.sun.corba.ee.internal.corba.ClientDelegate.invoke(ClientDelegate.java:199)
    at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:248)
    at ejb._Receive_Stub.putMessages(_Receive_Stub.java:731)
    at commlayer.Receiver.run(Receiver.java:67)
    Does anyone know how to solve this problem?
    Thank you in advance,
    Maurizio

    This is big bug!
    This seems to occur when you try to return complex objects (e.g. a vector of classes or even the Date class).
    As a workaround you can add this Ejb or module to the iPlanet Classpath (NT via kregedit, Sun via iasenv skript.).
    This helps but i really don't know why.
    It should be fixed in 6.5, maybe. We'll see.
    Regards

  • New @ RMI need help with  java.rmi.UnmarshalException: error unmarshalling

    Hi @ all out there,
    I'm new with Java RMI and have to write a EventSystem for an college project where clients can subscribe to a topic and get notified when someone publishes a message to the subscribed topic.
    At server-side I have a class called EventSystem that provides methods for subscribing and unsubscribing from topics, and also for posting messages (for publishers).
    To subscribe i thought that the client must specify the topic and also itself ( means that a client calls in this way: obj.subscribe("mytopic", this).
    The EventSystem handles a list of all clients, and whenever a new message is posted it goes trough all clients and invokes the handleMessage(String msg) method that all Clients have to provide.
    On my local machine without RMi this concept works just great.
    I now tried to get it working using RMI , but I get the following Exception when starting the client (the server starts fine) :
    Looking up for rmiregistry at 138.232.248.22:1099
    Subscriber exception:
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
            java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
            java.io.InvalidClassException: SubscriberImpl; SubscriberImpl; class invalid for deserialization
            at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:336)
            at sun.rmi.transport.Transport$1.run(Transport.java:159)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
            at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
            at java.lang.Thread.run(Thread.java:619)
            at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
            at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
            at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
            at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
            at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
            at $Proxy0.subscribe(Unknown Source)
            at SubscriberImpl.main(SubscriberImpl.java:48)
    Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
            java.io.InvalidClassException: SubscriberImpl; SubscriberImpl; class invalid for deserialization
            at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:293)
            at sun.rmi.transport.Transport$1.run(Transport.java:159)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
            at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
            at java.lang.Thread.run(Thread.java:619)
    Caused by: java.io.InvalidClassException: SubscriberImpl; SubscriberImpl; class invalid for deserialization
            at java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:713)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1733)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
            at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
            at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:306)
            at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:290)
            ... 9 more
    Caused by: java.io.InvalidClassException: SubscriberImpl; class invalid for deserialization
            at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:587)
            at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
            at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
            ... 13 moreI googled now for 2 hours but can't resolve the problem alone. As far as I can understand I have to serialize Objects that I want to send to the server, right?
    So how can i do this? I've never used serialization till now.
    any ideas how to solve this problem?
    greets from italy and sorry for my very weak english
    bd_italy

    A class has been modified after deployment. Stop the Registry, clean, recompile, and redeploy.

  • Java.rmi.UnmarshalException:error

    hi,
    A rmi program does not work on my pc but it worked on others pc there are three programs ie RMIServer.java which is the server application ,RMIClient.java which is the client application and RMIInterface.java which has two methods which are remote all these programs gets compiled but while running it from the dos prompt it gives these errors:
    RemoteException occured in serverthread;nested exception is:java.rmi.UnmarshalException:error unmarshalling arguments;nested exception is:java.lang.ClassNotFoundException:RMIServer_stub
    what is the problem how does it work on others pc and not on mine how should i handle these exception what are the reasons for its occurrance please help

    It might help to start the rmiregistry from the directory where your class files are stored.
    In this case the rmiregistry adds its working directory to its codebase.
    Just keep in mind that the rmiregistry works in a similar fashion to the javac compiler & needs to be able to find the _Stub & _Skel class files.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Java.rmi.MarshalException when getting a Connection from DataSource

    Hi, folks!
    Whenever I try to get a Connection from a DataSource, I´ve got the following Exception:
    "java.rmi.MarshalException: CORBA MARSHAL 0 Maybe; nested exception is:
         org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: Maybe
    CORBA MARSHAL 0 Maybe; nested exception is:
         org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: Maybe
         at com.sun.corba.se.internal.iiop.ShutdownUtilDelegate.mapSystemException(ShutdownUtilDelegate.java:97)
         at javax.rmi.CORBA.Util.mapSystemException(Util.java:65)
         at weblogic.jdbc.common.internal._RemoteDataSource_Stub.getConnection(Unknown
    Source)
         at com.contratacao.model.dao.DAObasico.getConnection(DAObasico.java:42)..."
    In fact, the client can retrieve the DataSource´s stub, but just can´t get the
    Connection.
    Configuration:
    1. WLS 8.1 sp2, on Windows XP, with SUN JDK 141_05 (embbeded with WLPlatorm installer)
    2. Oracle 9.0.1 on Windows XP, connected through an Oracle JDBC thin driver
    3. java Client on Windows XP/2000, with SUN JDK 142_03 (I´ve got the same results
    with SUN JDK 141_01. I´m also using wlclient.jar.
    Do you have any idea of what is causing this behavior?
    I´d appreciate any help. Thanks in advance,
    Marcos

    "Marcos Medina" <[email protected]> writes:
    This is an FAQ. The RMI JDBC driver is not supported in the thin client.
    andy
    Hi, folks!
    Whenever I try to get a Connection from a DataSource, I´ve got the following Exception:
    "java.rmi.MarshalException: CORBA MARSHAL 0 Maybe; nested exception is:
         org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: Maybe
    CORBA MARSHAL 0 Maybe; nested exception is:
         org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: Maybe
         at com.sun.corba.se.internal.iiop.ShutdownUtilDelegate.mapSystemException(ShutdownUtilDelegate.java:97)
         at javax.rmi.CORBA.Util.mapSystemException(Util.java:65)
         at weblogic.jdbc.common.internal._RemoteDataSource_Stub.getConnection(Unknown
    Source)
         at com.contratacao.model.dao.DAObasico.getConnection(DAObasico.java:42)..."
    In fact, the client can retrieve the DataSource´s stub, but just can´t get the
    Connection.
    Configuration:
    1. WLS 8.1 sp2, on Windows XP, with SUN JDK 141_05 (embbeded with WLPlatorm installer)
    2. Oracle 9.0.1 on Windows XP, connected through an Oracle JDBC thin driver
    3. java Client on Windows XP/2000, with SUN JDK 142_03 (I´ve got the same results
    with SUN JDK 141_01. I´m also using wlclient.jar.
    Do you have any idea of what is causing this behavior?
    I´d appreciate any help. Thanks in advance,
    Marcos

  • BEA-000126 java.rmi.MarshalException: failed to marshal

    We are getting the following error in our clustered QA environment. We run Weblogic 10.3.3.0 on linux.
    ####<Mar 29, 2011 3:59:54 PM CDT> <Error> <Cluster> <app2.qa.server.com> <qa_app2j> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1301432394933> <BEA-000126> <All session objects should be serializable to replicate. Check the objects in your session. Failed to replicate non-serializable object.
    java.rmi.MarshalException: failed to marshal update(Lweblogic.cluster.replication.ROID;ILjava.io.Serializable;Ljava.lang.Object;); nested exception is:
    java.io.NotSerializableException: com.tjf.admin.virtualFair.Job$1
    at weblogic.rjvm.BasicOutboundRequest.marshalArgs(BasicOutboundRequest.java:92)
    at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:221)
    at weblogic.cluster.replication.ReplicationManager_1033_WLStub.update(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor15419.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at weblogic.cluster.replication.SecureReplicationInvocationHandler$ReplicationServicesInvocationAction.run(SecureReplicationInvocationHandler.java:184)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.cluster.replication.SecureReplicationInvocationHandler.invoke(SecureReplicationInvocationHandler.java:154)
    at $Proxy98.update(Unknown Source)
    at weblogic.cluster.replication.ReplicationManager.updateSecondary(ReplicationManager.java:535)
    at weblogic.servlet.internal.session.ReplicatedSessionData.syncSession(ReplicatedSessionData.java:594)
    at weblogic.servlet.internal.session.ReplicatedSessionContext.sync(ReplicatedSessionContext.java:85)
    at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(ServletRequestImpl.java:2810)
    at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(ServletRequestImpl.java:2785)
    at weblogic.servlet.internal.ServletResponseImpl$1.run(ServletResponseImpl.java:1480)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:1474)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1455)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Here is the java file that is causing this:
    package com.tjf.admin.virtualFair;
    import com.tjf.TargetedJobFairsConstants;
    import com.tjf.util.TargetedJobFairsToolBox;
    import org.apache.log4j.Logger;
    import java.io.Serializable;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.Comparator;
    import java.util.TreeMap;
    public class Job implements Serializable {
         protected int id;
         protected String name;
         protected String description;
         protected int companyId;
         protected String hash;
         private static Logger logger = initializeLogger();
         protected static Logger initializeLogger() {
              Logger logger = Logger.getLogger(TargetedJobFairsConstants.TJF_LOG4J_NAME);
              logger.info("logger initialized!");
              return logger;
         public Job(String name, String description, int companyId) {
              this.name = name;
              this.description = description;
              this.companyId = companyId;
         public Job(int id, String name, String description, int companyId) {
              this.id = id;
              this.name = name;
              this.description = description;
              this.companyId = companyId;
         public Job(String name, String description) {
              this.name = name;
              this.description = description;
              this.companyId = companyId;
         public String getHash() {
              if (id != -1 && name != null && !name.equals("")) {
                   return TargetedJobFairsToolBox.createHash(name, "" + id);
              } else {
                   return null;
         public int getCompanyId() {
              return companyId;
         public void setCompanyId(int companyId) {
              this.companyId = companyId;
         public int getId() {
              return id;
         public void setId(int id) {
              this.id = id;
         public String getName() {
              return name;
         public void setName(String name) {
              this.name = name;
         public String getDescription() {
              return description;
         public void setDescription(String description) {
              this.description = description;
         public static boolean validateName(String name, StringBuffer message) {
              if (name != null && !name.trim().equals("")) {
                   // check for duplicated Virtual Fair Company Name
                   return true;
              } else {
                   if (message.length() > 0) {
                        message.append(", Name ");
                   } else {
                        message.append(" Name ");
                   return false;
         public static boolean validateDescription(String description, StringBuffer message) {
              if (description != null && !description.trim().equals("")) {
                   return true;
              } else {
                   if (message.length() > 0) {
                        message.append(", Description ");
                   } else {
                        message.append(" Description ");
                   return false;
         public static boolean validateCompanyIDString(String companyID, StringBuffer message) {
              if (companyID != null && !companyID.trim().equals("")) {
                   return true;
              } else {
                   if (message.length() > 0) {
                        message.append(", unknown virtual fair error(32) ");
                   } else {
                        message.append(" unknown virtual fair error(32) ");
                   return false;
         protected boolean insertJob(Connection tjfConn, StringBuffer message) {
              PreparedStatement insertJobStmt = null;
              String insertJobSQL = null;
              try {
                   insertJobSQL = "insert into VIRTUAL_FAIR_JOB ( NAME, DESCRIPTION, COMPANY_ID ) " +
                             "values (?, ?, ?) ";
                   insertJobStmt = tjfConn.prepareStatement(insertJobSQL);
                   insertJobStmt.setString(1, this.name);
                   insertJobStmt.setString(2, this.description);
                   insertJobStmt.setInt(3, this.companyId);
                   insertJobStmt.executeUpdate();
                   message.append(" Job \"" + this.name + "\" was successfully created.");
                   return true;
              } catch (Exception x) {
                   logger.error(x, x);
                   if (message.length() > 0) {
                        message.append(", unknown virtual fair error(33) ");
                   } else {
                        message.append(" unknown virtual fair error(33) ");
                   return false;
         protected boolean updateJob(Connection tjfConn, StringBuffer message) {
              PreparedStatement insertJobStmt = null;
              String insertJobSQL = null;
              try {
                   insertJobSQL = "update VIRTUAL_FAIR_JOB set NAME = ?, DESCRIPTION = ? where" +
                             " COMPANY_ID = ? and ID = ?";
                   insertJobStmt = tjfConn.prepareStatement(insertJobSQL);
                   insertJobStmt.setString(1, this.name);
                   insertJobStmt.setString(2, this.description);
                   insertJobStmt.setInt(3, this.companyId);
                   insertJobStmt.setInt(4, this.id);
                   insertJobStmt.executeUpdate();
                   message.append(" Job \"" + this.name + "\" was successfully updated.");
                   return true;
              } catch (Exception x) {
                   logger.error(x, x);
                   if (message.length() > 0) {
                        message.append(", unknown virtual fair error(34) ");
                   } else {
                        message.append(" unknown virtual fair error(34) ");
                   return false;
         public static boolean deleteJobByCompanyID(Connection tjfConn, int companyID, StringBuffer message) {
              PreparedStatement deleteJobStmt = null;
              String deleteJobSQL = null;
              try {
                   deleteJobSQL = "delete from VIRTUAL_FAIR_JOB where " +
                             " COMPANY_ID = ? ";
                   deleteJobStmt = tjfConn.prepareStatement(deleteJobSQL);
                   deleteJobStmt.setInt(1, companyID);
                   deleteJobStmt.executeUpdate();
                   message.append(" Jobs were successfully deleted.");
                   return true;
              } catch (Exception x) {
                   logger.error(x, x);
                   if (message.length() > 0) {
                        message.append(", unknown virtual fair error(35) ");
                   } else {
                        message.append(" unknown virtual fair error(35) ");
                   return false;
         public static boolean deleteJob(Connection tjfConn, int jobID, int companyID, StringBuffer message) {
              PreparedStatement deleteJobStmt = null;
              String deleteJobSQL = null;
              try {
                   deleteJobSQL = "delete from VIRTUAL_FAIR_JOB where " +
                             " COMPANY_ID = ? and ID = ? ";
                   deleteJobStmt = tjfConn.prepareStatement(deleteJobSQL);
                   deleteJobStmt.setInt(1, companyID);
                   deleteJobStmt.setInt(2, jobID);
                   deleteJobStmt.executeUpdate();
                   message.append(" Job was successfully deleted.");
                   return true;
              } catch (Exception x) {
                   logger.error(x, x);
                   if (message.length() > 0) {
                        message.append(", unknown virtual fair error(36) ");
                   } else {
                        message.append(" unknown virtual fair error(36) ");
                   return false;
         public static TreeMap<Job, Integer> getJobListforCompany(Connection tjfConn, int companyID, StringBuffer message) {
              TreeMap<Job, Integer> jobsList = new TreeMap<Job, Integer>(new Comparator() {
                   public int compare(Object job, Object anotherJob) {
                        String name1 = ((Job) job).getName();
                        String name2 = ((Job) anotherJob).getName();
                        return name1.toLowerCase().compareTo(name2.toLowerCase());
              PreparedStatement getJobListStmt = null;
              String getJobListSQL = null;
              ResultSet getJobListRset = null;
              try {
                   getJobListSQL = "select ID, NAME, DESCRIPTION, COMPANY_ID from VIRTUAL_FAIR_JOB where COMPANY_ID = ?";
                   getJobListStmt = tjfConn.prepareStatement(getJobListSQL);
                   getJobListStmt.setInt(1, companyID);
                   getJobListRset = getJobListStmt.executeQuery();
                   while (getJobListRset.next()) {
                        Job holdJob = new Job(getJobListRset.getInt(1),
                                  getJobListRset.getString(2),
                                  getJobListRset.getString(3),
                                  getJobListRset.getInt(4));
                        jobsList.put(holdJob, holdJob.id);
                   return jobsList;
              } catch (Exception x) {
                   logger.error(x, x);
                   if (message.length() > 0) {
                        message.append(", unknown virtual fair error(37) ");
                   } else {
                        message.append(" unknown virtual fair error(37) ");
                   return null;
         public static Job getJobByID(Connection tjfConn, int jobID, StringBuffer message) {
              PreparedStatement getJobListStmt = null;
              String getJobListSQL = null;
              ResultSet getJobListRset = null;
              try {
                   getJobListSQL = "select ID, NAME, DESCRIPTION, COMPANY_ID from VIRTUAL_FAIR_JOB where ID = ?";
                   getJobListStmt = tjfConn.prepareStatement(getJobListSQL);
                   getJobListStmt.setInt(1, jobID);
                   getJobListRset = getJobListStmt.executeQuery();
                   Job holdJob = null;
                   if (getJobListRset.next()) {
                        holdJob = new Job(getJobListRset.getInt(1),
                                  getJobListRset.getString(2),
                                  getJobListRset.getString(3),
                                  getJobListRset.getInt(4));
                   return holdJob;
              } catch (Exception x) {
                   logger.error(x, x);
                   if (message.length() > 0) {
                        message.append(", unknown virtual fair error(38) ");
                   } else {
                        message.append(" unknown virtual fair error(38) ");
                   return null;
    Any suggestions on what might cause this?
    Thanks,
    Tom

    Hi Thenrik,
    This is right but Serialization does not concern about methods. and it is only about Instance variables.
    public static TreeMap<Job, Integer> getJobListforCompany(Connection tjfConn, int companyID, StringBuffer message) {
               TreeMap<Job, Integer> jobsList = new TreeMap<Job, Integer>(new Comparator() {
                    public int compare(Object job, Object anotherJob) {
                         String name1 = ((Job) job).getName();
                         String name2 = ((Job) anotherJob).getName();
                         return name1.toLowerCase().compareTo(name2.toLowerCase());
               PreparedStatement getJobListStmt = null;
               String getJobListSQL = null;
               ResultSet getJobListRset = null;
               try {
                    getJobListSQL = "select ID, NAME, DESCRIPTION, COMPANY_ID from VIRTUAL_FAIR_JOB where COMPANY_ID = ?";
                    getJobListStmt = tjfConn.prepareStatement(getJobListSQL);
                    getJobListStmt.setInt(1, companyID);
                    getJobListRset = getJobListStmt.executeQuery();
                    while (getJobListRset.next()) {
                         Job holdJob = new Job(getJobListRset.getInt(1),
                                   getJobListRset.getString(2),
                                   getJobListRset.getString(3),
                                   getJobListRset.getInt(4));
                         jobsList.put(holdJob, holdJob.id);
                    return jobsList;
               } catch (Exception x) {
                    logger.error(x, x);
                    if (message.length() > 0) {
                         message.append(", unknown virtual fair error(37) ");
                    } else {
                         message.append(" unknown virtual fair error(37) ");
                    return null;
    So please tell how that inner class will effect the serialization process of the instance of this calss?
    thanks in advance.

  • WS - "java.rmi.MarshalException: (1)Missing end tag for Body or Envelope"

    HI All,
    I'm new of this forum but I really hope you could help me solving the problem I have to connect Web Services and midlets.
    Somehow my configuration works with some services I've found online but when I invoke very simple services deployed on my server(s) I always have "java.rmi.MarshalException: (1)Missing end tag for Body or Envelope" exception"
    Let me add some more information to the problem:
    System Configuration:
    - JBoss (but I also tried axis) - standard installation (http/1.1)
    - WTK 2.5 (but I also tried 2.2) - standard installation
    - I tried "trusted" and "untrusted" security configuration of the servlet
    - Netbeans IDE 5.0 (to create both Midlets and WS)
    - WS uses document/literal as expected by JSR 172
    The midlet is created with no problems but at the time of invocation the server throws the above exception (which is part of rmi. remoteException)
    By monitoring the network both at client and server side I noticed that the information received is chuncked after 768 bytes. However, If the (soap) reponse is less than such value, I still have the error.
    Using Http/1.1. at the mobile side, the service does not return me anything (0kb) while if I set the mobile device to http/1.0, I get the above error.
    I really have to make the midlet running so any type of help will be really appreciated!!
    Thanks in advance

    Hi all,
    as many developers I have encountered the famous "java.rmi.MarshallException:(1)Missing end tag for Body or Envelope" during the development of my WS app for J2ME (JSR 172).
    It is correct that is the empty tag <soapenv:Header /> causing this error.
    To fix this error, it is necessary to stop the server to generate this empty header in the response stream.
    I have fixed this error for Axis2: unfortunaly it is necessary to modify a class in Axiom library. This library is used in Axis2 to produce the SOAP response, you can download the source code at http://ws.apache.org/commons/axiom/source-repository.html.
    Here the class to modify:
    axiom\modules\axiom-impl\src\main\java\org\apache\axiom\soap\impl\llom\soap11\SOAP11Factory.java
    by commenting the line 273 in the method called getDefaultEnvelope() to prevent the empty header insertion in SOAP response:
    public SOAPEnvelope getDefaultEnvelope() throws SOAPProcessingException {
            OMNamespace ns =
                    new OMNamespaceImpl(
                            SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI,
                            SOAP11Constants.SOAP_DEFAULT_NAMESPACE_PREFIX);
            SOAPEnvelopeImpl env = new SOAPEnvelopeImpl(ns, this);
            //createSOAPHeader(env); the line to be commented
            createSOAPBody(env);
            return env;
        }Finally you have to recompile Axiom using Maven to obtain the fixed package axiom-impl.jar and to replace this package on the lib repository of your Axis2 server.
    A little tricky to fix this bug but now my app runs perfectly ;)
    Enjoy!
    Romain Pellerin
    http://www.gasp-mobilegaming.org

Maybe you are looking for

  • Windows 64bit OS and drivers - Let's work together

    I know a few guys on here, like me, are now starting to experiment with XP 64-bit and/or Windows 2003 Server 64-bit. I've been hunting on the web for sites with info on the problems and fixes associated with these OSes, lists of and links to availabl

  • Segunda via de nota fiscal- copy of receipt

    Good morning! I`d like to receive a copy from a purchase that i made last year in may from a store in L.A . I`ve bought a notebook Dell inspiron 14 7000 series 7437 serial number (removed per forum guidelines)  and i lost the receipt. is that possibl

  • AirPort no longer connects to internet but local networking is fine.

    I have an Airport Extreme router version 7.6.3. Recently the router has been dropping connections with my cable modem.  I have had to reboot the modem and the router to reconnect.  It is no longer connecting to the internet at all.  All of my wireles

  • Bluetooth stopped working in my car with iOS 8.2 upgrade

    I have a 2013 Prius C. Bluetooth worked great until I updated my iPhone 6 Plus to 8.2 yesterday. It still works with calling, but no longer works for playing music, podcasts, etc. Anyone else come across this problem. Any solution out there? I alread

  • Field sizes

    Hi, new SAP customer, new on here, so forgive me if this isn't the right place to ask this question... Are name & address fields on vendor master records really fixed at quite short lengths, and the way this is handled is to chop data up across, for