日期:2014-05-17  浏览次数:21256 次

war包在JBoss和Tomcat发布时不一样
同一个war包:spring MVC+Hibernate在Tomcat7发布一切正常。当在JBoss7发布时,有两个问题:

1、在DAO层通过@Resource注入Hibernate的SessionFactory时,非要set开头的方法名才可以。但在Tomcat7中只要有@Resource这个注解就可以注入。
2、JBoss7中com.springsource.org.codehaus.jackson.mapper-1.0.0.jar这个包有冲突,删掉了才正常。

求指点迷津。

------解决方案--------------------
>>> 1、在DAO层通过@Resource注入Hibernate的SessionFactory时,非要set开头的方法名才可以。但在Tomcat7中只要有@Resource这个注解就可以注入。

这个我觉得您应该多比对比对两边的测试环境,确保使用Hibernate等的版本相同,再有,JBoss 7默认JPA实现为HIbernate 4版本,毕竟这是Hibernate自己实现,JBoss和Tomcat只是一个运行容器而已。

>>> JBoss7中com.springsource.org.codehaus.jackson.mapper-1.0.0.jar这个包有冲突,删掉了才正常。

这个有可能,主要是类加载机制不一起,Tomcat是传统的模式,启动时加载所有可能的jar,包括你部署应用中的jar,JBoss 7使用模块化的类加载机制,它是根据依赖关系加载jar包,详细关于JBoss 7模块化类加载机制:https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Application_Platform/6.1/html/Development_Guide/chap-Class_Loading_and_Modules.html
------解决方案--------------------
2、JBoss7中com.springsource.org.codehaus.jackson.mapper-1.0.0.jar这个包有冲突,删掉了才正常。
第二条包冲突删除了很正常啊,我也碰到过类似问题,删掉就好了,不然程序不知道该引用那个包下的类了,因为方法相同。
第一个确定下是不是 jdk版本的问题,
------解决方案--------------------
Tomcat7 中 和 JBoss   对 jsp 编译解析对应的jar 也不一样。很有可能出现一种可以,一种冲突。