JBoss5.1.0 GA - 部署项目类库兼容和类库冲突问题解决方法

在Tomcat6下开发,但将项目部署至JBoss5下运行的时候,碰到了一系列问题:

环境

JBoss-5.1.0 GA
Spring-2.5.6 / Spring-3.0.5

一、org.springframework.beans.factory.BeanDefinitionStoreException: I/O failure during classpath scanning; nested exception is java.util.zip.ZipException: error in opening zip file


原因/解决方法:解决的方法有两种:
1、将使用Spring-2.5.6的项目部署至JBoss4。
2、将部署至JBoss5的项目中的Sping-2.5.6升级至Spring-3.x。(我使用了这种方法)


二、 javax.servlet.ServletException: OncePerRequestFilter just supports HTTP requests

将Spring升级后,再重新部署,Spring兼容的问题解决,但又来了新的问题,报错信息如下:原因/解决方法:
关键的错误信息是loader constraint violation: loader (instance of org/apache/jasper/servlet/JasperLoader)
previously initiated loading for a different type with name "javax/servlet/http/HttpServletRequest"

提示有重复的类。

删除应用中的servlet.jar,jstl.jar等类库。


三、 java.lang.RuntimeException: mapped-name is required for sqlMapClientTemplate of deployment

剔除重复类库后,再重新部署,这次,部署竞然失败了,报错信息如下:

原因/解决方法:
原因:项目中使用@Resource引用Spring对象,@Resource是JSR-299规范的一部分,因此使用该注解代码在JBoss中的运行时,不再由Spring管理,而是由JBoss管理。

解决方法:将@Resource 改用 @Autowired 和 @Qualifier("") 代替。


参考资料 | References

  1. Archiva on JBoss
  2. JBoss AS 5.0 VFS handling (SPR-5120) backport 2.5.X
  3. JSR-299

猜你喜欢

转载自hugoren.iteye.com/blog/2198606
GA