环境:JDK1.6+JBoss5.1.0+Struts2.1.8+Spring2.5.6+Hibernate3.3.2
- 将war包放入“JBOSS安装目录/server/default/deploy”目录,直接启动,报如下错误:
分析可能与JBoss4.2.3版本类似,存在classloader问题,参考JBoss社区资料(http://community.jboss.org/wiki/classloadingconfiguration),设置Web应用加载时使用JBoss统一的classloader。具体操作方法为:在WEB-INF下增加jboss-web.xml:
说明:com.example:archive=unique-archive-name代表jar仓库的对象名objectName ,其中,com.example可以随意取,unique-archive-name 就用部署包的名字即可,例如com.example:archive=demo.war,保证这一串唯一即可。
详细说明可以通过google搜索“JBoss类隔离”。 - 重启JBoss,上述错误不再出现,但又报如下错误:
参考https://jira.springframework.org/browse/SPR-5120,下载jboss-as-sprint-int-5.0.0.GA.jar和jboss-spring-int-vfs.jar,拷贝至Web应用的lib下,修改web.xml,加入:
- 重新启动,上述错误不再出现,但报如下错误:
修改spring的配置中类似 <import resource="applicationContext-xxx.xml"/> 的内容,改成<import resource="classpath:applicationContext-xxx.xml"/>。我的demo中spring配置文件在classes的spring文件夹下,因此,应该改成:<import resource="classpath:spring/applicationContext-xxx.xml"/> - 重新启动,不再报任何错误,访问首页正确显示,并能登录成功。