2016-09-20 14 views
0

私はcxfとcamelを初めて使用しています.JavaJsonProviderを使用しようとするといくつかの問題が発生しています。機能をインストールするときに「クラスを読み込めません」というメッセージが表示される

私はjsonオブジェクトを消費するcxfサービスエンドポイントを定義しようとしており、その要求をラクダのルートに送信します。ラクダのルートは私の問題にとって重要ではありません。

<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/> 

私はkarafで私の機能をインストールしようとすると、私は次のエラーが表示されます:

BlueprintContainerImpl | ?
? | 21 - org.apache.aries.blueprint.core - 1.4.2 | Unable to start blueprint container for bundle test-mgw-api org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to load class org.codehaus.jackson.jaxrs.JacksonJsonProvider from recipe BeanRecipe[name='jsonProvider']

私が既に持っている私はJacksonJsonProviderためのBeanを定義している私のblueprint.xmlファイルで

私のpom.xmlに正しい依存関係を追加しました

<dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-jaxrs</artifactId> 
     <version>1.9.13</version> 
    </dependency> 

シンプルなものが必要です私はここで行方不明ですが、私は今それを理解するために多くの時間を費やしており、私はどこにもいません。 ここで間違っていることを誰かが知っていますか?

私はここに私のコードを提供しました。

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

@Path("/auth/") 
public interface AuthService { 

    @POST 
    @Path("/login") 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    Response login(LoginRequest loginRequest); 

    @GET 
    @Path("/person/get/{id}/") 
    @Produces("application/xml") 
    Response getPerson(@PathParam("id") String id); 

    @DELETE 
    @Path("/person/delete/{id}") 
    void deletePerson(@PathParam("id") String id); 
} 

リクエストモデル:

@XmlRootElement(name="Login") 
public class LoginRequest { 
    private String username; 
    private String password; 
    private int loginType; 

    public LoginRequest(String username, String password) { 
     this.username = username; 
     this.password = password; 
     this.loginType = 1; 
    } 

    public LoginRequest() { 
    } 
} 

Blueprint.xml

<blueprint 
     xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf" 
     xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs" 
     xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0" 
     xsi:schemaLocation=" 
     http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> 

     <cm:property-placeholder persistent-id="test.mgw.cxf.receive" update-strategy="reload"> 
      <cm:default-properties> 
       <cm:property name="CXFserver" value="http://localhost:8989/"/> 
       <cm:property name="service" value="rest" /> 
      </cm:default-properties> 
     </cm:property-placeholder> 

     <bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/> 

    <cxf:rsServer id="rsServer" address="${CXFserver}${service}" 
        serviceClass="test.mgw.api.AuthService" 
        loggingFeatureEnabled="true" loggingSizeLimit="20"> 
     <cxf:providers> 
      <ref component-id="jsonProvider"/> 
     </cxf:providers> 
    </cxf:rsServer> 
</blueprint> 
+0

はあなた 'pom.xml'でラクダ-CXFの依存関係を宣言しましたか?私はそれが100%必要であるかどうかはわかりませんが、私たちの環境ではCamelとJackson Jax-RSを橋渡しする必要があります。 –

+1

Karafにjackson依存関係をインストールしましたか?あなたの束だけではありません。 ORG: –

+0

@ruffp私も ' org.apache.camel私は' MVNをインストール を使用してkarafでOSGiバンドルをインストールしようとした私のpom.xml – Ringbo

答えて

0

あなたはjaxrs like thisに青写真にタグを変更する必要があります。

<jaxrs:server id="endpoint1"> 
    <jaxrs:providers> 
     <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/> 
    </jaxrs:providers> 
</jaxrs:server> 
関連する問題