NullPointerException on the RMI server side.

java.lang.NullPointerException

at com.sun.net.ssl.internal.ssl.SSLSessionContextImpl.a(DashoA12275)

at com.sun.net.ssl.internal.ssl.SSLSessionImpl.invalidate(DashoA12275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)

at com.sun.net.ssl.internal.ssl.AppInputStream.read(DashoA12275)

at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)

at java.io.BufferedInputStream.read(BufferedInputStream.java:201)

at java.io.FilterInputStream.read(FilterInputStream.java:66)

at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:442)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)

at java.lang.Thread.run(Thread.java:534)

[890 byte] By [chendcha] at [2007-10-3 4:01:37]
# 1

My situation is as below:

on the RMI client side, there is a callback class exported in its constructor and then as a argument invoke the remote method of the server side. The remote class is retrivied from the registry.

CallBack cb = new CallBack();

MyRemoteObj ojb = Registry.lookup("MyRemoteObj");

obj. action('' test", cb);

on the RMI server side:

1. create a registry using LocateRegistry.createRegistry(port , MyRMISSLClientSocketFactory,MyRMISSLServerSocketFactory)

2.bind my remote object in the registry.

When I run my client, and find clent successfully done. But the server raised above problem.

That exeception from a separate thread that I can't catch it.

Do anyone know why? Thanks in advance.

chendcha at 2007-7-14 22:00:52 > top of Java-index,Core,Core APIs...
# 2
(a) are you creating the client-side Registry with an SSL client socket factory?(b) your client is an SSL server so it needs a keystore set just like your server does.
ejpa at 2007-7-14 22:00:52 > top of Java-index,Core,Core APIs...
# 3

Thanks ejp,

The Constructor of the class CallBack is:

abstract Class CallBack {

CallBack(

UnicastRemoteObject.exportObject(this, port, new MyRMISSLClientSocketFactory(),

new MyRMISSLServerSocketFactory());

)

public Object invoke(String str,Object data) throws RemoteException;

}

all the callback sub class will extend this class and implements the special invoke method.

client didn't create any registry, just

Registry registry=LocateRegistry.getRegistry(iHost, iPort,

nw MyRMISSLSocketFactory());

and use this registry to get remote object by name( A string like "MyRemoteObj" which bind in server side);

Do you anything want to know?

chendcha at 2007-7-14 22:00:52 > top of Java-index,Core,Core APIs...