2016-10-11 8 views
0

私はラクダルートをユニットテストしようとしています。ルートの呼び出しが成功した後、テストコードから404を取得しています。テストからレスポンスを読み取ることができません。ここでCamel CXF Junit Testing 404で失敗しました。

は私のテストコードは、私のルートは、だから私のルートが呼び出されます

<cxf:rsServer id="coreEndPoint" address="http://localhost:9001/v1/core" staticSubresourceResolution="true" 
       serviceClass="com.incomm.imp.neo.core.incoming.Framework" 
       loggingFeatureEnabled="true" loggingSizeLimit="20"> 
    <cxf:providers> 
     <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"> 
     </bean> 
    </cxf:providers> 
    <cxf:inInterceptors> 
     <ref bean="loggingInInterceptor"></ref> 
    </cxf:inInterceptors> 
    <cxf:outInterceptors> 

     <ref bean="loggingOutInterceptor"></ref> 
    </cxf:outInterceptors> 
    <cxf:features > 
     <ref bean="swagger2Feature"></ref> 
    </cxf:features> 
</cxf:rsServer> 

以下のように定義されている、ログinteceptorは、ペイロードと200人の成功をログに記録します

final Exchange send = template.send("cxfrs://http://localhost:9001/v1/core/handshake", new Processor() { 
     public void process(Exchange exchange) throws Exception { 
      exchange.setPattern(ExchangePattern.OutOnly); 
      Message inMessage = exchange.getIn(); 
      // setupDestinationURL(inMessage); 

      final String uuid = UUID.randomUUID().toString().replace("-", ""); 
      System.out.println("uuid = " + uuid); 

      final GenerateTestHeaders headerGenerator = new GenerateTestHeaders(); 
      final Map<String, Object> outboundHeaderMap = headerGenerator.getOutboundHeaderMap(API_KEY, ACCESS_ID, PRIVATE_ACCESS_KEY, "utf-8", "POST", "2016-08-31T10:40:55.979-0400", uuid); 

      // set a customer header 
      inMessage.setHeaders(outboundHeaderMap); 

      // using the http central client API 
      inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, Boolean.TRUE); 

      inMessage.setHeader("HOST", "localhost:9001"); 

      // set the Http method 
      inMessage.setHeader(Exchange.HTTP_METHOD, "POST"); 

      // set the operation name 
      inMessage.setHeader(CxfConstants.OPERATION_NAME, "handshake"); 

      inMessage.setHeader(Exchange.ACCEPT_CONTENT_TYPE, "application/json"); 

      // set the relative path 
      // inMessage.setHeader(Exchange.HTTP_PATH, "/IMP/v1/core/handshake"); 

      // Specify the response class , cxfrs will use InputStream as the response object type 
      inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, HandshakeResponse.class); 

      // since we use the Get method, so we don't need to set the message body 
      inMessage.setBody(null); 


     } 
    }); 

ですただし、プロデューサテンプレートが返されたときに404例外が発生します。

私は間違って何をしていますか?

答えて

0

さらにデバッグすると、Jetty Serverが内部で処理される方法でなければならないことが分かりました.Capel Apache Samplesとのクロス比較を行いました。それを修正して、ちょっとした遊びをしました。主な相違点はPOMにあります。

POMの依存関係が原因であると考えられます。

<!-- http client tests --> 
<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-http</artifactId> 
    <scope>test</scope> 
    <version>${camel-version}</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-jetty</artifactId> 
    <version>${camel-version}</version> 
<!-- use the same version as your Camel core version--> 
</dependency> 

<!-- Test Dependencies --> 
<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-core-xml</artifactId> 
    <scope>test</scope> 
    <version>${camel-version}</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-test</artifactId> 
    <version>${camel-version}</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-test-spring</artifactId> 
    <version>${camel-version}</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-rt-ws-rm</artifactId> 
    <version>${cxf-version}</version> 
    <scope>test</scope> 
</dependency> 

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <scope>test</scope> 
    <version>4.5.2</version> 
</dependency> 
<dependency> 
    <groupId>org.easymock</groupId> 
    <artifactId>easymockclassextension</artifactId> 
    <scope>test</scope> 
    <version>3.2</version> 
</dependency> 

これを追加して作業を開始しました。私はどちらかを参照してください その魔法、今のところいいです。

関連する問題