Apache FelixでDOSGIを実行しようとしています。 私はCXF 3.2.0バンドルとDOSGI 2.3.0を使用しますDOSGIカスタムプロバイダ登録
私は正常にサービスを登録できますが、自分のリソースにグローバルカスタムプロバイダを登録することはできません。
@Path("")
public interface IToDoResource {
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
List<ToDo> getAllToDos();
@GET
@Path("{id}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
ToDo getToDoById(@PathParam("id") Long id);
...
}
その後に実装::私は私のクラスのためのグローバル・カスタムプロバイダを登録しよう
@Component(//
name = "My.ToDoRestService", //
immediate = true, //
property = //
{ //
"service.exported.configs=org.apache.cxf.rs", //
"service.exported.interfaces=*", //
"org.apache.cxf.rs.address=/todos", //
} //
)
public class ToDoResource implements IToDoResource {
....
}
私はインターフェイスで定義されたリソースを持っています。 リソースの "service.exported.intents"プロパティと、1プロバイダのプロバイダの"IntentName"と連携して動作させることができます。また私も実装することができ
- のToDo XMLプロバイダ
- のToDo JSONプロバイダ
- のArrayList XMLプロバイダ
- ArrayListのJSONプロバイダ
: しかし、このリソースのために、私は4つのプロバイダを登録したいですIntentsProviderがリソース上にあり、動作します。
ただし、以下では動作しませんし、私がログにこのタイプのエラーのために登録されたプロバイダを取得していない:
@Component(//
name = "My.ToDoJsonProvider", //
immediate = true, //
service = MessageBodyWriter.class, //
property = {
"service.exported.configs=org.apache.cxf.rs", //
"org.apache.cxf.rs.provider=true", //
} //
)
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class ToDoJsonProvider implements MessageBodyWriter<ToDo> {
は、ローカルホスト上のGET:8080/CXF /ドス/ 1戻り空のドキュメントおよびログに:
JAXRSUtils:1834]いいえ、メッセージ本文ライターがクラスmy.todo.repository.api.ToDo、ContentTypeをするために発見されていない:アプリケーション/ xmlの
私は彼は何を欠場か世界中のカスタムプロバイダを登録し直しますか?