【问题标题】:websphere ejb deployment issue : classnotfound error for other ejb referenceswebsphere ejb 部署问题:其他 ejb 引用的 classnotfound 错误
【发布时间】:2012-12-19 10:00:20
【问题描述】:

我有两个 ejb jar 打包到一个耳朵里。说 EJb1.jar 和 Ejb2.jar。我在 Webphere 7.0 中部署它。 Ejb1 引用 Ejb2.jar 中的类。除非我在 Ejb1.jar 的 Manifest.Mf 文件中指定 Ejb2.jar,否则 EAR 文件的部署将失败。

抛出构建路径不完整且未找到引用的类的错误。

有什么办法可以克服吗?通过 WebSphere 控制台中的一些设置?

我的耳朵里有太多相互引用的 ejb。 每次我们进行代码更改时,更新清单文件变得非常困难。

有什么想法吗?

【问题讨论】:

    标签: ejb websphere websphere-7 classnotfound


    【解决方案1】:

    如果你想避免这种情况,你需要做的是创建一个 EJB Client Jar 来保存接口并将它放在EAR/lib 目录中。

    例如,如果 EJB1.jar 得到 MyBean.javaMyBeanLocal.java,您现在将其拆分为 2 个 jar 文件:

    EJB1.jar(EJB 模块)持有MyBean.javaEJB1-Client.jar(实用程序Jar)持有MyBeanLocal.java

    然后你把EJB1-Client.jar放到EAR文件的lib目录下,EJB2.jar就可以在其类路径中找到接口了。

    【讨论】:

    • 感谢您的意见。但是我看到当前的 EAR 设置与我的其他团队成员和其他开发环境一起工作得很好。我可以做任何可配置的更改吗?在 Websphere 控制台?让它忽略参考问题?
    • 据我所知,Manifest 是您需要一个模块来查看另一个模块时通常需要做的事情(lib 中的 jar 会自动添加到类路径中)