gpt4 book ai didi

eclipse - 在(引用的)Web 项目中找不到引用的 EJB 项目的类

转载 作者:行者123 更新时间:2023-12-04 17:12:12 24 4
gpt4 key购买 nike

我正在学习 J2EE 和 EJB,但遇到了一个奇怪的问题。这是我的项目设置:

我正在使用 Glassfish 3.1 和 Eclipse 3.7。我在 Eclipse 中有两个项目:

  • 一个符合 EJB 3.0 的项目,myEjbProject
  • 一个动态网络项目,myWebProject

  • 我正在注入(inject)一个 EJB session bean mySessionBeanPackage.mySessionBean来自 myEjbProject进入 servlet myServletPackage.myServletmyWebProject然后(在 servlet 中)调用 session bean 中定义的简单方法。

    我提供了 myWebProject引用 myEjbProject (使用属性 -> 项目引用对话框)。但是,由于某种原因,服务器是 无法找到 session bean。我得到的确切错误是:

    SEVERE: Class [ LmySessionBeanPackage/mySessionBean ] not found. Error while loading [ class myServletPackage.myServlet ]



    请注意,EJB 项目和 Web 项目都已发布到服务器,我已经仔细检查了为 bean 生成的类文件实际上是否存在于服务器上(所以我想不出原因为什么服务器无法找到它们)。

    谁能告诉我我做错了什么?

    我也试过
  • 添加myEjbProject的classes文件夹明确地指向 myWebProject 的 Java 构建路径 -> 库列表.这是对项目引用的补充(尽管我认为首先添加项目引用就足够了)。无论如何,它没有区别(与以前相同的错误消息)。
  • myEjbProject 创建 JAR 文件使用 Export -> EJB Jar File 选项(我现在不想编写 Ant 脚本)。然后我把这个 JAR 放到 myWebProject 的 Java Build Path -> Libraries 部分。 .这种方法也不能解决问题(与以前相同的错误消息)。
  • 修改 session bean 以具有
  • 无接口(interface)
  • 本地接口(interface)
  • 远程接口(interface)

  • 并相应地修改注入(inject)。例如,对于只有本地接口(interface)的 bean,我使用:

    @EJB mySessionBeanPackage.mySessionBeanLocal myBean



    这种方法也没有解决问题(与以前相同的错误消息)。
  • 取消myEjbProject将 session bean 添加到 myWebProjectmyServletPackage.mySessionBean (与 servlet 相同的包)。在这种情况下,我可以使用成功地将 session bean 注入(inject)到 servlet

    @EJB mySessionBeanPackage.mySessionBean myBean

  • 取消myEjbProject将 session bean 添加到 myWebProjectmySessionBeanPackage.mySessionBean (一个新包)。在这种情况下,我也可以使用成功地将 session bean 注入(inject)到 servlet

    @EJB mySessionBeanPackage.mySessionBean myBean

  • 最佳答案

    我建议查看 Eclipse 打包并部署到服务器的实际 EAR。您可以通过导出 EAR 项目来执行此操作(右键单击 EAR 项目 -> 导出 -> Java EE -> EAR 文件)

    我认为您缺少的步骤是将 EJB 项目添加到 WEB 项目的 MANIFEST 文件中。但万一你错过了几个步骤,我会检查以下内容:

  • EJB 和WEB 项目是EAR 项目的模块。右键单击 EAR 项目 -> 属性 -> 部署程序集 -> 添加 -> 项目 -> 选择 EJB 和 WEB 项目。如果您现在导出 EAR 项目,您会注意到 EJB 和 WEB 项目与 EAR 打包在一起。
  • 将 EJB 项目添加到 WEB 项目的 MANIFEST 中。右键单击 WEB 项目 -> 属性 -> 部署程序集 -> list 条目 -> 添加 -> 选择 EJB 项目。您可以打开 MANIFEST.MF 文件并看到它现在包含 EJB 项目。

  • 我还喜欢将 EJB 项目添加到 WEB 项目构建路径中,以便它包含在 WEB 的类路径中:右键单击 WEB 项目 -> 属性 -> Java 构建路径 -> 项目 -> 添加 -> 选择 EJB。

    关于eclipse - 在(引用的)Web 项目中找不到引用的 EJB 项目的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591056/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com