将项目从tomcat 迁移到JBoss5.0
http://java-boy.iteye.com/blog/531411从Tomcat升级到JBoss5.1真是一个痛苦的过程,可能遇到很多问题。以下是我碰到的问题,及解决方法。
一.Hibernate不兼容问题。
JBoss5.1中内置了hibernate,以前4.x的时候还是在server/default/lib里,但在JBoss5.1的时候已经升级到了common/lib下面。4.x时我直接删掉hibernate等的jar就可以了,但5.1不行,否则会抛很多错误。只能一步步解决。
我首先碰到的问题是hibernate配置文件名字错误,可笑是吗?在JBoss5.1下会首先搜索*-hibernate.xml的文件。如果有就当成jboss hibernate配置的文件,进行加载。而我的项目里的spring下的hibernate配置文件正使用了该结尾,可想而知了。抛出 is in error due to the following reason(s): java.lang.ClassCastException错误。找了好久才找到原因。 改一下名字就可以了,如 *-forhibernate.xml
之后是ClassLoad问题。解决上一个问题后,碰到如下异常。
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lookupDao' defined in ServletContext resource
- [/WEB-INF/applicationContext-forhibernate.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory';
- nested exception is org.springframework.beans.factory.BeanCreationException:
- Error creating bean with name 'sessionFactory' defined in ServletContext resource
- [/WEB-INF/applicationContext-forhibernate.xml]: Invocation of init method failed;
- nested exception is java.lang.ClassCastException:
- org.hibernate.validator.event.ValidateEventListener cannot be cast to org.hibernate.event.PreInsertEventListener
- Caused by:
- org.springframework.beans.factory.BeanCreationException:
- Error creating bean with name 'sessionFactory' defined in ServletContext resource
- [/WEB-INF/applicationContext-forhibernate.xml]: Invocation of init method failed;
- nested exception is java.lang.ClassCastException:
- org.hibernate.validator.event.ValidateEventListener cannot be cast to org.hibernate.event.PreInsertEventListener
- Caused by:
- java.lang.ClassCastException: org.hibernate.validator.event.ValidateEventListener cannot be cast to org.hibernate.event.PreInsertEventListener
- at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:819)
- at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:805)
- at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:745)
- at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:134)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1202)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
这个问题同样很诡异。最后发现是,原因出在Jboss希望大家可以共用自己容器下面的jar,但是如果版本相同的时候还好,但如果版本不一致,就见鬼了。曾经试着整理jar包试其跟Jboss一样,后来才发现是无解的。回到找配置的路上。。。。
花了好多天,找了好多论坛,总算在Jboss论坛下找到了说明,也是我以前用Jboss少,现在贴出这个地址来。 上面详细说明了问题的解决方法。
http://www.jboss.org/community/wiki/ClassLoadingConfiguration
终结一下就是在WEB-INF下面添加一个叫jboss-web.xml的文件,之后使用在里面写上
- <!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN"
- "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
- <jboss-web>
- <class-loading java2ClassLoadingCompliance='true'>
- <loader-repository>
- com.example:archive=unique-archive-name
- <loader-repository-config>
- java2ParentDelegaton=true
- </loader-repository-config>
- </loader-repository>
- </class-loading>
- </jboss-web>
就可以了,这样就不会使用容器的jar了。
二、web下加载配置文件错误。
这个是个小问题就是class.getClassLoader().getResource("/").getPath()无发在jboss5.1下取到目录,而tomcat下跑的很正常。也应该算是一个Jboss的一个bug。 改正方式使用context.getRealPath("/")取出 。
三、ActiveMQ的包放进去会抛异常,应该是我没有使用jboss配置JMS的原因,暂时我先给移除了。等以后会配了在补篇文章 。
终结:
虽然解决了,但总觉得容器迁移很痛苦。明明跑的很好的程序,但还了容器,就跑不了了。很郁闷,解决起来也不好找问题。不能希望容器改变,还是希望自己变的更强些吧。
将项目从tomcat 迁移到JBoss5.0的更多相关文章
- [置顶] 将项目从tomcat 迁移到JBoss
注:针对的是jboss5.0,其它版本没有测试过 ,主要参考了:http://www.diybl.com/course/3_program/java/javajs/20100719/460908.ht ...
- tomcat 迁移到weblogic 问题
问题1: Caused by: java.lang.UnsupportedClassVersionError: com/audaque/datadiscovery/soap/service/impl/ ...
- tomcat 项目迁移到jboss5.1
1.拷贝tomcat\bin目录下两个jar到项目lib 目的:解决jboss java.lang.NoClassDefFoundError: org/apache/juli/logging/LogF ...
- Red5 1.0.0RC1 集成到tomcat6.0.35中运行&部署新的red5项目到tomcat中
1.下载red5-war-1.0-RC1.zip 解压之得到 ROOT.war 文件. 2.处理tomcat. 下载apache-tomcat-6.0.35-windows-x86.zip包,解压到你 ...
- tomcat 8.5.9.0 解决catalina.out过大的问题
先吐嘈一下tomcat这个项目,日志切割这么常见的功能,tomcat这种知名开源项目默认居然不开启,生产环境跑不了几天,磁盘就满了,而且很多网上流传的方法,比如修改conf/logging.prope ...
- JFinal 项目 在tomcat下部署
原文:http://my.oschina.net/jfinal/blog/353062 首先明确一下 JFinal 项目是标准的 java web 项目,其部署方式与普通 java web 项目没有任 ...
- 通过Maven插件发布JaveEE项目到tomcat下
1.修改tomcat\conf\tomcat-users.xml文件,在文件中增加 <role rolename="manager-script"/> <user ...
- ASP.NET项目从VS2008迁移至VS2010或2012编译不过的问题
这次将一个VS2008编写的网站迁移至VS2010或者2012下都编译不通过,统统报相同的错误:缺少System.Linq引用,缺少System.Xml.Linq引用,但是明明有引用啊,引用DLL我都 ...
- Eclipse将项目部署tomcat的webapps目录
Eclipse将项目部署tomcat的webapps目录 >>>>>>>>>>>>>>>>>& ...
随机推荐
- 【穷竭】POJ3187-Backward Digit Sums
[思路] 利用杨辉三角形,每一个数字被加的次数等于它在杨辉三角形中对应的那个数字.注意这道题的意思是,最底层是N的全排序,而不是指1..10都可以.生成杨辉三角形的时候第一次我用了二重循环模拟生成,后 ...
- Problem B: 判断回文字符串
#include<stdio.h> #include<string.h> int huiwen(char *str) //定义回文函数 { //char ch[100]; in ...
- 简单的INI解析封装
简单封装的一个ini解析处理类(支持跨平台).支持功能: 加载并解析指定ini文件中的配置: 读取指定 section 下的指定 key 的值.提示:支持按数值型读取,或按文本类型读取:使用示例: a ...
- [经验]我的电脑只有IE64位浏览器能上网,其他软件都上不了网
[网上案例] 1.“我的电脑是VISTA 系统 昨天还好好的 进早上就显示什么Windows通信端口初始化失败 而且连不上网 求强人帮忙”2.“正常关机,第二天开机后,无法上网了所有浏览器,除了ie6 ...
- 关于智能硬件设备shell安全设计
问题描述: 在对某些智能硬件设备进行测试时,发现有些设备直接提供了Linux shell,并且登录账号默认是root权限!在登录到设备后,在bin目录下可以看到很多命令行程序,这些程序大部门用户用不到 ...
- TDiocpCoderTcpServer 使用
TDiocpCoderTcpServer 使用 uses diocp_coder_tcpServer,utils_zipTools,diocp_tcp_server,diocp_task // 创建T ...
- 利用json2html将json数据填充到html模板
1.下载json2html>> 2.制作好模板.准备好json数据.启动 <!DOCTYPE html> <html> <head> <meta ...
- iOS:quartz2D绘图小项目(涂鸦画板)
介绍:学了quartz2D的绘图知识后,我根据它的一些功能制作了一个小项目:涂鸦画板. 功能:绘制各种图形,还可以选取相册上的照片做涂鸦,然后保存到相册中.其中,还包括功能有:颜色的选取.线宽的选取. ...
- 你以为border-radius只是圆角吗?【各种角度】
border-radius,国内翻译成圆角,你可能以为这个属性就是用来画圆角,没错,但是除此之外,它还可以做点别的事情. radius其实指的是边框所在圆的半径,这个CSS3属性不仅能够创建圆角,还可 ...
- jersey rest webservice
参考官网:https://jersey.github.io/documentation/latest/getting-started.html#new-webapp 创建一个 JavaEE Web A ...