作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 EJB3 项目要部署在 JBoss 5.1.0 GA 上。我将无状态 EJB 注入(inject)到其他无状态 bean 和 Servlet 中。
我使用不带任何参数的 @EJB 注释来注入(inject) EJB bean(我有一个测试项目只是为了模拟注入(inject),它有效)。
当我尝试部署时,出现以下错误。
"Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: Resolution should not happen via injection container"
我已经搜索过,但似乎无法找到/查明错误原因。
更新:1
EJB jar 和 WAR 都部署在同一个 EAR 中。我正在使用 JEE5 架构,http://code.google.com/p/javaee5-maven-archetype/创建主项目和测试。 archtype生成的默认代码可以工作,并且不需要在@EJB注入(inject)中指定JNDI名称。
更新:2完整的部署堆栈跟踪,http://pastebin.com/CknXie13
最佳答案
这里有一个经常被忽视的问题:在 servlet 或 Web 服务中声明 EJB 的类类型时,请确保使用本地接口(interface)的名称而不是实现。因此,JBOSS中的mappedName将指向实现的jndi绑定(bind),而声明中的类类型将指向接口(interface)。例如:
@EJB(mappedName="Foo/EmployeeManagerBean/local")
EmployeeManagerLocal manager;
陷阱 #2:确保您使用 Java 1.6 或更高版本进行编译。这在 Eclipse 中可能很棘手。您必须检查“项目”->“属性”中的三个位置以确保:项目方面、编译器合规性设置和构建路径。
关于java - 不应通过注入(inject)容器错误来解决此问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3844453/
我是一名优秀的程序员,十分优秀!