将项目从JBOSS6迁移到JBOSS7所遇到的问题-创新互联

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

创新互联建站服务项目包括南岸网站建设、南岸网站制作、南岸网页制作以及南岸网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,南岸网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到南岸省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

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配置文件里添加以下配置:

   

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

                      

这样配置后,代码中的使用的类就会加载成在被依赖模块中的类。这样配置后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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:将项目从JBOSS6迁移到JBOSS7所遇到的问题-创新互联
网站路径:http://myzitong.com/article/ceipop.html