【问题标题】:Wildfly: Using Spring @Autowired for UserTransactionWildfly:使用 Spring @Autowired 进行 UserTransaction
【发布时间】:2015-10-07 01:23:10
【问题描述】:

在我从 Jboss AS5 迁移到 Wildfly9 的应用程序期间,我试图在 wildfly 中加载一个模块:javax.transaction.api 查看 Wildfly article to load modules in WF8 ,它说您可能不需要显式加载某些模块,因为它们是隐式加载的。

我正在我的一门课中使用

 @Autowired
private UserTransaction transaction;

然后我在 applictionContext.xml 中定义它

<jee:jndi-lookup id="userTransaction" jndi-name="UserTransaction" expected-type="javax.transaction.UserTransaction"/>

在我的 jboss-deployment-structure.xml 中

 <module name="javax.api"/>
  <module name="javax.transaction.api"/>

但我收到此错误:

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: 
private javax.transaction.UserTransaction com.mycomp.myapp.EventSender.transaction; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type [javax.transaction.UserTransaction] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

我尝试将 jta.jar 添加到战争的库中,我尝试添加 jta 的依赖项。我试图添加 javax.transaction 以防万一,它们都不起作用。我没有收到ClassNotfoundexceptionClassCastexception。一切似乎都那么简单。我无法理解这里缺少什么。

"WFLYCTL0080: 服务失败" => {"jboss.undertow.deployment.default-server.default-host./myApp" => "服务 jboss.undertow.deployment 中的 org.jboss.msc.service.StartException。 default-server.default-host./myApp: java.lang.RuntimeException: org.springframework.beans.factory.UnsatisfiedDependencyException: 在\"/C:/JAVA/WF9/wildfly-9.0 中定义名称'myAppManager' 创建bean 时出错.0.Final/bin/content/myApp-engine-2.0.2-SNAPSHOT.war/WEB-INF/classes/com/mycomp/myApp/myAppManager.class\":通过构造函数参数表示的不满足的依赖关系,索引为 2 类型[com.mycomp.myApp.EventSender]::创建名为“EventSender”的bean时出错:资源依赖注入失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init 方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction;嵌套 exc eption 是 org.springframework.beans.factory.BeanCreationException:创建名为“EventSender”的 bean 时出错:注入资源依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的 bean 时出错:调用 init 方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 原因:java.lang.RuntimeException: org.springframework.beans.factory.UnsatisfiedDependencyException: 错误创建 bean 名称为 'myAppManager' 在 \"/C:/JAVA/WF9/wildfly-9.0.0.Final/bin/content 中定义/myApp-engine-2.0.2-SNAPSHOT.war/WEB-INF/classes/com/mycomp/myApp/myAppManager.class\":通过构造函数参数表示的不满足依赖关系,索引为 2 类型 [com.mycomp.myApp.EventSender ]: : 创建名为“EventSender”的 bean 时出错:资源依赖注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的 bean 时出错:调用 init 方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“EventSender”的 bean 时出错:注入资源依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的 bean 时出错:调用 init 方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 原因:org.springframework.beans.factory.UnsatisfiedDependencyException:在\"/C:/JAVA/WF9/wildfly-9.0.0.Final/bin/content/myApp-engine-2.0 中定义的名称为“myAppManager”的bean 创建时出错.2-SNAPSHOT.war/WEB-INF/classes/com/mycomp/myApp/myAppManager.class\":通过构造函数参数表示的不满足依赖关系,索引为 2 类型 [com.mycomp.myApp.EventSender]::创建 bean 时出错名称为“EventSender”:资源依赖注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的 bean 时出错:调用 init 方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“EventSender”的 bean 时出错:注入资源依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的 bean 时出错:调用 init 方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 相关原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 原因:org.springframework.beans.factory.BeanCreationException:创建名为“EventSender”的bean时出错:资源依赖注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的 bean 时出错:调用 init 方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 原因:org.springframework.beans.factory.BeanCreationException:创建名为“userTransaction”的bean时出错:调用init方法失败;嵌套异常是 javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction 引起:javax.naming.NameNotFoundException: UserTransaction -- service jboss.naming.context.java.UserTransaction"}}, “回滚” => true

感谢您的帮助。

【问题讨论】:

标签: java spring maven wildfly


【解决方案1】:

错误在堆栈跟踪中:

'userTransaction': Invocation of init method failed; nested exception is  javax.naming.NameNotFoundException: UserTransaction

无法创建 bean,因为 JNDI 查找失败。您的应用服务器上没有名为“UserTransaction”的资源。

【讨论】:

  • 我认为 javax.transaction.UserTransaction 是 JNDI 指向的资源。这是作为模块添加的 jta.jar 的一部分。即使我已将其添加为模块,甚至尝试将其添加为 WEB-INF/lib 中的 jar 作为库,它似乎也看不到 jta.jar。
  • 那是资源的类型。如果要部署到 Wildfly,则不需要添加 jta.jar,它是应用服务器的一部分。堆栈跟踪表明您在 jndi-name 中有错误的值。 jndi 名称“UserTransaction”在我看来是错误的。我希望像“java:jboss/UserTransaction”或“java:comp/UserTransaction”这样的东西。
  • 感谢 sh0rug0ru:java:jboss/UserTransaction 成功了。奇怪的是,我还有两个 jndi 查找,一个是连接工厂,它是 java:/JmsXA,它可以工作,另一个是 eis,它的 jndi 名称为:java:/eis/myeis,它也可以工作. JmsXa 也来自 javax,jms.Connection,我什至尝试过 java:/UserTransaction 但这不起作用我必须在其中添加 jboss 才能工作。
猜你喜欢
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
相关资源
最近更新 更多