在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
- Archiva on JBoss
- JBoss AS 5.0 VFS handling (SPR-5120) backport 2.5.X
- JSR-299