中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

將項目從JBOSS 6 遷移到 JBOSS 7所遇到的問題

發布時間:2020-07-05 14:58:22 來源:網絡 閱讀:1076 作者:chenlesheng 欄目:關系型數據庫

以下內容只是以筆記形式記錄,以防再次折騰,同時提供一個借鑒:

 

1、項目中的數據源使用的是JBOSSJNDI,在67兩個版本中,配置差別較大,具體配置方法,資料配置較多,我這里不重復說(可參考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),

因為使用JBOSSJNDI獲取的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.classjar)直接使用a模塊的Test.classjar),

具體配置方法是在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

 

 

3jboss 7中,jsp使用的本地標簽tld文件必須放到WEB-INF中,放到類目錄下的META-INF目錄會報FileNotFound錯。

 

以上內容只做參考,本人也是剛接觸JBOSS


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邹城市| 桂平市| 西吉县| 湾仔区| 安远县| 江山市| 泰顺县| 东光县| 称多县| 龙州县| 五常市| 南投市| 寿阳县| 会昌县| 儋州市| 苏尼特左旗| 盐池县| 定兴县| 安徽省| 剑川县| 都兰县| 河间市| 宣武区| 民和| 微博| 丰宁| 原阳县| 改则县| 扬中市| 兴文县| 彰化县| 彭山县| 潮安县| 密山市| 科技| 吉林市| 延庆县| 迁安市| 浪卡子县| 寿光市| 若羌县|