WebLogic 10.3.6與JDK 1.7的兼容問題

最近將weblogic(wlserver_10.3)裝在jdk1.7上面發現以前的應用不可以deploy上去了,總是報錯java

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

一開始覺得是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包apache

javax.annotation_1.0.0.0_1-0.jaroracle

javax.xml.bind_2.1.1.jaride

javax.xml.ws_2.1.1.jarui

拷貝到%JAVA_HOME%/jre/lib/endorsed(若是沒有請建立)下既能夠解決weblogic與jdk1.7之間的兼容問題。
code

出現這一狀況的緣由是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/

server

相關文章
相關標籤/搜索