`

从Tomcat升级到JBoss5.1

阅读更多

从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问题。解决上一个问题后,碰到如下异常。

 

Java代码 复制代码
  1. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lookupDao' defined in ServletContext resource   
  2.  [/WEB-INF/applicationContext-forhibernate.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory';   
  3.  nested exception is org.springframework.beans.factory.BeanCreationException:    
  4.   
  5. Error creating bean with name 'sessionFactory' defined in ServletContext resource    
  6. [/WEB-INF/applicationContext-forhibernate.xml]: Invocation of init method failed;   
  7.  nested exception is java.lang.ClassCastException:   
  8.  org.hibernate.validator.event.ValidateEventListener cannot be cast to org.hibernate.event.PreInsertEventListener   
  9. Caused by:    
  10. org.springframework.beans.factory.BeanCreationException:   
  11.  Error creating bean with name 'sessionFactory' defined in ServletContext resource    
  12. [/WEB-INF/applicationContext-forhibernate.xml]: Invocation of init method failed;   
  13.  nested exception is java.lang.ClassCastException:   
  14.  org.hibernate.validator.event.ValidateEventListener cannot be cast to org.hibernate.event.PreInsertEventListener   
  15. Caused by:    
  16. java.lang.ClassCastException: org.hibernate.validator.event.ValidateEventListener cannot be cast to org.hibernate.event.PreInsertEventListener   
  17.     at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:819)   
  18.     at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:805)   
  19.     at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:745)   
  20.     at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:134)   
  21.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1202)   
  22.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)  
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的文件,之后使用在里面写上

 

Xml代码 复制代码
  1. <!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN"   
  2. "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">  
  3. <jboss-web>  
  4. <class-loading java2ClassLoadingCompliance='true'>  
  5.        <loader-repository>  
  6.            com.example:archive=unique-archive-name   
  7.            <loader-repository-config>  
  8.                java2ParentDelegaton=true  
  9.            </loader-repository-config>  
  10.        </loader-repository>  
  11.   </class-loading>  
  12. </jboss-web>  
<!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的原因,暂时我先给移除了。等以后会配了在补篇文章

 

 

终结:

     虽然解决了,但总觉得容器迁移很痛苦。明明跑的很好的程序,但还了容器,就跑不了了。很郁闷,解决起来也不好找问题。不能希望容器改变,还是希望自己变的更强些吧。

分享到:
评论

相关推荐

    替换两个文件解决Tomcat6项目移植到JBoss5.1下的Logging异常

    除了加入jboss-web.xml,删除xerces-2.6.2.jar和xml-apis.jar之外, &lt;!... &lt;jboss-web&gt; &lt;!-- For load class ...原因是旧版本的slf4j-api不包含以上方法,附件解压后覆盖jboss5.1GA/common/lib下的同名文件即可

    pager-taglib 分页扩展实例

    pager-taglib 是个很好的jsp分页标签,使用它结合jstl可以实现灵活的分页导航功能...2.只在jboss5.1内测试通过,注意检查jdbc驱动包等相关依赖,tomcat可能出现缺包等问题,相信入门级别的朋友们应该可以找到解决方案的

    DisplayTag1.2 扩展(自定义分页、排序、导出、页面导航)

    DisplayTag是个很好的jsp标签,目前最新版本为1.2,支持了自定义分页,解决了之前...3.只在jboss5.1内测试通过,注意检查jdbc驱动包等相关依赖,tomcat可能出现缺包等问题,相信入门级别的朋友们应该可以找到解决方案的

    电子拍卖系统java 源码

    推荐使用JBoss 5.1 GA系列作为应用服务器。 3. 将auction-ds.xml复制到%JBOSS_HOME%\server\default\deploy目录下,该文件在JBoss服务器上配置数据源 将AuctionQueue-service.xml文件复制到%JBOSS_HOME%\server\...

    Jboss集群配置指南

    2. Tomcat配置 6 3. Jboss配置 6 3.1. 配置Session复制 6 3.2. 配置Clustering services 6 3.3. 配置TreeCache cluster service 7 4. 设置run 参数 7 5. Web client 7 5.1. web.xml 7 5.2. jboss-web.xml 7 5.3. ...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.1.2. 在Tomcat 服务器上运行示例.......................................................................................................................... 15 1.1.3. 运行测试..............................

    在weblogic上配置数据源.png

    这个是weblogic9.0+mysql5.1的环境下配置数据源详细步骤。 其实在tomcat,jboss,WebSphere等服务期中都提供了配置数据源的功能,大概的配置都很类似。

    上传文件原代码

    使用JDK1_5 MyEclipse5.1 JBoss4和Tomcat5实现文件上传,过程原代码.要想知道怎么在MyEclipse里写代码.你就看他吧?

    kgshop金刚网店系统 v3.0.2

    Tomcat 6.0.33/7 jboss 6/7编译Java SDK版本:jdk1.7.0_10 linux 64位IDC JAVA主机:需支持Struts,hibernate3,mysql内存要求:512M以上KgShop V3.0.2更新1)改进blue默认模板2)清除冗多模块,app包更小,下载更快...

    KgShop金刚网店系统 v3.0.2.rar

    Tomcat 6.0.33/7 jboss 6/7 编译Java SDK版本:jdk1.7.0_10 linux 64位 IDC JAVA**:需支持Struts,hibernate3,mysql 内存要求:512M以上 KgShop V3.0.2更新 1)改进blue默认模板 2)清除冗多模块,app包更小,...

    积分管理系统java源码-traffic:智能交通站务管理系统

    (6)、接口部署:≥Tomcat8、Jboss等; ###系统特色: (1)、前端界面经典Ribbon样式自适应,外观显示、字体等用户可自定义,win7\win10系统下完美运行; (2)、客户端为C/S架构,操作灵活方便人机交互性强,硬件设备易...

    jBPM4.3用户指南

    1.6. 从jBPM 3升级到jBPM 4 1.7. 报告问题 2. 安装配置 2.1. 发布 2.2. 必须安装的软件 2.3. 快速上手 2.4. 安装脚本 2.5. 依赖库和配置文件 2.6. JBoss 2.7. Tomcat 2.8. Signavio基于web的流程编辑器 ...

    JBPM4.4用户手册.doc

    1.6. 从jBPM 3升级到jBPM 4 1.7. 报告问题 2. 安装配置 2.1. 发布 2.2. 必须安装的软件 2.3. 快速上手 2.4. 安装脚本 2.5. 依赖库和配置文件 2.6. JBoss 2.7. Tomcat 2.8. Signavio基于web的流程编辑器 2.9. 用户web...

    java学习阶段所有的API帮助文档

    JspSmartUpload,JSP基础语法帮助,JUnit4.1_帮助文档,log4j 1.2.14,Microsoft Jet SQL参考,MySQL 5.1参考手册,MySQL使用,PostgreSQL 8.0.0 中文文档,Servlet2.3-帮助文档,Spring Security安全权限管理手册,...

    揭开J2EE集群的面纱 pdf

    4.2.4.WebLogic, WebSphere, JBoss的方案:结对服务器(Paired servers)复制 4.2.5.IBM的方案:集中状态服务器 4.2.6.Sun的方案:专用服务器 4.2.7.性能问题 4.2.7.1.何时备份会话 4.2.7.2.备份颗粒度 4.2.8.其他的...

    JBPM4工作流应用开始指南.rar

    26 2.3 安装脚本详解 27 2.3.1 关于配置文件 30 2.3.2 关于依赖库 31 2.4 安装到JBoss 31 2.5 安装到Tomcat 32 2.6 基于Web的Signavio流程设计器 33 2.6.1 jBPM Web流程设计器简介 33 2.6.2 独立安装Signavio 34 ...

    开源软件之道(中文高清版)

    5.1 管理体制 5.2 法律风险 5.2.1 法律因素之著作权 5.2.2 法律因素之许可证 5.2.3 法律因素之专利 5.2.4 问题解析 5.2.5 验证著作权,正本清源 5.2.6 调查专利,借力打力 5.2.7 解读许可证,明察秋毫 5.3 成熟度 ...

    Web安全深度剖析(张柄帅)

    《Web安全深度剖析》从攻到防,从原理到实战,由浅入深、循序渐进地介绍了Web 安全体系。全书分4 篇共16 章,除介绍Web 安全的基础知识外,还介绍了Web 应用程序中最常见的安全漏洞、开源程序的攻击流程与防御,并...

    《MyEclipse 6 Java 开发中文教程》前10章

    1.4 JBoss 服务器的下载,安装和运行(可选) 28 1.5 MySQL 5数据库服务器下载,安装和运行(可选) 31 1.5.1 MySQL 5 官方版本的下载和安装,运行 32 1.5.2 MySQL 5绿色版的下载安装和运行 32 1.5.2.1 下载 32 1.5....

Global site tag (gtag.js) - Google Analytics