2017-09-18 17 views
0

私はカスタムInterceptStrategyを使用しています。SOAPレスポンスが成功した後にエラーをスローします。CamelインタセプタとCXFインタセプタとの競合

エラー:java.lang.IllegalStateException:それはorg.apache.catalina.core.AsyncContextImpl.getRequestで と呼ばれてきた(完全)または発送のいずれかの後のGetRequestを()()メソッドを呼び出すことは違法である(AsyncContextImpl .javaファイル:org.springframework.security.web.servletapi.HttpServlet3RequestFactory $ SecurityContextAsyncContext.dispatchでorg.apache.catalina.core.AsyncContextImpl.dispatch(AsyncContextImpl.java:153) で224) (HttpServlet3RequestFactory.java:291) org.apache.cxf.transport.http.Servlet3ContinuationProvider $ Servlet3Continuation.resume(Servlet3ContinuationProvider.java:125) at org.apache.cxf.transport.http.Servlet3ContinuationProvider $ Servlet3Continuation.resume(Servlet3ContinuationProvider.java:13) 1)

public class ApplicationLogStrategy implements InterceptStrategy { 

    @Override 
    public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition, 
      Processor target, Processor nextTarget) throws Exception { 


      return new Processor() { 
       @Override 
       public void process(Exchange exchange) throws Exception { 
        System.out.println("Display" + definition); 
        if (definition.getId().equalsIgnoreCase(ApplicationConstants.INITIAL_LOG)) { 
         //setCommonFields(exchange); 
         //setSpecificFields(exchange); 
        } 
        target.process(exchange); 

       } 
      }; 

    } 
} 

私のラクダのルート:

<camelContext id="id-por" xmlns="http://camel.apache.org/schema/spring"> 
    <route> 
     <!-- route starts from the cxf webservice --> 
     <from uri="cxf:bean:porEndpoint" /> 
     <doTry> 
     <to uri="bean:soapBean?method=processSOAP"/> 
     <bean id="soap_success" method="processSuccess" ref="soapBean"/> 
     <camel:bean id="published_log" method="info('Message - SUCCESS')" ref="logger"/> 
      <doCatch> 
       <camel:exception>java.lang.Exception</camel:exception> 
       <handled> 
        <constant>true</constant> 
       </handled> 
       <to uri="bean:soapBean?method=processGenericError"/> 
     </doCatch> 
     </doTry> 
    </route> 
</camelContext> 

それはメッセージの後にエラーがスローされます "のメッセージ - SUCCESS" が記録されます。 :

<camel:bean id="published_log" method="info('Message - SUCCESS')" ref="logger"/> 

は私が<stop/>が、運を追加し、まだエラーがスローされます:(完全)または発送のいずれかの後のGetRequestを()()メソッド

+0

あなたは何をしようとしていますか、最初に傍受戦略を使用しているのはなぜですか?これは実際には高度なものや非常に特殊なユースケースです。 –

+0

カスタムロギングがあり、部分的なペイロードデータを設定しました。 –

答えて

0

代わりのtarget.process(exchange);

呼び出すことは違法です

ちょうどreturn target;

関連する問題