2013-03-21 35 views
1

我在4.5.1和4.6中部署了完全相同的WS代理。隨着4.5.1它工作正常,但與4.6,我得到:訪問WSO2 ESB 4.6中發佈的WS代理時出錯:未找到EPR

ERROR - AxisEngine The endpoint reference (EPR) for the Operation not found is /services/registro.registroHttpSoap11Endpoint and the WSA Action = . If this EPR was previously reachable, please contact the server administrator. 

來源如下:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="registro" transports="http" statistics="disable" trace="disable" startOnLoad="true"> 
    <target> 
    <outSequence> 
     <send/> 
    </outSequence> 
    <endpoint> 
     <address uri="http://localhost:15080/SIGEM_RegistroPresencialWS/services/ServicioRegistroWebService"/> 
    </endpoint> 
    </target> 
    <publishWSDL uri="http://localhost:15080/SIGEM_RegistroPresencialWS/services/ServicioRegistroWebService?wsdl"/> 
    <description></description> 
</proxy> 

什麼我有4.6做。使其工作?

Thanx。

+0

用ngrep比較確切的請求我可以觀察到我的客戶端(python suds)使用soap1.1端點但發送了SOAPAction「」。 「Try it」客戶端爲SOAP 1.1端點發送正確的SOAPAction,並且不從SOAP 1.2端點發送SOAPAction。可能是因爲這是泡沫問題,但是與4.5.1一起使用也可以直接使用。可能它是一個WSDL問題? – erny 2013-03-21 13:25:02

回答

8

爲了增強ESB性能,直通傳輸從ESB 4.6.0版本開始默認啓用,而ESB 4.5.1並非如此。看起來您的代理服務依賴於基於SOAP體的調度,但傳遞傳輸不支持基於SOAP體的調度。基於SOAP體的調度會構建消息主體並使用第一個元素的本地名稱來分派哪個效果,從而嚴重影響代理性能,這是它在傳遞傳輸中不受支持的原因。我們正在爲未來的ESB版本解決這一限制而不失去任何傳遞傳輸優勢。

順便說一句,您可以使用以下解決方法之一。

  1. 當發送消息到代理服務追加操作名稱到端點URL

    如 - http://serverName/app/serviceName/operationName

  2. 修改客戶端級別的代碼發送預期的SOAPAction值(如嘗試,它的情況下)

  3. 我不確定您的後端服務的WSDL定義爲「SOAPAction」的值,如果是這種情況,您可以將後端服務修改爲除「」之外的每個操作的值。作爲JAX-WS服務的一個示例,您可以使用@WebMethod註釋來實現此目的。

如 - @WebMethod(動作= 「XXXX」)

注:在情況下,如果你的後端WSDL定義除 「」 爲SOAPAction的,而你的客戶端發送消息的SOAPAction = 「以外的值」,然後這是客戶違反服務合同的情況,需要在客戶端進行修正。

+0

嗨。感謝您的回答。 – erny 2013-03-24 19:43:04

+0

我做了2,並且它工作正常。 1.也似乎是一個很好的解決方案,但我必須改變每個操作的位置。這可能需要爲我使用的每個不同操作使用一個SOAP客戶端實例(這是不理想的)。 對於3.,我無法更改使用空SOAPActions的原始產品,如您在3中所述,但我可以使用SOAPActions發佈自定義WSDL。 – erny 2013-03-24 21:03:01

0

我已經遇到了與wso2 ESB 4.7相同的問題,並且web服務也是由我爲公司開發的。

什麼工作對我來說是增加的soapAction屬性WSDL 肥皂:操作元素像下面。

<soap:operation soapAction="http://localhost:8080/MyWebApp/services/hello" style="document"/>