gpt4 book ai didi

java - 不应通过注入(inject)容器错误来解决此问题

转载 作者:行者123 更新时间:2023-11-30 05:58:54 25 4
gpt4 key购买 nike

我有一个 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/

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