Announcement Announcement Module
No announcement yet.
RmiInvocationWrapper_Stub Issue. Only on Some Servers! Page Title Module
Move Remove Collapse
Conversation Detail Module
  • Filter
  • Time
  • Show
Clear All
new posts

  • RmiInvocationWrapper_Stub Issue. Only on Some Servers!

    Our application is Tomcat deployed, and we are using Spring 3.1.0. RMI communication works great when the server and client are both stand alone programs. When the server is deployed on Tomcat, I face issues.

    Hello. We're facing a rather frustrating problem, we've have tried several things and have finally succeeded, but without an understanding of WHY.

    We have an interface that has been exposed via the RMIServiceExporter. On our development network, the service can be accessed without any issues, irrespective of where (same host, or different host) the client is located.

    On our staging network however, when the client is located on a different host, I first get the following exception-
    java.lang.ClassNotFoundException: org.springframework.remoting.rmi.RmiInvocationWrapper_Stub (no security manager: RMI class loader disabled)
    I was able to get around the issue above by specifying a security policy, and the issue was resolved in all but one instance where the server is running. I now got the following error on the client-
    java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
            java.lang.ClassNotFoundException: org.springframework.remoting.rmi.RmiInvocationWrapper_Stub
    I was able to resolve this too by including spring-remoting.jar in the classpath of the client program.

    What I do not understand is why spring-remoting.jar is required in the client classpath for only one of the server instances.

    Also, the client and server work great when the app is not deployed on Tomcat. When I run the server as a standalone program, there is absolutely no issue on any of the servers.

    I first doubted that it may have something to do with the network configuration, since the only port open in the staging environment in addition to the standard HTTP, DB, etc. ports is 1099 (which was also used for the servicePort). I verified that 1099 was open by using telnet from the host where the client was running. Anything else I should have done?

    For the sake of identifying the issue, we have now opened up all ports, but I am still required to include spring-remoting.jar in the client classpath.

    What is different when the application is deployed on Tomcat?
    How do i find what is different on the staging network?

    Anything I'm missing here? I'd be grateful for some advice from those who may know what is going on. Thank you!