I should probably note that the Spring version in use is 2.5.5, and the JDK is 1.6.07.
I have done a bit more work here. This project has a stand-alone Spring container exposing services through RMI. The java process running Spring comes up OK, only complaining about the creation of the JMX Connector.
The client programs in this project call services over RMI, and that all works fine. So I wrote a tiny client that does not use Spring to list what's in the RMI registry, and I am running this from a remote machine (the same machine where the other Spring clients work OK):
Code:
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class RmiClient {
public static void main(String args[]) {
try {
String hostName = "blah.foo.com";
Registry registry = LocateRegistry.getRegistry(hostName, 1099);
String[] names = registry.list();
for (String name : names) {
System.out.println(name);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
and it spits out an exception:
Code:
java.rmi.ConnectIOException: non-JRMP server at remote endpoint
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:230)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
at sun.rmi.registry.RegistryImpl_Stub.list(Unknown Source)
at test.RmiClient.main(RmiClient.java:15)
and this is exactly the same message I am getting at Spring start-up from the ConnectorServerFactoryBean.
So I am left to wonder how my other clients, which use Spring, are able to make a connection to the services running on my server.