EmptyStackException in RMI call

Hi group -
We are running the following scenario:
Weblogic <-- WL RMI --> JVM1 <-- WL RMI --> JVM2
I am able to connect via RMI from a client app directly to JVM2 and execute
an RMI call. When I use an EJB in Weblogic to call JVM1, which calls JVM2,
I get the following exception in JVM1. Has anyone seen this before? Please
let me know if this does not make sense.
TIA
Peter
java.util.EmptyStackException:
Start server side stack trace:
java.util.EmptyStackException
     at weblogic.utils.collections.Stack.pop(Stack.java:72)
     at weblogic.rjvm.InboundMsgAbbrev.getAbbrev(InboundMsgAbbrev.java:85)
     at
weblogic.rjvm.MsgAbbrevInputStream.readImmutable(MsgAbbrevInputStream.java:
174)
     at
weblogic.rjvm.MsgAbbrevInputStream.getMethodDescriptor(MsgAbbrevInputStream
.java:262)
     at
weblogic.rmi.internal.BasicServerRef.dispatch(BasicServerRef.java:140)
     at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:186)
     at weblogic.rjvm.RJVMImpl.dispatchRequest(RJVMImpl.java:624)
     at weblogic.rjvm.RJVMImpl.dispatch(RJVMImpl.java:581)
     at
weblogic.rjvm.ConnectionManagerClient.handleRJVM(ConnectionManagerClient.ja
va:50)
     at
weblogic.rjvm.ConnectionManager.dispatch(ConnectionManager.java:639)
     at
weblogic.rjvm.t3.T3JVMConnection.dispatch(T3JVMConnection.java:454)
     at
weblogic.socket.JavaSocketMuxer.processSockets2(JavaSocketMuxer.java:311)
     at
weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java:225)
     at
weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:24)
     at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
     at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
Start server side stack trace:
java.util.EmptyStackException
     at weblogic.utils.collections.Stack.pop(Stack.java:72)
     at weblogic.rjvm.InboundMsgAbbrev.getAbbrev(InboundMsgAbbrev.java:85)
     at
weblogic.rjvm.MsgAbbrevInputStream.readImmutable(MsgAbbrevInputStream.java:
174)
     at
weblogic.rjvm.MsgAbbrevInputStream.getMethodDescriptor(MsgAbbrevInputStream
.java:262)
     at
weblogic.rmi.internal.BasicServerRef.dispatch(BasicServerRef.java:140)
     at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:186)
     at weblogic.rjvm.RJVMImpl.dispatchRequest(RJVMImpl.java:624)
     at weblogic.rjvm.RJVMImpl.dispatch(RJVMImpl.java:581)
     at
weblogic.rjvm.ConnectionManagerClient.handleRJVM(ConnectionManagerClient.ja
va:50)
     at
weblogic.rjvm.ConnectionManager.dispatch(ConnectionManager.java:639)
     at
weblogic.rjvm.t3.T3JVMConnection.dispatch(T3JVMConnection.java:454)
     at
weblogic.socket.JavaSocketMuxer.processSockets2(JavaSocketMuxer.java:311)
     at
weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java:225)
     at
weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:24)
     at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
     at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace

Anyone? Should I file a support case?
Peter
Peter Mularien <[email protected]> wrote in
news:[email protected]:
Hi group -
We are running the following scenario:

