2016-06-10 143 views
0

我必须实现两个简单的java项目;第一是EJB projectwho包含实现远程接口一个简单的服务,第二个项目是一个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) 

有人可以告诉我我的代码有什么问题吗?

回答

0

命名空间java:在Java中默认不可用。您可以将主类作为应用程序客户端JAR打包到EAR中,并使用应用程序客户端容器启动器运行它,也可以将InitialContext配置为可以访问this blog post中所述的java:名称空间。