2016-09-29 5 views
0

Пожалуйста, смотрите код ниже:Получения исходного контекста от удаленного клиента

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

Выхода я ожидаю т.е. Привет Ян.

В приведенном выше коде предполагается, что клиент установлен на том же компьютере, что и экземпляр Glassfish. Как получить тот же результат от клиента удаленного приложения. Я пробовал:

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

который производит ошибку. Я предполагаю, что порт - это порт, на котором установлена ​​Glassfish.

ответ

1

Для удаленных клиентов, подключающихся к GlassFish и скумбриевидному гидролику, я обычно использую следующий:

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"); 

Я хотел бы представить, из вашего примера, что исходный поиск будет работать в этом сценарии:

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

Если у вас несколько удаленных конечных точек, вы можете загрузить баланс между ними следующим образом:

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

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

+0

Спасибо. Это работает. Почему ваш контекстный путь поиска содержит полные остановки, в то время как моя содержит косые черты? +1 для ответа. – w0051977

+0

Это просто пример, который я разорвал из связанных документов Oracle, и сделал немного яснее. В этом поиске это всего лишь сам компонент и его пакет, тогда как вы (правильно) использовали глобальный поиск и включаете путь 'appname/EJB-JAR-name/BeanName'. – Mike

Смежные вопросы