Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6584708

MarshallException thrown when a new instance of javax.swing.TransferHandler is passed to the server

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not an Issue
    • Icon: P4 P4
    • None
    • 6u3
    • client-libs

      OPERATING SYSTEM(S):
      --------------------
      Microsoft Windows XP [Version 5.1.2600]

      FULL JDK VERSION(S):
      -------------------
      java6 version
      -------------
      java version "1.6.0_03-ea"
      Java(TM) SE Runtime Environment (build 1.6.0_03-ea-b01)
      Java HotSpot(TM) Client VM (build 1.6.0_03-ea-b01, mixed mode)

      java5 version
      -------------
      java version "1.5.0_12"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_12-b04)
      Java HotSpot(TM) Client VM (build 1.5.0_12-b04, mixed mode)

      DESCRIPTION:
      ------------
      PROBLEM DESCRIPTION
      Problem:
      For testing interoperibility between SDK 5.0 & SDK 6.0 javax.swing.TransferHandler(null) is sent from a client to the server using RMI-IIOP.This is resulting in MarshalException.

      The serialVersionUID of javax.swing.TranserHandler is different for Java5 and Java6.

      Using Java5 and running the command
      serialver javax.swing.TransferHandler
      gives the result:
      -3647487763055806389L;

      Using Java6 and running the command
      serialver javax.swing.TransferHandler
      gives a different result:
      7915941022583212167L;

      STEPS TO REPRODUCE
      ------------------
      Install latest SDK 6.0 on Windows IA32

      Set PATH variable to point to bin and jre\bin folders

      1. Compile all the testcases below - javac *.java

      2. rmic -iiop HelloImpl

      3. Issue these commands

      start- \jdk5\sdk\jre\bin\tnameserv -ORBInitialPort 9009
      Wait for the tnameserv to start
      start- \jdk5\sdk\jre\bin\java
      -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://127.0.0.1:9009 Server
      Wait for the server to start
      start- \jdk6\sdk\jre\bin\java
      -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://127.0.0.1:9009 Client

      You can see the following Exception:

      Exception in thread "main" java.rmi.MarshalException: CORBA MARSHAL 1398079699 M
      aybe; nested exception is:
              org.omg.CORBA.MARSHAL: ----------BEGIN server-side stack trace----------

      org.omg.CORBA.MARSHAL: vmcid: SUN minor code: 211 completed: Maybe
              at com.sun.corba.se.impl.logging.ORBUtilSystemException.valuehandlerRead
      Exception(ORBUtilSystemException.java:6500)
              at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInput
      Stream_1_0.java:1045)
              at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStre
      am.java:253)
              at _HelloImpl_Tie._invoke(Unknown Source)
              at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispa
      tchToServant(CorbaServerRequestDispatcherImpl.java:637)
              at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispa
      tch(CorbaServerRequestDispatcherImpl.java:189)
              at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest
      Request(CorbaMessageMediatorImpl.java:1680)
              at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest
      (CorbaMessageMediatorImpl.java:1540)
              at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleInput(C
      orbaMessageMediatorImpl.java:922)
              at com.sun.corba.se.impl.protocol.giopmsgheaders.RequestMessage_1_2.call
      back(RequestMessage_1_2.java:181)
              at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest
      (CorbaMessageMediatorImpl.java:694)
              at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.dispatc
      h(SocketOrChannelConnectionImpl.java:451)
              at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.doWork(
      SocketOrChannelConnectionImpl.java:1187)
              at com.sun.corba.se.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.
      run(ThreadPoolImpl.java:417)
      Caused by: java.io.IOException: Mismatched serialization UIDs : Source (Rep. IDR
      MI:javax.swing.TransferHandler:B259346E0B8AAACA:CD6185346879784B) = CD6185346879
      784B whereas Target (Rep. ID RMI:javax.swing.TransferHandler:B259346E0B8AAACA:6D
      DB126B6A03C887) = 6DDB126B6A03C887
              at com.sun.corba.se.impl.util.RepositoryId.useFullValueDescription(Repos
      itoryId.java:577)
              at com.sun.corba.se.impl.io.ValueHandlerImpl.useFullValueDescription(Val
      ueHandlerImpl.java:388)
              at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputSt
      ream.java:397)
              at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHand
      lerImpl.java:327)
              at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.
      java:293)
              at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInput
      Stream_1_0.java:1034)
              ... 12 more

      ----------END server-side stack trace---------- vmcid: SUN minor code: 211 com
      pleted: Maybe
              at com.sun.corba.se.impl.javax.rmi.CORBA.Util.mapSystemException(Util.ja
      va:197)
              at javax.rmi.CORBA.Util.mapSystemException(Util.java:67)
              at _Hello_Stub.sayHello(Unknown Source)
              at Client.main(Client.java:12)
      Caused by: org.omg.CORBA.MARSHAL: ----------BEGIN server-side stack trace-------
      ---
      org.omg.CORBA.MARSHAL: vmcid: SUN minor code: 211 completed: Maybe
              at com.sun.corba.se.impl.logging.ORBUtilSystemException.valuehandlerRead
      Exception(ORBUtilSystemException.java:6500)
              at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInput
      Stream_1_0.java:1045)
              at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStre
      am.java:253)
              at _HelloImpl_Tie._invoke(Unknown Source)
              at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispa
      tchToServant(CorbaServerRequestDispatcherImpl.java:637)
              at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispa
      tch(CorbaServerRequestDispatcherImpl.java:189)
              at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest
      Request(CorbaMessageMediatorImpl.java:1680)
              at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest
      (CorbaMessageMediatorImpl.java:1540)
              at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleInput(C
      orbaMessageMediatorImpl.java:922)
              at com.sun.corba.se.impl.protocol.giopmsgheaders.RequestMessage_1_2.call
      back(RequestMessage_1_2.java:181)
              at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest
      (CorbaMessageMediatorImpl.java:694)
              at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.dispatc
      h(SocketOrChannelConnectionImpl.java:451)
              at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.doWork(
      SocketOrChannelConnectionImpl.java:1187)
              at com.sun.corba.se.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.
      run(ThreadPoolImpl.java:417)
      Caused by: java.io.IOException: Mismatched serialization UIDs : Source (Rep. IDR
      MI:javax.swing.TransferHandler:B259346E0B8AAACA:CD6185346879784B) = CD6185346879
      784B whereas Target (Rep. ID RMI:javax.swing.TransferHandler:B259346E0B8AAACA:6D
      DB126B6A03C887) = 6DDB126B6A03C887
              at com.sun.corba.se.impl.util.RepositoryId.useFullValueDescription(Repos
      itoryId.java:577)
              at com.sun.corba.se.impl.io.ValueHandlerImpl.useFullValueDescription(Val
      ueHandlerImpl.java:388)
              at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputSt
      ream.java:397)
              at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHand
      lerImpl.java:327)
              at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.
      java:293)
              at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInput
      Stream_1_0.java:1034)
              ... 12 more

      ----------END server-side stack trace---------- vmcid: SUN minor code: 211 com
      pleted: Maybe
              at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

              at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
      orAccessorImpl.java:39)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
      onstructorAccessorImpl.java:27)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
              at com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.getSystemEx
      ception(MessageBase.java:902)
              at com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage_1_2.getSys
      temException(ReplyMessage_1_2.java:99)
              at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.getSystemExce
      ptionReply(CorbaMessageMediatorImpl.java:572)
              at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.proce
      ssResponse(CorbaClientRequestDispatcherImpl.java:430)
              at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marsh
      alingComplete(CorbaClientRequestDispatcherImpl.java:326)
              at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaCl
      ientDelegateImpl.java:129)
              at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)
              ... 2 more


      TEST CASES:
      -----------

      Client.java
      -----------
      import java.rmi.*;
      import javax.rmi.*;
      import javax.naming.*;
      import java.rmi.server.*;
      import java.io.*;
      import java.util.*;
      public class Client{
      public static void main(String[] args) throws Exception{
      Context ic = new InitialContext();
      Object ref = ic.lookup("HELLO");
      Hello hello = (Hello)PortableRemoteObject.narrow(ref, Hello.class);
      hello.sayHello(new javax.swing.TransferHandler(null));
      }


      }

      Hello.java
      ----------
      import java.rmi.*;
      public interface Hello extends Remote{
      public javax.swing.TransferHandler sayHello(javax.swing.TransferHandler data) throws RemoteException;
      }

      HelloImpl.java
      --------------
      import java.rmi.*;
      import javax.rmi.*;
      import java.rmi.server.*;
      import java.util.*;
      import java.math.*;
      public class HelloImpl extends PortableRemoteObject implements Hello{
      public HelloImpl() throws RemoteException{
      super();
      }
      public javax.swing.TransferHandler sayHello(javax.swing.TransferHandler data) throws RemoteException{
      return data;
      }
      }

      Server.java
      -----------
      import java.rmi.*;
      import javax.rmi.*;
      import javax.naming.*;
      import java.rmi.server.*;
      public class Server{
      public static void main(String[] args ) throws Exception{
      Hello hello = new HelloImpl();
      Context ic = new InitialContext();
      ic.rebind("HELLO",hello);
      System.out.println("SERVER STARTED");
      }
      }

            Unassigned Unassigned
            elarsen Erik Larsen (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: