2010-07-20 17 views
0

J'ai un certain nombre de fichiers jar qui effectuent rmi. Ceux-ci fonctionnent tous sauf un, le problème tente de rechercher un slsb distant dans un projet différent.La recherche à distance de slsb échoue à partir du fichier jar, bien que la recherche très similaire à partir d'un fichier jar appelé du même endroit fonctionne

Le code est donc la même chose ici:

machineNameOrAddress = args[0]; 
jndiPortNumber = args[1]; 
action = args[2]; 
    Properties properties = new Properties(); 
    properties.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); 
    properties.setProperty("java.naming.provider.url", "jnp://" + machineNameOrAddress + ":" + jndiPortNumber); 
    properties.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); 
    try { 

    initialContext = new InitialContext(properties); 

Mais la différence se produit; c'est OK:

IEmailNotificationSLSBRemote notificationSLSBRemote = (IEmailNotificationSLSBRemote) initialContext.lookup("ProjectOne/EmailNotificationSLSB/remote"); 

Ce n'est pas correct:

IEmailNotificationSLSBRemote notificationSLSBRemote = (IEmailNotificationSLSBRemote) initialContext.lookup("ProjectTwo/EmailNotificationSLSB/remote"); 

everythign compile everythign fonctionne le reste OK, je pense avoir mis en place everythign ok (ou presque tout).

Ceci est l'erreur, il s'agit du même répertoire client. Les rmi sont invoqués au même endroit.

javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: my.path.ProjTwo.client.interfaces.IEmailNotificationSLSBRemote (no security manager: RMI class loader disabled)] 
     at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:786) 
     at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627) 
     at javax.naming.InitialContext.lookup(Unknown Source) 
     at uk.co.tpplc.hands.client.utils.EmailNotificationUtil.main(EmailNotificationUtil.java:47) 
Caused by: java.lang.ClassNotFoundException: uk.co.tpplc.hands.client.interfaces.IEmailNotificationSLSBRemote (no security manager: RMI class loader disabled) 
     at sun.rmi.server.LoaderHandler.loadProxyClass(Unknown Source) 
     at java.rmi.server.RMIClassLoader$2.loadProxyClass(Unknown Source) 
     at java.rmi.server.RMIClassLoader.loadProxyClass(Unknown Source) 
     at sun.rmi.server.MarshalInputStream.resolveProxyClass(Unknown Source) 
     at java.io.ObjectInputStream.readProxyDesc(Unknown Source) 
     at java.io.ObjectInputStream.readClassDesc(Unknown Source) 
     at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
     at java.io.ObjectInputStream.readObject0(Unknown Source) 
     at java.io.ObjectInputStream.readObject(Unknown Source) 
     at java.rmi.MarshalledObject.get(Unknown Source) 
     at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72) 
     at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:710) 
     ... 3 more 

Toute aide grandement appréciée. Les slsbs sont présents dans les deux projets, ils font presque la même chose. Les fichiers jar se compilent bien et un situé au même endroit. Et à la fois présent et correct dans jboss.j2ee console JMX:

ear=ProjectOne.ear,jar=ProjectOne-ejb.jar,name=EmailNotificationSLSB,service=EJB3 

ear=ProjectTwo.ear,jar=ProjectTwo-ejb.jar,name=EmailNotificationSLSB,service=EJB3 

Répondre

0

fichier jar ProjectTwo nécessaire à copier dans le répertoire contenant les pots d'appel.