在WSO2 ESB中还原任务类

时间:2015-07-22 09:40:39

标签: class soap proxy wso2 wso2esb

当我在WSO2 ESB中使用任务时,它始终会为每个Web服务返回相同的错误:

“无法处理请求。无法识别操作'(mySoapAction)'”

其中(mySoapAction)是用于每个操作的每个SOAP操作,用于我用于任务实现的每个代理服务。 我该怎么做才能解决这个错误?我认为org.apache.synapse.startup.tasks.MessageInjector中的任务类错误。 Obvoiusly任务实现是正确的,因为前一天相同的任务完全正常。建议?

1 个答案:

答案 0 :(得分:1)

以下是天气网络服务(http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL

的示例

代理服务:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="TestSOF"
       transports="https http"
       startOnLoad="true"
       trace="disable">
   <target>
      <endpoint>
         <wsdl service="Weather"
               port="WeatherSoap12"
               uri="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"/>
      </endpoint>
      <outSequence>
          <log level="full"/>
          <property name="OUT_ONLY" value="true"/>
          <property name="transport.vfs.ReplyFileName" value="weather.xml" scope="transport"/>
          <send>
            <endpoint>
                <address uri="vfs:file:///E:/temp"/>
            </endpoint>
          </send>
      </outSequence>
   </target>
   <publishWSDL uri="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"/>
</proxy>

任务:

<?xml version="1.0" encoding="UTF-8"?>
<task xmlns="http://ws.apache.org/ns/synapse"
      name="TestSOFTask"
      class="org.apache.synapse.startup.tasks.MessageInjector"
      group="synapse.simple.quartz">
   <trigger count="1" interval="1"/>
   <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks"
             name="proxyName"
             value="TestSOF"/>
   <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks"
             name="soapAction"
             value="http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP"/>
   <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="message">
      <weat:GetCityWeatherByZIP xmlns:weat="http://ws.cdyne.com/WeatherWS/">
         <weat:ZIP>11010</weat:ZIP>
      </weat:GetCityWeatherByZIP>
   </property>
   <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks"
             name="format"
             value="soap12"/>
   <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks"
             name="injectTo"
             value="proxy"/>
</task>

安排任务,您将在文件名weather.xml

中找到服务响应

如果您想从soap12更改为soap11:

  • 更改属性的值&#34;格式&#34;在任务def中: soap11
  • 使用端口&#34; WeatherSoap &#34;更改代理服务中的端点def。而不是&#34; WeatherSoap12&#34;

希望它能帮助你找到你的错误...