2013-03-04 51 views
3

我創建了一個WS-BPEL流程將調用一個異步Web服務,並等待回調響應丟失。碳應用也成功部署到BPS中。在我的外部異步Web服務的ReplyTo屬性中的SOAPHeader

詳細
1.它需要通過HTTP基本身份驗證。
2.它需要肥皂信封中可用的肥皂標題。
3.它會處理請求併發送一個回調到它在肥皂標題中收到的ReplyTo地址,並使用MessageID關聯回調。

deploy.xml文件BPEL流程看起來像這樣...

<?xml version="1.0" encoding="UTF-8"?> 
<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03" 
    xmlns:callback.integration.service="http://callback.integration.service/" 
    xmlns:epr="http://wso2.org/bps/bpel/endpoint/config" 
    xmlns:sample="http://wso2.org/bps/sample" 
    xmlns:ws.integration.service="http://ws.integration.service/"> 
    <process name="sample:Test"> 
     <active>true</active> 
     <retired>false</retired> 
     <process-events generate="all"/> 
     <provide partnerLink="client"> 
     <service name="sample:Test" port="TestPort"/> 
     </provide> 
     <provide partnerLink="IntegrationService"> 
     <service name="callback.integration.service:IntegrationCallback" port="IntegrationResponsePort"/> 
     </provide> 
     <invoke partnerLink="IntegrationService"> 
     <service name="ws.integration.service:IntegrationService" port="IntegrationRequestPort"> 
      <epr:endpoint endpointReference="IntegrationService.epr"/> 
     </service> 
     </invoke> 
    </process> 
</deploy> 

IntegrationService.epr文件看起來像這樣...

<wsa:EndpointReference 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.w3schools.com uep_schema.xsd" 
     xmlns:wsa="http://www.w3.org/2005/08/addressing" 
     xmlns:wsdl11="http://schemas.xmlsoap.org/wsdl/"> 
    <wsa:Address>http://http://server:8080/integration/IntegrationService</wsa:Address> 
    <wsa:Metadata> 
     <id>SInvokeEPR</id> 
     <qos> 
     <enableAddressing /> 
     </qos> 
     <transport type="http"> 
     <authorization-username>username</authorization-username> 
     <authorization-password>password</authorization-password> 
     </transport> 
    </wsa:Metadata> 
</wsa:EndpointReference> 

現在,當我從碳服務管理控制檯測試bpel進程,但確實收到了對我的異步Web服務的請求。然而,肥皂信封看起來如下,它缺少一個適當的ReplyTo地址發送回調。

<?xml version='1.0' encoding='UTF-8'?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
     <wsa:To>http://server:8080/integration/IntegrationService</wsa:To> 
     <wsa:ReplyTo> 
      <wsa:Address>http://www.w3.org/2005/08/addressing/none</wsa:Address> 
     </wsa:ReplyTo> 
     <wsa:MessageID>urn:uuid:91ac4ebd-b100-440e-a01d-c4a5c0d8a56f</wsa:MessageID> 
     <wsa:Action>http://ws.integration.service/IntegrationRequestPortType/createTask</wsa:Action> 
    </soapenv:Header> 
    <soapenv:Body> 
     ... 
    </soapenv:Body> 
</soapenv:Envelope> 

現在我的需求是用回調回復此請求。回調肥皂信封將包含此MessageID,以便回調與正確的流程實例相關聯。

你如何得到正確的ReplyTo地址附加到肥皂頭?

+0

我正在使用BPS版本3.0.0並使用最新的WSO2 Developer Studio版本。我已經做了BPEL過程acording爲[由阿齊茲這裏]提供的樣品(http://blog.afkham.org/2012/05/ws-bpel-spec-sample-using-wso2-bps.html) – 2013-03-04 11:51:33

+0

我得到了與WS-BPEL相關集相關的相關性。不知何故基於ws-Addressing的關聯不起作用。 – 2013-03-15 04:49:22

回答

0

如果我認爲正確的使用WSO2 BPS(或與Apache ODE的東西),你可以使用這個副本的分配由手工來設置頭。 (http://ode.apache.org/extensions/headers-handling.html

<bpel:copy> 
    <bpel:from> 
    <bpel:literal> 
    <wsa:ReplyTo xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <Address>http://localhost:9763/services/SIServerCallback</Address> 
    </wsa:ReplyTo> 
    </bpel:literal> 
</bpel:from> 
<bpel:to variable="ServiceInvokerIARequest" header="ReplyTo"> 
</bpel:to> 
</bpel:copy>