2016-06-27 10 views
0

私はCamel-CXfの統合に関するいくつかの調査を行っていましたが、以下のシナリオについては混乱しています。Cxfとルーティングを使用するキャメル

public class SampleImpl implements Sample{ 

@Context 
private HttpHeaders headers; 

@Autowired 
CamelContext context; 

public Response handshake() 
{ 
    System.out.println("HandShake Executed Successfully"); 
    return Response.status(Status.OK).entity("This is a Message after Routing").build(); 
} 

public Response login(LoginRequest request) throws JsonGenerationException, JsonMappingException, IOException { 
    System.out.println("The Rquest objecr is Received "+request); 
    return Response.status(Status.OK).entity(mapper.writeValueAsString(request)).build(); 
} 

}

以下として

私は残りのエンドポイントを実装

@Path("/authenticate") 
public interface Sample { 
@GET 
@Path("/handshake") 
@Produces(MediaType.TEXT_PLAIN) 
public Response handshake(); 

@POST 
@Path("/login") 
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) 
@Produces(MediaType.APPLICATION_JSON) 
public Response login(LoginRequest request) throws JsonGenerationException, JsonMappingException, IOException; 
} 

と実装ルート

<camel:from uri="cxfrs:bean:SampleRestEndPoint?bindingStyle=SimpleConsumer"></camel:from> 

implementatiへのルートをに。しかし、実装は応答オブジェクトを返すので、これを回避する方法を混乱させます。

  1. 呼び出したら、私は 他のルートを実行し、バック応答を送信しすることができますどのように実装になる?.INこの場合、実装は、カスタムオブジェクトを返します。
  2. 他のルートはどのようにCXFルートに接続されていますか。
  3. 私のCXF Implemenationは常にvoid型を返しますか?私は を参照して、Exchangeオブジェクトへのアクセスを取得するには、戻り値のタイプを にする必要があります。
  4. 実装を完全に無視して、ステップ「 」に行き、必要なレスポンスに対して変更しますか? 。

何か指摘します。

答えて

0

@GauthamHonnavara - それはしかし、それはendpoint.Also私の質問は、あなたがすることはできませんJAX-RSに特異的であったとの直接の経路をassosiate doesntのassosiatedプロセッサとJSのWebサービスの実装ですwsdlからサービスクラスを生成する。

エンドポイントを呼び出すために顧客が必要であり、別の5つのステップを踏んで、別のWebサービスなどに手を差し伸べて応答を返す必要があると仮定します。上記の実装では、Webサービス実装Bean自体に応答が返されます。だから、これはちょうど私の質問のように生産者、消費者などとのシンプルなインターフェイスを作成して、あなたが取引を注入したい場合は、各メソッドボイドを作る避けるために

(必要な場合)およびコンフィギュレーションの下

<!-- Created the CXF End Point For the Calls to Come IN --> 
<cxf:rsServer id="RestEndPoint" address="/rest" 
    serviceClass="com.poc.camel.cxf.service.incoming.xxx" 
    loggingFeatureEnabled="true" loggingSizeLimit="20"> 
    <cxf:providers> 
     <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" > 
      <!-- <constructor-arg ref="customObjectMapper" type="org.codehaus.jackson.map.ObjectMapper"/> --> 
     </bean> 
    </cxf:providers> 
</cxf:rsServer> 
を使用

トリックはサービスクラスタグを使用することです。インタフェースが提供されている場合は、CXFの具体的な実装は必要ありません。

これが役に立ちます。私に知らせてください

0

デュードは、これを見てみましょう - http://bushorn.com/camel-cxf-geocoder-example/

上記の例では、しかしRESTされていませんが、ラクダのルートとCXFの使用方法は同じです。

私はこれらの必須のステップを行います。

  1. は豆/カスタムクラスを避ける - ラクダのフレームワークの機能を使用してみてください。

  2. 使用XML - 春/ブループリントDSL

+0

これは私が探しているものではありません返信ありがとうございます。私は、CSF Webサービスが実装され、エンドポイントとして機能する例を持っています。トリガでエンドポイントはルートを通過して応答を返さなければなりません。テストケースのためにまっすぐに見えますが、上記の問題の例を見つけることができません。 –

0

次のスレッドをご覧ください。

Apache Camel and web services

私は正常にラクダとApache CXFを使用してWebサービスの消費を実装しました。疑問があるなら、私はあなたを助けることができます。

おかげで、 Gautham

関連する問題