我正在使用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
请告知。
阿迪
答案 0 :(得分:1)
实际上你的问题是JBoss不会忽略@Resource
注释 - 它会尝试根据EJB规则处理它们,而不是将它们留给Spring。
也许在JBoss配置中可以禁用此功能,但最简单的解决方案是用@Resource
或@Autowired
替换@Inject
。
答案 1 :(得分:0)
听起来像Java注释需要名称空间支持。
然后是@Spring:Resource或@EJB:Resource。
甲骨文,你在听吗?缺少Annotations的命名空间,您可以尝试更改类路径中库的顺序,这样java会首先(或最后)看到Spring注释,无论哪个最终都能提供所需的结果。