Spring集成 - 服务激活器被调用两次

时间:2014-03-04 14:59:24

标签: spring-integration

嗨,这是我的弹簧集成配置..当我使用mozilla fire fox rest console两次调用我的服务时。例如,如果我在service-activator(CA请求激活器)中点击某些服务,则可以预测它被调用两次。我不知道它是mozilla问题还是配置问题。我尝试使用新窗口但这个问题仍然存在。在第一种情况下,我的服务激活器正确地返回xml响应但是立即再次调用它。仅在罕见情况下它的召唤两次。

    <int:channel id="accountRequest" />
    <int:channel id="accountResponse" />
    <int:channel id="catRequestChannel" />
    <int:channel id="mataccountRequest" />
    <int:channel id="errorChannel"/>



    <int-http:inbound-gateway id="cwebAccountManagementGateway"     
        supported-methods="GET, POST" 
        request-channel="accountRequest"
        reply-channel="accountResponse" 
        mapped-request-headers="*"      
        mapped-response-headers="*" 
        view-name="/policies" 

        path="/services/{class}/{method}"
        reply-timeout="50000"
error-channel="errorChannel">




        <int-http:header name="serviceClass" expression="#pathVariables.class"/>
        <int-http:header name="serviceMethod" expression="#pathVariables.method"/>

    </int-http:inbound-gateway>


    <int:header-value-router input-channel="accountRequest"
        header-name="state"
        default-output-channel="accountRequest" resolution-required="false">
        <int:mapping value="MA"
            channel="mataccountRequest" />
            <int:mapping value="CA"
            channel="catRequestChannel" />

    </int:header-value-router>

    <int:service-activator id="accountServiceActivator" 
                input-channel="mataccountRequest"
                output-channel="accountResponse" 
                ref="serviceGatewayAdapter" 
                method="requestHandler" 
                send-timeout="60000"/>

        <int:service-activator id="caRequestActivator" 
                input-channel="catRequestChannel"
                output-channel="accountResponse" 
                ref="caServiceGatewayAdapter" 
                method="requestHandler" 
                send-timeout="60000"/>

                 <int:service-activator id="errorRequestActivator" 
                input-channel="errorChannel"
                output-channel="accountResponse" 
                ref="errorGatewayAdapter" 
                method="errorHandler" 
                send-timeout="60000"/>

例如:这是我的网址

http://localhost:9085/springintegrationsample/create?mail=15999999@mail.com&idNumber=80010600010            

如果我将邮件编辑为其他一些值,它将被调用两次 如果我改变agan它工作正常。我不明白它被调用两次的情况

1 个答案:

答案 0 :(得分:0)

您正在使用相同的&#34; requestHandler&#34;对于你的两个服务激活器,所以很明显它会被调用两次。 您无法知道为调试器方法调用哪个激活器,因为在调试时您只能检查被调用的处理程序方法。 为了更好地处理这个问题,请为每个服务激活器使用不同的处理程序方法。即使他们使用类似的操作,它也会更清晰,更容易调试。

我建议添加频道拦截器来记录传入和传出的消息,以便更好地了解。

欢呼声