我必须实现两个简单的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();
}
我已经在WIldfly 9中部署了EJB,但是当我启动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 :(得分:0)
默认情况下,def record(list_to_extend, extend_length):
list_to_extend.extend(1 for _ in range(extend_length)
命名空间在Java中不可用。您可以将主类作为应用程序客户机JAR打包在EAR中,并使用应用程序客户机容器启动程序运行它,或者您可以配置InitialContext以访问java:
命名空间,如this blog post中所述