Hallo!
Habe eine typische Client/Server Applikation.
Das zu bindende Objekt:
(SourceForge.net Repository - [jgameadmin] View of /trunk/jGameAdmin/src/net/sourceforge/jgameadmin/agent/Agent.java)
RMI Binding:
(SourceForge.net Repository - [jgameadmin] View of /trunk/jGameAdmin/WebContent/WEB-INF/src/net/sourceforge/jgameadmin/webinterface/JGameAdmin.java)
Der Client:
(SourceForge.net Repository - [jgameadmin] View of /trunk/jGameAdmin/WebContent/WEB-INF/src/net/sourceforge/jgameadmin/webinterface/Client.java)
[JAVA=76]public class Client {
public Client( Host host ) throws RemoteException, NotBoundException {
Registry registry = LocateRegistry.getRegistry( host.getAddress(), JGameAdminAgent.REGISTRY_PORT,
new SslRMIClientSocketFactory() );
agent = (Agent) registry.lookup( JGameAdminAgent.AGENT_RMI_NAME );
}
}[/code]
Dann jedoch, schlägt der Cast fehl:
Als ich noch Naming.lookup() verwendete, hat es funktioniert. Wegen SSL hab' ich jedoch auf LocateRegistry.getRegistry().lookup() gewechselt. Ansonsten ist, glaube ich, alles noch gleich.
Irgendjemand eine Idee?
Habe eine typische Client/Server Applikation.
Das zu bindende Objekt:
(SourceForge.net Repository - [jgameadmin] View of /trunk/jGameAdmin/src/net/sourceforge/jgameadmin/agent/Agent.java)
Java:
public class Agent extends UnicastRemoteObject implements Remote {
public Agent( int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf )
throws RemoteException {
super( port, csf, ssf );
}
}
RMI Binding:
(SourceForge.net Repository - [jgameadmin] View of /trunk/jGameAdmin/WebContent/WEB-INF/src/net/sourceforge/jgameadmin/webinterface/JGameAdmin.java)
Java:
public class JGameAdminAgent {
private void listen() throws IOException, NotBoundException {
if ( System.getSecurityManager() == null ) {
System.setSecurityManager( new RMISecurityManager() );
}
Registry registry = LocateRegistry.getRegistry( "localhost", REGISTRY_PORT,
new SslRMIClientSocketFactory() );
registry.rebind( AGENT_RMI_NAME, new Agent( cfg.getPort(), clientSocketFactory, serverSocketFactory ) );
}
}
Der Client:
(SourceForge.net Repository - [jgameadmin] View of /trunk/jGameAdmin/WebContent/WEB-INF/src/net/sourceforge/jgameadmin/webinterface/Client.java)
[JAVA=76]public class Client {
public Client( Host host ) throws RemoteException, NotBoundException {
Registry registry = LocateRegistry.getRegistry( host.getAddress(), JGameAdminAgent.REGISTRY_PORT,
new SslRMIClientSocketFactory() );
agent = (Agent) registry.lookup( JGameAdminAgent.AGENT_RMI_NAME );
}
}[/code]
Dann jedoch, schlägt der Cast fehl:
Code:
Caused by: java.lang.ClassCastException: $Proxy31 cannot be cast to net.sourceforge.jgameadmin.agent.Agent
at net.sourceforge.jgameadmin.webinterface.Client.<init>(Client.java:80)
Als ich noch Naming.lookup() verwendete, hat es funktioniert. Wegen SSL hab' ich jedoch auf LocateRegistry.getRegistry().lookup() gewechselt. Ansonsten ist, glaube ich, alles noch gleich.
Irgendjemand eine Idee?