2016-06-10 5 views
0

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

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) 

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

ответ

0

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