2016-09-29 6 views
0

S'il vous plaît voir le code ci-dessous:Obtention contexte initial du client à distance

Context ctx = null; 
ctx=new InitialContext(); 
TestEJBRemote t = (TestEJBRemote) ctx.lookup("java:global/EJBTest/EJBTest-ejb/TestEJB"); 
System.out.println(t.getName("Ian")); 

La sortie est ce que je pense à savoir Bonjour Ian.

Le code ci-dessus suppose que le client est installé sur le même ordinateur que l'instance Glassfish. Comment obtenir le même résultat d'un client d'application distant. J'ai essayé ceci:

Context ic = new InitialContext(); 
     TestEJBRemote t = (TestEJBRemote) ic.lookup("corbaname:computer:4848#/a/b/TestEJB"); 
     System.out.println(t.getName("Ian")); 

qui produit une erreur. Je suppose que le port est le port sur lequel Glassfish est installé.

Répondre

1

Pour les clients distants qui se connectent à GlassFish et Payara, je l'habitude d'utiliser les éléments suivants:

Properties props = new Properties(); 
props = new Properties(); 
props.setProperty("java.naming.factory.initial", 
    "com.sun.enterprise.naming.SerialInitContextFactory"); 
props.setProperty("java.naming.factory.url.pkgs", 
    "com.sun.enterprise.naming"); 
props.setProperty("java.naming.factory.state", 
    "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"); 
props.setProperty("org.omg.CORBA.ORBInitialHost", "127.0.0.1"); 
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700"); 
InitialContext ctx = new InitialContext(props); 

MyBeanRemote bean = (MyBeanRemote) ctx.lookup("com.example.MyBean"); 

j'imagine, de votre exemple, que votre recherche originale travaillerait dans ce scénario:

TestEJBRemote t = (TestEJBRemote) ctx.lookup("java:global/EJBTest/EJBTest-ejb/TestEJB"); 

Si vous avez plusieurs points de terminaison distants, vous pouvez charger la balance entre eux avec ce qui suit:

Hashtable env = new Hashtable(); 
env.put("com.sun.appserv.iiop.endpoints","host1:port1,host2:port2,..."); 
InitialContext ctx = new InitialConext(env); 

Ref: https://docs.oracle.com/cd/E26576_01/doc.312/e24930/java-clients.htm#GSDVG00075

+0

Merci. Cela fonctionne. Pourquoi votre chemin de recherche de contexte contient-il des arrêts complets alors que le mien contient des barres obliques? +1 pour la réponse – w0051977

+0

C'est juste un exemple que j'ai arraché aux docs Oracle liés, et qui est devenu un peu plus clair. Dans cette recherche, il s'agit simplement du bean lui-même et de son package, alors que vous avez (correctement) utilisé une recherche globale et incluez le chemin 'appname/EJB-JAR-name/BeanName'. – Mike