вызвать удаленный EJB из клиентской JAVA

Мне нужно реализовать два простых java-проекта; первый - это проект EJB, который содержит простую службу, реализующую удаленный интерфейс, а второй проект - это java-клиент, который пытается вызвать этот проект ejb, так что вот что я делал до сих пор:

Context context = new InitialContext(jndiProperties);
    TestServiceRemote proxy = (TestServiceRemote) context
            .lookup("java:global/testEJB/TestService!services.TestServiceRemote");
    System.out.println(proxy.showHello());

и это мой сервис ejb:

@Stateless
public class TestService implements TestServiceRemote {

public TestService() {

}

@Override
public String showHello() {
    return "Hello";

}

}

наконец, это мой удаленный интерфейс:

@Remote
public interface TestServiceRemote {
   public String showHello();
}

Я развернул EJB в WIldfly 9, но когда я запускаю java-клиент, я получаю эту ошибку, отображаемую в консоли:

Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at swing.testClient.main(testClient.java:22)

Может кто-нибудь сказать мне, что я не так в моем коде?


person majd hwas    schedule 10.06.2016    source источник


Ответы (1)


Пространство имен java: по умолчанию недоступно в Java. Вы можете либо упаковать свой основной класс в виде JAR-файла клиента приложения внутри EAR и запустить его с помощью средства запуска контейнера клиента приложения, либо настроить InitialContext для доступа к пространству имен java:, как описано в этот пост в блоге.

person Brett Kail    schedule 10.06.2016