1. 程式人生 > >WebService報錯javax xml ws soap SOAPFaultException javax xml

WebService報錯javax xml ws soap SOAPFaultException javax xml

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

一、發現問題
JAX-WS規範是一組XML web services的JAVA API。JAXWS-RI是其的一個包。
用jaxws-ri-2.2.5.zip做webservice,將jaxws-ri-2.2.5.zip中lib內容拷貝到web project的lib中,執行時使用該包時丟擲異常:javax.xml.ws.soap.SOAPFaultException: javax.xml.ws.WebFault.messageName() Ljava/lang/String。


二、原因分析
JAXWS-RI包中使用了WebFault物件,JDK也提供該物件,但JDK的WebFault物件沒有messageName這個方法,Tomcat會優先載入JDK裡的物件,這就是包衝突問題。

這就需要建立endorsed資料夾。可理解為將endorsed資料夾裡的包修打入到虛擬機器指定的啟動API中取而代之。但能夠覆蓋的類是有限的,如不包括java.lang包中的類。例如在jdk\jre\lib建立的endorsed資料夾裡的包會覆蓋該JDK的lib中原有的包。Tomcat裡的Webfault物件也和JAXWS-RI衝突。故需要在JDK和Tomcat裡面都要新建endorsed資料夾,放入JAXWS-RI裡的相關包。


三、解決方案

步驟一:將jaxws-api.jar包copy到jdk的jre\lib\endorsed
步驟二:將jaxws-api.jar和jsr181-api.jar包copy到tomcat\endorsed中
若沒有endorsed資料夾,新建即可。jaxws-ri.2.5.5下載地址:http://download.csdn.net/download/woshixuye/6513149

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述