将项目从JBOSS 6 迁移到 JBOSS 7所遇到的问题

以下内容只是以笔记形式记录,以防再次折腾,同时提供一个借鉴:

1、项目中的数据源使用的是JBOSS的JNDI,在6、7两个版本中,配置差别较大,具体配置方法,资料配置较多,我这里不重复说(可参考http://www.tuicool.com/articles/aqI7V3)。在升级到JBOSS 7后,因项目中使用了Oracle的表,需要用到ARRAY,创建这个对象时需要使用OracleConnection,在JBOSS6中是这样转换的

if(conn.isWrapperFor(OracleConnection.class)){
  oraConn= conn.unwrap(OracleConnection.class);
}

但升级到7会发现这个段代码不起作用,本以为要换一种方法,如:

if(conn instanceof WrappedConnection){
  oraConn= (OracleConnection) ((WrappedConnectionJDK6)conn).getUnderlyingConnection();
  }

(或者通过conn.getMetaData().getConnection()获取T4CConnection转型成OracleConnection),

因为使用JBOSS的JNDI获取的Connection实例实际是WrappedConnectionJDK6对象,所以你需要将jboss自带的ironjacamar-jdbc-1.0.9.Final.jar添加到classpath中,但最终你会发现这段代码也是不起作用的,conn instanceof org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6不会成立,如果强制转换会报转型错误:

java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6cannot be cast
 to org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6

,自己不能转自己,很奇怪的东西。根据查找的资料分析,猜测是跟JBOSS 7模块加载有关:假使模块a加载了Test.class这个类(或jar),模块b也加载了一次Test.class(或jar)(这里两个模块的Test.class其实是同一个类文件),但如果你在b模块中获取了a模块里的Test.class实例,你在代码中强制转型成b模块的Test.class,这时就会报出转型错误。

解决的方法是在告知jboss b模块要用到的Test.class(jar)直接使用a模块的Test.class(jar),

具体配置方法是在WEB-INF/jboss-deployment-structure.xml配置文件里添加以下配置:

<dependencies>
<!-- <modulename="org.jboss.ironjacamar.jdbcadapters" slot="main"/>-->
   <module name="com.oracledatabase.oracle"slot="main"/>
</dependencies>

其中注释的org.jboss.ironjacamar.jdbcadapters是如果要转型成org.jboss.jca.adapters.jdbc.WrappedConnectionJDK6的配置,而com.oracledatabase.oracle是我本地的JNDIoracle module.xml中的名字:

<?xml version="1.0"encoding="UTF-8"?>
<modulexmlns="urn:jboss:module:1.0"name="com.oracledatabase.oracle">
 <resources>
<resource-rootpath="ojdbc6.jar"/>
<!—没有的话会乱码-->
   <resource-root path="orai18n.jar"/>
 </resources>
 <dependencies>
   <module name="javax.api"/>
  <module name="javax.transaction.api"/>
  <module name="javax.servlet.api"optional="true"/>
  </dependencies>
</module>

 

这样配置后,代码中的使用的类就会加载成在被依赖模块中的类。这样配置后conn.isWrapperFor(OracleConnection.class)又变成可以使用的了。

2、在jboss 7中的jboss-web.xml不在使用class-loading配置,不然报解析不了的错。参考:

http://www.cnblogs.com/davidwang456/p/3959561.html

3、jboss 7中,jsp使用的本地标签tld文件必须放到WEB-INF中,放到类目录下的META-INF目录会报FileNotFound错。

以上内容只做参考,本人也是刚接触JBOSS

时间: 2024-11-03 03:44:23

将项目从JBOSS 6 迁移到 JBOSS 7所遇到的问题的相关文章

[置顶] 将项目从tomcat 迁移到JBoss

注:针对的是jboss5.0,其它版本没有测试过 ,主要参考了:http://www.diybl.com/course/3_program/java/javajs/20100719/460908.html,在些表示感谢 将项目从tomcat 迁移到JBoss,一般情况下会出现很多问题,下面是相关问题的记录及解决方法.1. (1)首先要新增两个jar包:jboss-as-sprint-int-5.0.0.GA.jar 和 jboss-spring-int-vfs.jar(2)然后在web.xml

Lync 项目经验-04-共存迁移-Lync 2013-TO-SFB 2015-Godaddy-更新公网证书

本系列博文: Lync 项目经验-01-共存迁移-Lync 2013-TO-SFB 2015-规划01http://dynamic.blog.51cto.com/711418/1858520 Lync 项目经验-02-共存迁移-Lync 2013-TO-SFB 2015-规划02http://dynamic.blog.51cto.com/711418/1859143 Lync 项目经验-03-共存迁移-Lync 2013-TO-SFB 2015-完成 http://dynamic.blog.51

Lync 项目经验-01-共存迁移-Lync 2013-TO-SFB 2015-规划01

项目环境: A. 产品 Lync Server 2013. B. 服务器角色 后端服务器.前端服务器.持久聊天服务器.边缘服务器.公网证书(非角色,但重要). C. 服务器角色(未利用) 监控服务器.存档服务器.中介服务器.语音网关.Office Web Apps Server. D. 功能 内部外部手机登录.音频.视频.共享(应用程序.白板.桌面等).文件传输. Lync Server 2013与公共IM联盟MSN.Skype. Lync Server 2013与公共IM企业联盟Lync Se

Lync 项目经验-02-共存迁移-Lync 2013-TO-SFB 2015-规划02

本系列博文: Lync 项目经验-01-共存迁移-Lync 2013-TO-SFB 2015-规划01http://dynamic.blog.51cto.com/711418/1858520 Lync 项目经验-02-共存迁移-Lync 2013-TO-SFB 2015-规划02http://dynamic.blog.51cto.com/711418/1859143 项目规划: 1. 为了后续的高可用,后面所做的所有规划,都是参照这个原则来做. 2. 所有操作系统使用Windows Server

Lync 项目经验-05-共存迁移-Lync 2013-TO-SFB 2015-边缘服务器复制状态不正常

问题: 在Lync Server 2013与Skype for Business Server 2015共存迁移环境中发现边缘服务器复制不正常: 强行复制 还是不正常 将边缘服务器加域,还是不正常. 解决思路: 1. 环境 A.Lync Server 2013 环境:192.168.1.x 前端服务器: 边缘服务器: B.Skype for business Server 2015 环境:192.168.36.x 前端服务器: 边缘服务器: 2. 在Lync Server 2013前端服务器 P

Lync 项目经验-03-共存迁移-Lync 2013-TO-SFB 2015-完成

2016年05月18日,撰写Lync 2013 升级 SFB 2015 v1.2.docx. 2016年07月18日,Skype for Business Server 2015-规划表-2016-07-18.xls,正常开始. 2016年09月30日,完成Lync 2013与SFB 2015共存,及功能测试. 2016年10月01日,正式迁移. 2016年10月12日,迁移后排错,排错完成. 一个项目足足3个月以上,可见项目不是大家说的那简单,很快就搞定. 这3个月,也是平时晚上或者周六日,拼

项目架构优化后迁移阿里云实录

正在上传中---- 大概8月15号完成

GitLab项目批量备份,迁移

一. 创建备份文件 gitlab-rake gitlab:backup:create 使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1547087542_2019_01_10_11.0.3_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1547087542_2019_01_10_11.0.3是备份创建的日期 scp /var/opt/gitlab/backups/1547087542_2019_01_1

JBoss环境搭建及部署Web项目

http://blog.csdn.net/pop303/article/details/7210290 赶在年前学习了一下JBOSS,之前觉得JBOSS相关资料会有很多,不过现在发现很少,在亚马逊出也是很少,只有一个“JBoss实战:服务器配置指南 ”,不过我找到了英文版,有要的可以邮件给大家.我想从不会JBOSS开始进行,到我打包部署到JBOSS后能看到我的HELLO!网页结束的过程. 首先要进行的工作是下JBOSS.JBOSS插件.开发以eclipse为平台,都需要JEE方式. JBOSS,