私は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>
はあなた 'pom.xml'でラクダ-CXFの依存関係を宣言しましたか?私はそれが100%必要であるかどうかはわかりませんが、私たちの環境ではCamelとJackson Jax-RSを橋渡しする必要があります。 –
Karafにjackson依存関係をインストールしましたか?あなたの束だけではありません。 ORG: –
@ruffp私も ' org.apache.camel私は' MVNをインストール を使用してkarafでOSGiバンドルをインストールしようとした私のpom.xml –
Ringbo