0

艾希什又来了。

我开发了一个路由来解析传入的 SOAP 请求并记录请求中的一些信息。我使用标头和 XPATH 从 SOAP 服务请求中获取信息。该路由成功解析并记录了适当的信息。

路线如下:

 <route streamCache="true">

        <from uri="<some URI>"/>  

        <setHeader headerName="SOAPAction">
            <constant>http://www.something.com/constant>
        </setHeader>

         <setHeader headerName="actionId">
            <xpath resultType="java.lang.String">//ws:actionId/text()</xpath>
          </setHeader>


    <choice>

            <when>
                <xpath>//ws:actionId = '1'</xpath>
                <to ref="callService" />                   
            </when>

            <otherwise>

                <log message="Wrong Action ID : ${in.headers.actionId}" 
                          loggingLevel="ERROR"/>                  

            </otherwise>   

        </choice>

    </route>

根据逻辑,如果 actionId 为 1,路由必须重定向到 callService URI,否则它应该记录错误的 action Id 而没有任何响应。

如果 actionId 为 1,则该逻辑有效,它重定向到 callService 并向调用者发送适当的响应。如果 actionId 不是 1,它会使用操作 ID 写入有关错误操作 ID 的日志,但它会向调用者发送相同的请求作为响应。

我使用soapUI和Java Socket Programming对其进行了检查。但是输出是相同的,准确地记录了actionId,但是向调用者发送了相同的请求作为响应。

我不希望与响应相同的请求。响应必须为空白。

任何人都可以帮我找到解决方案。

问候,

阿什什

4

1 回答 1

0

在这种情况下,您还需要将响应设置为或空对您意味着什么。并且响应需要符合 WSDL 合同的响应可以是什么。

所以在另外添加代码来设置空响应例如:

<otherwise>
    ...
    <transform>
      <constant>NO DATA</constant>
    </transform>
 </constant>

虽然也介意如果你使用 camel-cxf 那么 dataFormat 选项会影响应该如何创建一个空响应。

于 2013-01-04T08:29:47.677 回答