2013-10-24 55 views
0

請幫我在這個錯誤。我有一個肥皂客戶端調用3個操作的服務。因此,在flow1中,我將會話設置爲可變以存儲操作。並且在flow2中,我使用設置屬性來訪問這些變量作爲出站消息屬性之前的cxf:jaxws-client。正如在這個鏈接描述:mule dynamically setting soap operation但我收到異常像「本地部分不能爲空」創建QName時「。騾ESB-錯誤動態設置肥皂操作騾

我通過在設置屬性後保持記錄器進行監視。能夠使用出站消息屬性中的值查看操作。不知道爲什麼值不放在soap操作field.Please找到我的XML配置。

  <flow name="Flow1" doc:name="eFlow" tracking:enable-default-events="false"> 
      <wmq:inbound-endpoint queue="InputQ" connector ref="WMQ_Connector" doc:name="connector"> 
      <wmq:transaction action="NONE"/> 
      </wmq:inbound-endpoint> 
      <set-session-variable variableName="cxf_operation" 
     value="#[xpath('fn:local-name(/root/*[2])')]" doc:name="Set_Operation" /> 
      <some logic here.../> 
     </flow> 

     <flow name="Service_call" doc:name="Service"> 
     <set-property propertyName="operation" value="#[sessionVars.cxf_operation]" 
     doc:name="Property" /> 
     <logger message="***outbound properties: #[message.outboundProperties]***" level="INFO" doc:name="Logger"/> 
<cxf:jaxws-client enableMuleSoapHeaders="true" doc:name="SOAP" serviceClass="com.valid.ICase"/> 
    <http:outbound-endpoint exchange-pattern="request-response" 
       method="POST" doc:name="HTTP"   address="http://localhost:8085/callingService" /> 
    <some logic here.../> 
    </flow> 

我沒有設置肥皂操作,因爲我設置了屬性。我仍然有錯誤。任何人都可以提供幫助。 但是,當我手動鍵入操作名稱。能夠看到迴應。

+0

你能告訴你的有效載荷? –

回答

0

CXF jaxws客戶端的屬性operation位於cxf:jaxws-client元素標記內時獲取。 因此,您可以在cxf:jaxws-client標籤中聲明operation

第二件事是cxf中的operation屬性:jaxws-client無法評估Mule Expression Language。所以它不能採取MEL表達式。它只能使用String。這是它在手動輸入而不是動態加載時正在工作的原因。

如果有任何此類問題報告,請檢查Mule Jira。

Mule Jira

0

我越來越喜歡例外「創建一個QName當‘

operation屬性你設置應該是javax.xml.namespace.QName’本地部分不能是」空。因此,您需要從sessionVars.cxf_operation中提取名稱空間URI和本地部分,並在cxf:jaxws-client之前使用set-property中的this QName constructor

這裏假定sessionVars.cxf_operation的形式是{namespaceURI}localPart。如果情況並非如此,並且它實際上只包含localPart,那麼您必須使用有希望唯一的名稱空間(其中定義了所有操作)來硬編寫QName構造函數中的名稱空間URI。

0

CXF之前只是用它:JAXWS客戶端

<set-variable value="#[message.inboundProperties['operation']]" variableName="operation" />