JBoss 5.1:Spring @Resource注释不起作用

时间:2012-04-11 11:38:44

标签: spring resources jboss5.x

我正在使用Spring 3和Hibernate 3.5与Java 1.6进行应用程序。

到目前为止,我一直在使用JBoss 4.2.1,一切都很好。

现在迁移到JBoss 5.1时,我遇到了很多问题。其中之一是JBoss忽略了Spring @Resource注释。我得到以下异常:

  

java.lang.RuntimeException: mapped-name is required for serviceManager of deployment pol-1.0.war at org.jboss.web.tomcat.service.injection.WebResourceHandler.loadXmlResourceEnvRefs(WebResourceHandler.java:287) at org.jboss.web.tomcat.service.injection.WebResourceHandler.loadXml(WebResourceHandler.java:325) at org.jboss.web.tomcat.service.TomcatInjectionContainer.processMetadata(TomcatInjectionContainer.java:550) at org.jboss.web.tomcat.service.WebCtxLoader.start(WebCtxLoader.java:158)

它希望每个@Resource的映射名称都像某些ejb。

我见过类似的问题,但他们没有任何答案,例如:

@Resource annotation not working properly with JBoss5.0.1

请告知。

阿迪

2 个答案:

答案 0 :(得分:1)

实际上你的问题是JBoss不会忽略@Resource注释 - 它会尝试根据EJB规则处理它们,而不是将它们留给Spring。

也许在JBoss配置中可以禁用此功能,但最简单的解决方案是用@Resource@Autowired替换@Inject

答案 1 :(得分:0)

听起来像Java注释需要名称空间支持。

然后是@Spring:Resource或@EJB:Resource。

甲骨文,你在听吗?

缺少Annotations的命名空间,您可以尝试更改类路径中库的顺序,这样java会首先(或最后)看到Spring注释,无论哪个最终都能提供所需的结果。