WebLogic 10.3.6與JDK 1.7的兼容問題

最近將weblogic(wlserver_10.3)裝在jdk1.7上面發現之前的應用不能夠deploy上去了,老是報錯

java.lang.ClassCastException: weblogic.wsee.jaxws.spi.WLSEndpoint cannot be cast to org.apache.cxf.jaxws.EndpointImpl

一開始以爲是cxf與jdk1.7不兼容引起的,CXF官網上也沒有明確說明它與jdk1.7的兼容性。最後還是在weblogic的官方文檔(http://docs.oracle.com/cd/E23943_01/doc.1111/e14142/jdk7.htm)上找到了答案,原來weblogic g11明確指出了它與jdk1.7的兼容問題,提出瞭解決方案:將weblogic安裝目錄下%WL_HOME%/modules下的三個jar包

javax.annotation_1.0.0.0_1-0.jar

javax.xml.bind_2.1.1.jar

javax.xml.ws_2.1.1.jar

拷貝到%JAVA_HOME%/jre/lib/endorsed(如果沒有請創建)下既可以解決weblogic與jdk1.7之間的兼容問題。

出現這一情況的原因是Java Endorsed Standards Override Mechanism這一機制的存在。簡單來說就是Java開放了一些類和接口來允許第三方自由實現,提高了自定義和靈活性。這些類和接口包括JAXP(XML processing),JAXB(XML binding)等。拿WebService API來舉例,Java自身有一套實現機制,而例如WebLogic也有自己的實現機制,當JDK升級後兩套機制不能夠兼容會出現如上的問題。解決方法很簡單,就是讓JDK也使用WebLogic的WebService機制,將相應的jar包放入jdk默認的endorsed目錄下即可。具體的原理和其他可重寫的接口見http://docs.oracle.com/javase/6/docs/technotes/guides/standards/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章