Hallo!
Ich brüte schon ein paar Stunden über einem Problem mit RMI im JBoss
Portal. Ich hab in einem Portlet einem Portlet den RMI Server bereitgestellt:
PlayableGamesContainer playableGamesContainer = new PlayableGamesContainer(); portletConfig.getPortletContext().setAttribute("playableGamesContainer", playableGamesContainer);
try {
IPortalService bridge = new PortalServiceImpl(playableGamesContainer);
Naming.rebind("rmi://127.0.0.1:1100/PortalService", bridge);
} catch (Exception e) {
throw new PortletException(e);
}
Vom Client aus starte ich folgenden Aufruf:
System.setProperty("java.security.policy", "client.policy");
System.setSecurityManager(new java.rmi.RMISecurityManager());
IPortalService bridge = (IPortalService) Naming
.lookup("rmi://127.0.0.1:1100/PortalService");
IPortalContext game = bridge.registerGame(new GameConfigurationImpl());
Mein Problem ist nun, dass beim Clientaufruf folgende Fehlermeldung kommt:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: gp.bridge.client.GameConfigurationImpl
Das Interface der GameConfigurationImpl steht dem Server zur Verfügung und
die Klasse ist auch Serializeable, aber trotzdem findet er sie nicht. Ist es
überhaupt möglich vom Client an den Server Objekte zu schicken? Wenn ja,
was mache ich falsch? Stelle ich die GameConfigurationImpl dem Server
zur Verfügung, so kommt der Fehler nicht mehr, aber das ist ja nicht der
Sinn der Sache.
Gruß Sascha
Ich brüte schon ein paar Stunden über einem Problem mit RMI im JBoss
Portal. Ich hab in einem Portlet einem Portlet den RMI Server bereitgestellt:
PlayableGamesContainer playableGamesContainer = new PlayableGamesContainer(); portletConfig.getPortletContext().setAttribute("playableGamesContainer", playableGamesContainer);
try {
IPortalService bridge = new PortalServiceImpl(playableGamesContainer);
Naming.rebind("rmi://127.0.0.1:1100/PortalService", bridge);
} catch (Exception e) {
throw new PortletException(e);
}
Vom Client aus starte ich folgenden Aufruf:
System.setProperty("java.security.policy", "client.policy");
System.setSecurityManager(new java.rmi.RMISecurityManager());
IPortalService bridge = (IPortalService) Naming
.lookup("rmi://127.0.0.1:1100/PortalService");
IPortalContext game = bridge.registerGame(new GameConfigurationImpl());
Mein Problem ist nun, dass beim Clientaufruf folgende Fehlermeldung kommt:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: gp.bridge.client.GameConfigurationImpl
Das Interface der GameConfigurationImpl steht dem Server zur Verfügung und
die Klasse ist auch Serializeable, aber trotzdem findet er sie nicht. Ist es
überhaupt möglich vom Client an den Server Objekte zu schicken? Wenn ja,
was mache ich falsch? Stelle ich die GameConfigurationImpl dem Server
zur Verfügung, so kommt der Fehler nicht mehr, aber das ist ja nicht der
Sinn der Sache.
Gruß Sascha