Как получить доступ к EJB на удаленном сервере? - PullRequest
3 голосов
/ 23 марта 2012

Я использую сервер GlassFish-3.1.2, работающий в моей подсети (192.168.1.3:3700). Я уже развернул корпоративное приложение, включая EJB, в котором определил бизнес-метод. Теперь я хочу получить удаленный доступ к EJB из моего клиента приложения Java. Как мне настроить JNDI соотв. объект InitialContext для поиска EJB? Как мне нужно определить свойства? Btw. Мне пришлось запустить «asadmin enabled-secure-admin», чтобы сервер GlassFish работал в локальной сети. Возможно, мне также нужно отправить свои учетные данные со свойствами?

Вот мое текущее «решение», которое кажется совершенно неправильным:

Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.1.3");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext ctx = new InitialContext(props);

TestentityFacadeRemote tfr = (TestentityFacadeRemote)ctx.lookup("java:global/TestEE/TestEE-ejb/TestentityFacadeRemote");

Когда я запускаю эту программу, она просто ждет бесконечно ...

Любая помощь высоко ценится!

1 Ответ

6 голосов
/ 09 мая 2012

Я решил проблему, установив хост и порт напрямую с помощью System.setProperty () и используя конструктор по умолчанию для инициализации InitialContext ().Обратите внимание, что следующие строки должны быть самыми первыми в вашей программе / основном методе:

public static void main(String[] args) {
    System.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.1.3");
    System.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
    InitialContext ctx = new InitialContext();
    TestentityFacadeRemote tfr = (TestentityFacadeRemote)ctx.lookup("java:global/TestEE/TestEE-ejb/TestentityFacadeRemote!com.acme.remote.TestentityFacade");
}

Надеюсь, это поможет ...

...