以下內(nèi)容只是以筆記形式記錄,以防再次折騰,同時(shí)提供一個(gè)借鑒:
1、項(xiàng)目中的數(shù)據(jù)源使用的是JBOSS的JNDI,在6、7兩個(gè)版本中,配置差別較大,具體配置方法,資料配置較多,我這里不重復(fù)說(可參考http://www.tuicool.com/articles/aqI7V3)。在升級(jí)到JBOSS 7后,因項(xiàng)目中使用了Oracle的表,需要用到ARRAY,創(chuàng)建這個(gè)對(duì)象時(shí)需要使用OracleConnection,在JBOSS6中是這樣轉(zhuǎn)換的
if(conn.isWrapperFor(OracleConnection.class)){ oraConn= conn.unwrap(OracleConnection.class); },
但升級(jí)到7會(huì)發(fā)現(xiàn)這個(gè)段代碼不起作用,本以為要換一種方法,如:
if(conn instanceof WrappedConnection){ oraConn= (OracleConnection) ((WrappedConnectionJDK6)conn).getUnderlyingConnection(); },
(或者通過conn.getMetaData().getConnection()獲取T4CConnection轉(zhuǎn)型成OracleConnection),
因?yàn)槭褂肑BOSS的JNDI獲取的Connection實(shí)例實(shí)際是WrappedConnectionJDK6對(duì)象,所以你需要將jboss自帶的ironjacamar-jdbc-1.0.9.Final.jar添加到classpath中,但最終你會(huì)發(fā)現(xiàn)這段代碼也是不起作用的,conn instanceof org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6不會(huì)成立,如果強(qiáng)制轉(zhuǎn)換會(huì)報(bào)轉(zhuǎn)型錯(cuò)誤:
java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6cannot be cast to org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6,自己不能轉(zhuǎn)自己,很奇怪的東西。根據(jù)查找的資料分析,猜測(cè)是跟JBOSS 7模塊加載有關(guān):假使模塊a加載了Test.class這個(gè)類(或jar),模塊b也加載了一次Test.class(或jar)(這里兩個(gè)模塊的Test.class其實(shí)是同一個(gè)類文件),但如果你在b模塊中獲取了a模塊里的Test.class實(shí)例,你在代碼中強(qiáng)制轉(zhuǎn)型成b模塊的Test.class,這時(shí)就會(huì)報(bào)出轉(zhuǎn)型錯(cuò)誤。
解決的方法是在告知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是如果要轉(zhuǎn)型成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"/> <!—沒有的話會(huì)亂碼--> <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>這樣配置后,代碼中的使用的類就會(huì)加載成在被依賴模塊中的類。這樣配置后conn.isWrapperFor(OracleConnection.class)又變成可以使用的了。
2、在jboss 7中的jboss-web.xml不在使用class-loading配置,不然報(bào)解析不了的錯(cuò)。參考:
http://www.cnblogs.com/davidwang456/p/3959561.html
3、jboss 7中,jsp使用的本地標(biāo)簽tld文件必須放到WEB-INF中,放到類目錄下的META-INF目錄會(huì)報(bào)FileNotFound錯(cuò)。
以上內(nèi)容只做參考,本人也是剛接觸JBOSS
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享文章:將項(xiàng)目從JBOSS6遷移到JBOSS7所遇到的問題-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://www.rwnh.cn/article8/ceipop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站制作、企業(yè)建站、全網(wǎng)營(yíng)銷推廣、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容