2015-03-02 135 views
4

我的java webapp使用CXF發佈一些帶有SOAP 1.1的Web服務。如何避免消息:CXF操作getFaultSubCodes不受SOAP 1.1支持

在我的服務器日誌(Apache Tomcat上catalina.out的文件),我得到的出現: 墳墓:不支持SOAP 1.1

這些日誌行的每一個web應用程序的Java業務代碼拋出時發生操作getFaultSubcodes:SAAJ0303 javax.xml.ws.soap.SOAPFaultException的一個實例。此異常由Apache CXF org.apache.cxf.jaxws.interceptors.WebFaultOutInterceptor處理,它調用SOAPFault實例上的getFaultSubcodes。

使用SOAP 1.1 SOAPFault,對getFaultSubcodes的調用將引發由CXF捕獲的UnsupportedOperationException,但SOAPFault的實現類會記錄消息。是否有SOAP 1.1特定的CXF故障攔截器?

有誰知道一種方法來避免CXF調用不受支持的GetFaultSubcodes操作?

+0

您是否設法找到此解決方案?我有同樣的問題。 – themik81 2016-06-15 15:29:43

+0

親愛的上帝,請halp – 2017-05-26 15:21:25

+0

@SimplyCraig,我剛剛添加了一個答案 – sm4rk0 2017-09-06 12:18:39

回答

2

Here'SA很好的解釋和here的報道,7月25日有關(解決)問題,2017年

您至少有這兩種解決方案:

  1. 如果創建SOAP錯誤在您的代碼中,在實例化用於創建故障的工廠時傳遞協議版本1.2。 來自OP評論的注意事項:如果使用此解決方案,您可能需要在實例化SOAPFaultException時修改SOAP faultCode字段值。 SOAP 1.1和1.2對於faultCode字段具有不同的值。

SOAPFactory fac = SOAPFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);

  • 如果可以,使用較新版本CXF - 至少3.0.15,3.1.13或3.2.0。 (全部於2017年9月11日發佈)
  • +1

    感謝您鏈接到apache cxf庫中報告和修復的問題。 請注意,如果使用第一個解決方案:「傳遞協議版本1.2」,則可能需要在實例化SOAPFaultException時修改soap faultCode字段值。 SOAP 1.1和1.2對於faultCode字段有不同的值 – 2017-12-13 09:48:18

    +0

    感謝您的注意。用它更新了答案,並添加了新版本現在可用的事實。 – sm4rk0 2017-12-13 10:41:48

    相關問題