我正在学习J2EE和EJB,并且遇到了一个奇怪的问题。这是我的项目设置:在(引用)Web项目中找不到引用EJB项目的类
我使用的是Glassfish 3.1和Eclipse 3.7。我在Eclipse两个项目:
- 一个EJB 3.0兼容的项目,
myEjbProject
- 一个动态Web项目,
myWebProject
我从myEjbProject
注入一个EJB会话bean mySessionBeanPackage.mySessionBean
成servlet myServletPackage.myServlet
在myWebProject
中,然后(在servlet中)调用会话bean中定义的简单方法。
我提供了myWebProject
参考myEjbProject
(使用属性 - >项目引用对话框)。但是,出于某种原因,服务器是无法找到会话bean。我得到的确切错误是:
SEVERE:未找到类[LmySessionBeanPackage/mySessionBean]。加载时出错[类myServletPackage.myServlet]
注意都 EJB项目和Web项目已发布到服务器,我已经反复检查为bean生成的类文件,实际上,存在于服务器上(所以我想不出为什么服务器无法找到它们)。
谁能告诉我我做错了什么?
我也试过
加入
myEjbProject
类文件夹明确到Java构建路径 - 的myWebProject
>库列表。这是除了项目参考之外(尽管我认为首先添加项目参考应该是足够的)。无论如何,它没有区别(和以前一样的错误信息)。使用Export - > EJB Jar File选项(我不想写入Ant脚本)创建一个来自
myEjbProject
的JAR文件。然后,我将这个JAR放入了myWebProject
的Java Build Path - > Libraries部分。这种方法也不能解决问题(与以前相同的错误信息)。修改所述会话bean具有
- 没有界面
- 本地接口
- 远程接口
和相应地修改注射。例如。,对于只有一个本地接口的bean,我用:
@EJB mySessionBeanPackage.mySessionBeanLocal myBean
这种做法并没有解决问题,或者(同样的错误消息之前)。
完全废除
myEjbProject
,并将会话bean添加到myWebProject
作为myServletPackage.mySessionBean
(与servlet的包相同)。在这种情况下,我可以使用@EJB mySessionBeanPackage.mySessionBean myBean
与
myEjbProject
废除干脆加入会话beanmyWebProject
为mySessionBeanPackage.mySessionBean
(新包装)成功注入会话bean到servlet。在这种情况下,我能成功注入会话bean到使用@EJB mySessionBeanPackage.mySessionBean myBean
第2号为我做了诡计。谢谢你,谢谢你,谢谢你! :) 我还没有创建EAR项目,因为我认为我会开始简单。最后一行,是的,我已经有了。干杯。 –
优秀! #2为我挽救了更多的头发。谢谢! –