Similar Messages

  • Not able to call BPEL web service using RMI call from different machine

    Hi,
    1. I have created a smiple Helloworld asynchoronous BPEL process
    2. I am able to call that BPEL process using java program (RMI call) which I have written in JDeveloper 10.1.3.3 and the java program is running in the embeded OCJ4 instance of JDeveloper sucessfully.
    3. Now I am trying to run the same Java program in my unix machine where oracle application is installed.
    4. I have set all the CLASSPATH for required jars which I have used in JDeveloper and also kept the jar file in Unix machine.
    5. The java codes are complied successfully.
    6. But when I am trying to run it , getting the following exception:
    bash-3.00$ java HelloworldAsyn
    name is Debkanta
    property file data are: {java.naming.provider.url=opmn:ormi://172.18.19.169:6003:home/orabpel, java.naming.factory.initial=com.evermind.server.rmi.RMIInitialContextFactory, orabpel.platform=ias_10g, java.naming.security.principal=oc4jadmin, java.naming.security.credentials=welcome1}
    hello3
    java.lang.Exception: Failed to create "ejb/collaxa/system/DeliveryBean" bean; exception reported is: "javax.naming.NameNotFoundException: ejb/collaxa/system/DeliveryBean not found
    at com.evermind.server.rmi.RMIClientContext.lookup(RMIClientContext.java:52)
    at javax.naming.InitialContext.lookup(InitialContext.java:351)
    at com.oracle.bpel.client.util.BeanRegistry.lookupDeliveryBean(BeanRegistry.java:279)
    at com.oracle.bpel.client.delivery.DeliveryService.getDeliveryBean(DeliveryService.java:250)
    at com.oracle.bpel.client.delivery.DeliveryService.post(DeliveryService.java:174)
    at com.oracle.bpel.client.delivery.DeliveryService.post(DeliveryService.java:149)
    at HelloworldAsyn.main(HelloworldAsyn.java:64)
    at com.oracle.bpel.client.util.BeanRegistry.lookupDeliveryBean(BeanRegistry.java:293)
    at com.oracle.bpel.client.delivery.DeliveryService.getDeliveryBean(DeliveryService.java:250)
    at com.oracle.bpel.client.delivery.DeliveryService.post(DeliveryService.java:174)
    at com.oracle.bpel.client.delivery.DeliveryService.post(DeliveryService.java:149)
    at HelloworldAsyn.main(HelloworldAsyn.java:64)
    bash-3.00$
    I need to solve it urgently. Can anyone please help me.
    Is it relaed to some user access issue in unix?
    Thanks & Regards
    Deb
    Message was edited by:
    user587916

    actually , I have laready given print stataement for the data in the context property file that you can see in the output. Today I am also able to call the bpel process using the same java program from my DOS command promt(cmd). Don't understand why the problem is occuring in unix.
    please help.

  • RMI call back - How to refer to the client project from the server project?

    Hi, I am working on an RMI assignment which basically needs me to use the RMI call back for the server to notify the clients.
    I have 2 projects , one for the client and another for the server.
    In the client project, I have a client interface and the main client class implements this interface.
    In the server project, I have a server interface and a class that implements this interface.
    I can use the server interface in the client project's code by adding the server project in the path of the client project. it lets me use the server interface in the code if I put "import.." statement.
    But the issue is I can not do the same to access the client interface from within the server project's code. Since that will be a circular reference, the compiler does not let me use the client interface from within the server's code. This is putting me in a great difficulty and I am stuck here. What should I do so that I can use the client interface and the compiler won't complain?
    Thanks for any help..
    Regards.. js

    Let me explain what I tried: I manually generated stub class of the client using the Eclipse IDE as mentioned in my previous message. The StockMSClient_Stub.class got created in my client project.
    The common project has the 2 interfaces - one from the client and one from the server.
    I have added reference to the common project from the client and server projects to use the interfaces.
    With the above mentioned in place, when I run the server project, the registry binding of the server objects is very fine. But I am getting error in the applet at the line where I am passing the client object to the method provided by the server interface. The following is the code snippet in the applet where I am getting the error.
    specifically the line: String response = objs.login(userId, password, smsClient);     ====================
    public void login() {
                Registry reg = null;
                String userId = "test";
                String password = "test";
                this.smsClient = new StockMSClient();
                try {
         reg = LocateRegistry.getRegistry(rmiHost,rmiPort);
                          UserInterface obj = (UserInterface) reg.lookup(rmiStrings
                                                                                                                        [1]);
         User u = obj.find(userId);
         if (u == null) {
              System.out.println("This user is not valid");
         } else {
                         UnicastRemoteObject.exportObject(smsClient);
         reg = LocateRegistry.getRegistry(rmiHost, rmiPort);
         LoginLogoutInterface objs = (LoginLogoutInterface) reg
                                   .lookup(rmiStrings[0]);
                        //getting error at the following line.
                        String response = objs.login(userId, password, smsClient);     
                         System.out.println("response :" + response);
               } catch (AccessException ae) {
                       System.out.println(ae);
               } catch (NotBoundException nbe) {
                      System.out.println(nbe);
               } catch (RemoteException re) {
                      System.out.println(re);
    } //end login()====================
    Error is:
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
         java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
         java.lang.ClassNotFoundException: sms.rmi.graphics.StockMSClient_Stub (no security manager: RMI class loader disabled)================
    I don't know why this is happening..Please help.
    thanks & regards, js
    Message was edited by:
    jsitaraman

  • RMI call to java in Oracle 8i

    We need to access stored Java classes inside the Oracle 8i (8.1.7) database using RMI from a remote machine. Is this possible? How?
    Basically we have stored PL/SQL procedures/packages we want to create interfaces for (Using JPiblisher) and access them remotely via RMI.

    We need to access stored PL/SQL packages from outside the database via RMI. That's the requirement. First we need to wrap the PL/SQL packages with Java classes (JPublisher can help us here). Then there are, in my opinion, three possible ways to achieve this:
    - direct Java RMI calls
    - CORBA
    - EJB
    Because I need to evaluate all ways, I am just trying the 1st ( I know, not scalable) way - direct RMI calls. I can do a direct RMI call from the database to an outside server. That works fine. My problem is the other way round, to call an object inside 8i. I understand that using CORBA or EJB the Oracle ORB is used (handled by the TNS Listener). Using a direct RMI call I would need to run the RMIREGISTRY program (inside or outside 8i?)...But I have no clue, how this could work.

  • Connection timed out when making RMI call

    Hello,
    I am using a combination of Spring Remoting and Scheduling with Quartz Timer. Both are using RMI as a communication stack. The RMI server is located in sydney while the client is located in the US. This incurs large network lag which causes my RMI method calls to timeout. I am able to do a lookup on the RMI object and receive a stub reference to it with no problem but as soon as I try to invoke a remote method on that stub it eventually times out.
    Thinking it was truly a timeout issue I implemented a Custom socket factory for RMI using RMISocketFactory.setSocketFactory(new TimeoutSocketFactory(120000));Here is the custom TimeoutSocketFactory:
    public class TimeoutSocketFactory extends RMISocketFactory {
            private int timeout;
            private static final Logger log = Logger.getLogger(TimeoutSocketFactory.class);
            public TimeoutSocketFactory(int timeout) {
                this.timeout = timeout;
            public Socket createSocket(String host, int port) throws IOException {
                log.debug("Creating timeout socket with value - " + timeout);
                Socket ret = getDefaultSocketFactory().createSocket(host, port);
                ret.setSoTimeout(timeout);
                return ret;
            public ServerSocket createServerSocket(int port) throws IOException {
                ServerSocket ss = getDefaultSocketFactory().createServerSocket(port);
                ss.setSoTimeout(timeout);
                return ss;
    }I implemented the custom socket factory both on the RMI server and on the RMI client. This had no effect on the time outs that occured when trying to make an RMI call to the server even though the sockets were being built by this custom class (have logging in place).
    Is there something else I need to do to increase the timeout period? And how do I know if it's a server or a client issue?
    Thanks,
    Anthony Bargnesi
    [Exception StackTrace]
    java.rmi.ConnectException: Connection refused to host: 172.16.10.97; nested exception is:
         java.net.ConnectException: Connection timed out: connect
         at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:574)
         at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)
         at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
         at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:94)
         at org.springframework.remoting.rmi.RmiInvocationWrapper_Stub.invoke(Unknown Source)
         at com.aquent.rmi.test.RMIClient.connectService(RMIClient.java:46)
         at com.aquent.rmi.test.RMIClient.main(RMIClient.java:81)
    Caused by: java.net.ConnectException: Connection timed out: connect
         at java.net.PlainSocketImpl.socketConnect(Native Method)
         at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
         at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
         at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
         at java.net.Socket.connect(Socket.java:507)
         at java.net.Socket.connect(Socket.java:457)
         at java.net.Socket.<init>(Socket.java:365)
         at java.net.Socket.<init>(Socket.java:178)
         at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
         at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
         at com.aquent.rmi.test.TimeoutFactory.createSocket(TimeoutFactory.java:21)
         at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:569)

    Well this is a connect timeout, not a read timeout, so it has nothing to do with your socket factory, and your socket factory won't help. It's a connectivity issue. Can you ping that host from the client? Can you telnet to port 7?
    In fact no socket factory will help because there is no way of increasing the connect timeout beyond the default: you can only reduce it.

  • RMI Call  not working

    the application we are developing first reads from a com port and then sends the message read to a rmi server.the server has to communicate with a client.the basic rmi calls were working initially.once the code for a listener for the port was added,the remote method cannot be invoked.what we're actually doing is this-in the listener,we invoke an instance of the server and then the server makes the rmi call.at this point,it gets stuck without any errors.we find that client has been registered with the server,there's no problem with that.we're completely at see as to where the error lies and dont know the right approach to solve the problem.any help will be most welcome.

    Perhaps you should start here:
    http://www.angelfire.com/dc/shish/answers.html

  • Trying to interrupt an RMI call

    We're trying to interrupt a call to a Weblogic RMI stub via
    Thread.interrupt(). Doesn't seem to work. Can someone confirm that
    this will never work, or might we be doing something wrong?
    Why is this posted to the performance newsgroup? We're trying to build
    a web service with a guaranteed response time. The servlet makes a
    backend call via RMI. Before we make the RMI call, the servlet thread
    requests another thread to interrupt it if the call takes too long. If
    we can't interrupt the calling thread, there are only two options I can
    think of. 1) Have the servlet thread pass the request to another thread
    that can block. The servlet thread then waits on a queue for a
    response, and can be interrupted. 2) Don't use weblogic RMI, and build
    our own transport. Yuck.
    Any ideas?
    -Tim

    Tim Harrison wrote:
    Out of curiousity, do you guarantee end to end response time or just the
    time that the request will be processed on your site.Hi Rob. End-to-end, of course! We're using a Reuters network that
    bypasses the internet. :)
    Ok, I'm just kidding. We'll just start with the guaranteed process
    time.
    That's what I thought :>
    >
    I'd be surprised if no one else has run into this issue with RMI. A
    collegue of mine is building a test with Sun RMI to see if that is
    interruptable. It seems that Weblogic might be catching the interrupt
    exception below the stub level. When we interrupt a thread blocked in
    an RMI call, the thread returns normally (after completing), and
    Thread.isInterrupted() is false. I think that means that something in
    the call is reseting the status. A quick glance at the generated stub
    code does not seem to indicate anything, so I'm guessing it's at a lower
    level.
    Well, it depends on what we are doing when you attempt to interrupt our
    thread. Most likely (since it's a stub waiting for a response from the server)
    the RMI thread is blocked in a socket read system call. Depending on the
    operating system and how javasoft implemented it, it may or may not be
    interruptable.
    -- Rob
    Rob Woollen
    Software Engineer
    BEA WebLogic
    [email protected]
    >
    -Tim

  • Is it allowed to make a rmi call from within an ejb??

    Hello,
    Am I allowed to make a rmi call from within an ejb such as:
    String host = "localhost";
    RemoteObject ro = (RemoteObject) Naming.lookup("rmi://"+host+"/MonServeur");
    ro.myMethod();
    package pack;
    import java.rmi.Naming;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    public class MyRemoteObject extends UnicastRemoteObject implements RemoteObject {
        public MyRemoteObject() throws RemoteException {
        public void myMethod() throws RemoteException {
            System.out.println("toto");
        public static void main(String[] args) {
            try {
                RemoteObject ro = new MyRemoteObject();
                Naming.rebind("MonServeur", ro);
            } catch (Exception ex) {
                ex.printStackTrace();
    }Is it allowed by the spec?
    Is it good design?
    Thanks in advance,
    Julien Martin.

    Allowed - yes
    Good design - no, in my opinion.

  • Hang of RMI call when LAN connection removed

    I have a client server application with comms using RMI across a TCP/IP LAN. We are in test at the moment and one of the tests is to ensure that when the LAN connection is removed, the client application handles it correctly.
    We have discovered that if we pull the LAN whilst an RMI call is in progress, the call never returns, even if we subsequently plug the LAN back in. Why should this be? I would have expected a RemoteException as soon as I pull the LAN out. How come the thread gets deadlocked?
    Note that we are running JRE 1.2 on the client (they are soon to be updated but it's 1400 remote, unattended sites so it's an expensive process to update to a recent JRE).
    Thanks
    Mat

    Thanks ejp - couple of dollars coming your way. Be a couple more if you (or anyone else) can help further.
    Firstly, how would I set this property in the code?
    Secondly, would it be set in the client or the factory (yes we do have one)? If it's in the factory, will that help me from the client side (that's where I need it to work). I looked up the responseTimeout property and it looks like this is more for the server to close incoming connections. The problem I have is on the client side - I need the client (i.e. that is making the RMI call via an exported remote object) to be able to kill off a call that has going too long (for instance because it can't detect the closed TCP connection).
    Maybe I've misunderstood the documentation I've found but that's how I read it.
    Thanks again!
    Mat

  • Can EJB Beans explicitly make RMI calls?

    Hi,
    I'm new to EJBs and would like to know if an EJB bean (especially a session bean)
    can explicitly make RMI calls to remote objects that are not EJBs?
    Thanks in advance to your advice.
    cc.

    The best approach here in my mind would be to bind the RMI object to a JNDI name then have your bean lookup the RMI object with JNDI and then make the calls.

  • Can I specify a timeout value for an RMI call?

    Is it possible to specify a timeout value when a client makes a remote
    RMI call to a WL
    EJB? If the server method hangs does the client call hang forever with it?
    - Rick Holland OO/Distributed Systems Consultant
    - ObjectAge Inc.
    - [email protected]
    "Logic is a wreath of pretty flowers, that smell bad"

    That's what I did to try this. weblogic.ejbc knows how to pass -dispatchPolicy to
    the weblogic.rmic, so in the RMI descriptor it creates:
    <method
    name="*"
    dispatch-policy="queueName"
    >
    </method>
    so, maybe there is a command-line option for the timeout as well. Anyway, extracting
    xxxRTD.xml and adding
    <method
    name="*"
    timeout="xxx"
    >
    </method>
    works just fine.
    Rick Holland <[email protected]> wrote:
    So all I have to do is build my EJB jar, extract the *RTD.xml file, hack
    it, stuff it back into the jar and deploy (all within my Ant script).
    Sounds fairly straight forward.
    Thanks again
    [email protected] wrote:
    It gets there from the server. If you look inside ejbc'ed ejb-jar you'll find
    RMI descriptors there (they are named like xxx.RTD.xml)
    Rick Holland <[email protected]> wrote:
    Thank you Dimitri, but I have one more dumb question, since I need these
    timeouts
    on the client side where does an RMI descriptor go? I have never used
    one of these.
    Thanks
    [email protected] wrote:
    AFAIK, you can specify it in the RMI descriptor :
    <rmi Name=".....">
    <cluster
         clusterable="true"
    </cluster>
    <method
         name="methodname"
         timeout="timeoutinmilliseconds"
    </method>
    </rmi>
    And, if there is timeout, method invocation will fail with exception like this:
    weblogic.rmi.extensions.RequestTimeoutException: RJVM response timed out after: '1000' milliseconds.
    at weblogic.rmi.internal.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:85)
    at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:262)
    at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:229)
    at weblogic.rmi.internal.ProxyStub.invoke(ProxyStub.java:35)
    at $Proxy2.testTimeout(Unknown Source)
    Rick Holland <[email protected]> wrote:
    Is it possible to specify a timeout value when a client makes a remote
    RMI call to a WL
    EJB? If the server method hangs does the client call hang forever with it?
    - Rick Holland OO/Distributed Systems Consultant
    - ObjectAge Inc.
    - [email protected]
    "Logic is a wreath of pretty flowers, that smell bad"
    - Rick Holland OO/Distributed Systems Consultant
    - ObjectAge Inc.
    - [email protected]
    "Logic is a wreath of pretty flowers, that smell bad"
    - Rick Holland OO/Distributed Systems Consultant
    - ObjectAge Inc.
    - [email protected]
    "Logic is a wreath of pretty flowers, that smell bad"
    Dimitri

  • Automatic Passing of parameters with every RMI Call

    We need the ability to automatically pass a couple of objects, both Strings in this case, with every RMI call we make from our clients (multiple clients) to the servers (multiple servers). Currently I'm using some code that Rickard �berg wrote a while ago that uses UnicastRef.marshalCustomCallData() and UnicastServerRef.unmarshalCustomCallData() so do this. I extended these 2 classes and rolled my own UnicastRemoteObject. This has worked out great but now I need to also use Custom Socket Factories, to get through the firewalls that our customer has. So I thought I could just extend UnicastRef2 and UnicastServerRef2 but when I do the servers never get
    bound to the RmiRegistry.
    We don't want to explicitly add these arguments to all our remote interfaces because we have a bunch of remote object classes and don't want to rely on the programmer sending the correct values or when writing new remote methods making sure that they these arguments are included.
    We're using 1.4.1, but this also fails with 1.3.1.
    The only thing I see in the logs is:
    Oct 2, 2002 1:53:39 PM sun.rmi.server.UnicastServerRef logCall
    FINER: RMI TCP Connection(1)-216.100.254.188: [216.100.254.188: sun.rmi.registry
    .RegistryImpl[0:0:0, 0]: void rebind(java.lang.String, java.rmi.Remote)]
    Oct 2, 2002 1:53:50 PM sun.rmi.server.UnicastServerRef logCall
    FINER: RMI TCP Connection(2)-216.100.254.188: [216.100.254.188: sun.rmi.registry
    .RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]
    Oct 2, 2002 1:53:50 PM sun.rmi.server.UnicastServerRef logCallException
    FINE: RMI TCP Connection(2)-216.100.254.188: [216.100.254.188] exception:
    java.rmi.NotBoundException: FileManager
    at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:106)
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:342
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:207)
    at sun.rmi.transport.Transport$1.run(Transport.java:148)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
    60)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
    .java:701)
    at java.lang.Thread.run(Thread.java:536)
    So anyone know why this doesn't work when I supply the SocketFactories?
    Is there a better way to accomplish this than extending sun.rmi.server classes (which was really easy)? I can supply the source for my classes if it helps, though my UnicastServerRef2 and UnicastRef2 classes are pretty simple.
    Mark.

    First, did you really bind the servers?
    Second, does it work with the socket factories but without your custom Ref classes? I would suspect the socket factories here. Do they have a reasonable override for the Object.equals() method?
    EJP

  • Making a rmi call over ipv6

    hi,
    i'm making a rmi call to a server on a ipv6 enabled machine.
    when i use the host name, it works fine.
    but when i use the ip address, it throws me a timeout exception
    the url value is
    *java.naming.provider.url=jnp://[fe80::216:72ff:fe3c:21gf]:19014*
    javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out]
    at org.jnp.interfaces.NamingContext.discoverServer(NamingContext.java:1058)
    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1127)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:478)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:471)
    at javax.naming.InitialContext.lookup(InitialContext.java:351)
    at mytest.RMIClient.runBPDocWait(RMIClient.java:117)
    at mytest.RMIClient.main(RMIClient.java:57)
    Caused by: java.net.SocketTimeoutException: Receive timed out
    at java.net.PlainDatagramSocketImpl.receive0(Native Method)
    at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
    at java.net.DatagramSocket.receive(DatagramSocket.java:712)
    at org.jnp.interfaces.NamingContext.discoverServer(NamingContext.java:1038)
    ... 6 more
    but this works fine if i give
    java.naming.provider.url=jnp://hostname:19014
    is there any properties i need to set to make it work.

    is anyone facing such scenario with jboss?

  • RMI calls-urgent

    hi all,
    can an application server invoke the SOA suite using Remote Method Invocation (RMI) calls. if so give me the advantages and disadvantages of it over SOAP/HTTP.
    thanks,
    terry
    Edited by: user11092657 on 29 Apr, 2009 12:26 PM

    Hi,
    Yes you can use RMI to communicate to your soa suite server allthough i could not get it to work from weblogic 10.3, there is a conflict with certain other libraries. From any other 10.1.3 oracle application server there should not be any problem. The biggest advantage of RMI over SOAP is performance. The soap client also generates lots of logging which can not be disabled, ... i already logged a bug on that. The advantage of SOAP over RMI is its underlying HTTP protocol which is, in some cases, the only protocol allowed by network engineers to pass through firewalls.
    Kind Regards,
    Andre

  • RMI call resets Windows error code?

    I'm attempting to retrieve a Windows error code from a remote system, using a simple call to the Windows API function getLastError() which is wrapped inside a JNI function on the remote system. getLastError() returns the last error code set for a particular process/thread.
    The problem is, it appears that simply making the remote function call clears the error value before it can be returned. I can confirm that the error value was set on the remote system by printing the Process/Thread ID and getLastError() value to a console window on the remote system when one of my remote methods is called with out-of-range data. If I attempt to retrieve the error code, the Process/Thread ID match but the error code is always 0. No other methods were called on the remote system in between the initial error-generating method and the method which returns the error code.
    Note that using the same JNI function calls without RMI works fine - I can generate error codes and retrieve them just fine.
    Any ideas? Thanks in advance!

    You're assuming that no other system calls are
    executed between the one that caused the error you are
    interested in and your GetLastError(). RMI executes
    system calls on its own behalf, both to return the
    value from the previous computation that caused the
    error and to dispatch the new call into the method
    that does GetLastError(). This approach is never going
    to work. Why can't you call GetLAstError() straight
    after the error happens, in the same remote method?This is what I suspected is happening, and if true, then I will simply have to rewrite my RMI method calls. Currently, they return -1 on error, and the error number is retrieved with a separate getLastError() call. This is done for legacy reasons (I'm calling C functions which were originally developed without Java/RMI in mind). As suggested, I'll have to call getLastError() immediately after an error occurs, and return the negative value of the error code rather than just -1. I've got about 200 remote methods to modify, so I was trying to avoid this, but hey... it's mostly search/replace.
    Thanks for the help.

Maybe you are looking for

  • Stability of OS

    Eversince I upgraded to Maverick, the number of OS lock-ups and crashes have increased significantly. Before Maverick, it was may be once in several months but now, when there is any serious work to be done, when a few apps are opened (esp. Safari),

  • Safari crushes at download, How can i do?

    Greetings, whenever I try to download anything, Safari immideately crushes.. The report says: Process:         Safari [188] Path:            /Users/USER/Documents/Safari.app/Contents/MacOS/Safari Identifier:      com.apple.Safari Version:         5.1

  • Problem Send Receive SMS in one midlet

    I'm writing one j2me midlet application using WMA library to send and Receive SMS.. Application behavior is : For receiving sms i implemented MessageListner so whenever sms comes, it notify the midlet and in that function i'm creating one thread and

  • Force Quit iWeb now website cannot be found in browser

    I force quit iWeb after it taking 10 minutes to publish a photo page. I was playing around with slide shows and dragged and dropped an event onto the page. The event actually had a video clip along with the other pictures and I have a feeling this la

  • Alter reports field color and date formatting

    Hello, I have a report with an in-line case statement which alters a field color based on the date value. I have the column's format mask set to 'MM/DD/YY'. I've tried several different ways to format the date field using the column attributes as wel