0

请帮助我解决此错误。我有一个肥皂客户端通过 3 次操作调用该服务。所以在flow1中我设置了会话变量来存储操作。在 flow2 中,我使用set 属性来访问这些变量,以作为cxf:jaxws-client 之前的出站消息属性。如此链接中所述:mule 动态设置soap 操作,但我收到异常,例如“创建 QName 时本地部分不能为“null””。

我通过在设置属性后保留记录器来进行监控。可以通过出站消息属性中的值查看操作。不知道为什么值没有放在soap操作字段中。请找到我的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>

我没有设置肥皂操作,因为我已经设置了属性。我仍然遇到错误。任何人都可以帮助解决这个问题。但是当我手动输入操作名称时。可以看到回复。

4

3 回答 3

0

创建 QName 时出现“本地部分不能为“null”之类的异常”

operation您设置的属性应该是javax.xml.namespace.QName. 因此,您需要从中提取名称空间 URI 和本地部分sessionVars.cxf_operation并在.set-propertycxf:jaxws-client

这假定sessionVars.cxf_operation是 的形式{namespaceURI}localPart。如果不是这种情况,并且它实际上只包含 ,localPart那么您将不得不在QName构造函数中硬编码命名空间 URI,使用定义所有操作的唯一命名空间。

于 2013-10-25T15:21:06.873 回答
0

operationCXF jaxws-client的属性在cxf:jaxws-client元素标记内时被采用。所以你可以operationcxf:jaxws-client标签中声明。

第二件事是operationcxf:jaxws-client 中的属性无法评估Mule Expression Language。所以它不能采用 MEL 表达式。它只能接受字符串。这就是当您手动键入而不是动态加载时它正在工作的原因。

如果报告了任何此类问题,请检查 Mule Jira。

骡子吉拉

于 2013-10-24T15:00:32.803 回答
0

只需在 cxf:jaxws-client 之前使用它

<set-variable value="#[message.inboundProperties['operation']]" variableName="operation" />
于 2015-10-16T13:03:59.547 回答