【问题标题】:WebSphere v7.0 is not deploying EJBWebSphere v7.0 未部署 EJB
【发布时间】:2015-09-09 07:12:33
【问题描述】:

我正在开发一个企业应用程序并构建了包含 WAR 和 ejb jar 文件以及 SOAP Web 服务的 EAR 文件。我成功地部署了应用程序而没有任何启动错误并发布了 Web 服务,我可以访问 wsdl 文件并从 SOAP UI 进行 Web 服务调用。 Web 服务调用某个 Manager 类,该类执行 EJB 查找以查找会话 bean,该会话 bean 失败并出现异常 javax.naming.NameNotFoundException: Name com.chubb.dgmk.dus.client.DigitalUserServiceLocal not found in context “ejblocal:”。

我的会话 ejb 被标记为 @Stateless 和带有 @Local 注释的本地接口。但是当我在管理控制台中查看我的应用程序时,我没有看到任何已部署的 EJB。参考部分下没有 “EJB 参考” 链接,如下图所示。由于我没有收到任何部署错误,因此我不知道出了什么问题。

try {
            context = new InitialContext();
            Object obj = context.lookup("ejblocal:com.chubb.dgmk.dus.client.DigitalUserServiceLocal");
            dusService = (IDigitalUserService)obj;
        } catch (NamingException e) {
        }

【问题讨论】:

  • 在我的 EAR 的 application.xml 中添加了一个条目后,我为我检测到了 ejb 模块。 Maven 默认只添加了 war 文件。我添加了另一个条目,例如 lib/core-ejb.jar

标签: java jakarta-ee ejb-3.0 websphere-7


【解决方案1】:

您看不到引用,因为在您提供服务的 Web 模块中没有定义引用。您需要在 web.xml@EJB 注释中有 ejb-local-ref 条目。

关于您的ejblocal: 查找,它应该可以工作。在SystemOut.log 中验证绑定DigitalUserService 的绑定是什么。也许你有ibm-ejb-jar-bnd.xml 文件,它覆盖了默认绑定。

您还应该能够在该页面的Enterprise Java Beans Properties 部分中看到EJB JNDI names。如果你不这样做,那么看起来你的 EJB 没有被检测到。

【讨论】:

  • 我的 EJB 项目中的 application.xml 缺少 ejb jar 的模块声明。所以我刚刚添加它如下。现在我收到有关客户端类的部署异常。我的@Local 存在于不同的项目中,我已在该项目的 ejb-jar.xml 中添加为 ejb-client-jar。但它仍然无法加载该本地接口,因此无法部署我的 ejb。 DigitalUserServicesDomain.jar
  • @user1614862 你的 ejb 客户端 jar 应该在 EAR/lib 文件夹中,或者如果它被放置在不同的路径中,例如耳朵根,你应该把它放在 MANIFEST.MF 中的 ejb 模块类路径中。最简单的方法是通过 Eclipse 中的 Project properties > Deployment Assembly 来完成。
  • 它已经在 EAR/lib 文件夹中。但是,我在启动服务器时仍然遇到类加载异常。此外,在将我的 EJB jar 移动/声明到 application.xml 之后,我无法为我的服务生成 wsdl。从我的 RAD 执行 wsgen 命令时出现“本地化失败”错误。
【解决方案2】:

这是因为没有在 EJB 项目的 MANIFEST 文件中指定依赖的 jar。在 MANIFEST 文件中添加所有这些 jar 文件后,我能够成功加载和查找 EJB。

【讨论】:

    猜你喜欢
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 2013-02-23
    • 1970-01-01
    • 2019-10-25
    • 2012-02-14
    相关资源
    最近更新 更多