【问题标题】:call Remote EJB from client JAVA从客户端 JAVA 调用远程 EJB
【发布时间】:2016-06-10 13:50:25
【问题描述】:

我必须实现两个简单的 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();
}

我已经在 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)

谁能告诉我我的代码有什么问题?

【问题讨论】:

    标签: ejb remote-access wildfly-9


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-04-30
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 2011-04-20
      • 2015-04-26
      • 1970-01-01
      相关资源
      最近更新 更多