WebService報錯javax.xml.ws.soap.SOAPFaultException: javax.xml.ws.WebFault.messageName()
一、發現問題
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下載地址:https://download.csdn.net/download/woshixuye/6513149
最後更新:2017-04-03 14:54:04
上一篇:
android PopupWindow例子(代碼片段)
下一篇:
[劍指Offer]10.旋轉數組的最小數字
MaxCompute有關優化複雜數據分布的實踐
Android開發6——布局中的wrap_content和fill_parent以及match_parent
java中線程池的使用(ThreadPoolExecutor)
為什麼華爾街不會成為中國人的地盤
java中泛型學習1之類型通配符(?)
物聯網技術在工業領域的主要應用
bootstrap html5 java 整合redis 緩存 SSM 後台框架 rest接口 shiro druid maven
如何用CSS畫三角形
Java基礎知識——SDK、JDK、JRE、JVM、JDT、CDT等之間的區別與聯係
阿裏雲推薦碼-阿裏雲幸運券-服務器八折優惠教程