0

スタンドアロン モードでキャメルを起動すると、セットアップしたエンドポイントからルートが消費されているというメッセージが表示されます。

Route: route1 started and consuming from: Endpoint[http://localhost:9090/hrm/hrm_push?bindingStyle=SimpleConsumer]

すごい!

しかし、[] の間にあるものを切り取ってブラウザーに貼り付けると、404 が返されます。確かに、Camel がそのアドレスで消費していると言う場合、そのアドレスを使用して Rest Web サービスに接続できるはずです。

これが私のappContextです

<bean id="transformer" class="com.xxxx.portlistener.services.Transformer">
</bean> 

<cxf:rsServer id="pushServer" 
              address="http://localhost:9090/hrm/hrm_push?bindingStyle=SimpleConsumer" >
    <cxf:serviceBeans>
        <ref bean="transformer" />
    </cxf:serviceBeans>
</cxf:rsServer>          

<cxf:rsServer id="pingServer" 
              address="http://localhost:9090/hrm/hrm_ping" >
    <cxf:serviceBeans>
        <ref bean="transformer" />
    </cxf:serviceBeans>
</cxf:rsServer>

<!--  Camel Configuration -->
<camel:camelContext id="camel-1"  xmlns="http://camel.apache.org/schema/spring">
    <package>com.xxxx.portlistener.services</package>
    <camel:route id="route1">
           <camel:from uri="cxfrs://bean://pushServer"/> 
           <camel:to uri="log:TEST?showAll=true" />
    </camel:route>   
    <camel:route id="route2">
           <camel:from uri="cxfrs://bean://pingServer"/> 
           <camel:to uri="log:TEST?showAll=true" />
    </camel:route>            
</camel:camelContext>

マイ サービス インターフェイス:

@Path("/hrm/")
public interface PushService
{
/**
 * trasform will change the given Object....
 */
@POST
@Produces("text/plain")
@Path("/hrm_push/")
public Response pusher(Object pushee);

@GET
@Produces("text/plain")
@Path("/hrm_ping/")
public Response ping();
}

コンソールからのエラー:

Jan 21, 2014 10:45:50 AM org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor processRequest
WARNING: No root resource matching request path / has been found.
Jan 21, 2014 10:45:51 AM org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse
WARNING: WebApplicationException has been caught : no cause is available

誰かが私が間違っていることを見つけることができますか?

ありがとう、

アンドリュー

4

1 に答える 1

1

CXF RS Bean と Java アノテーションでパス設定が重複しています。この 2 つが結合されるため、最終的な URL はhttp://localhost:9090/hrm/hrm_push+ "/hrm/"+のようなものになりますが、"/hrm_push/"これはおそらくあなたが望んでいたものではありません。

CXF RS Bean を使用してベース URL のみを定義し、それ以外はすべて Java アノテーションを使用することをお勧めします。

于 2014-01-21T21:54:34.773 に答える