6

JAX-RS アノテーションでアノテーションが付けられ、アノテーションを含む単純なサービスがあります@Produces("application/json")。サービスを登録するときに次のプロパティを設定しました (DS を使用していますが、問題にはなりません)。

service.exported.interfaces -> *
service.exported.configs    -> org.apache.cxf.rs
org.apache.cxf.rs.address   -> myURI

アプリケーションを実行すると、URL にアクセスできますが、ブラウザーは次のように返します。

No message body writer has been found for response class MyClass.

OSGi コンソールに次のように表示されます。

Jan 11, 2012 2:29:48 PM org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor writeResponseErrorMessage
WARNING: No message body writer has been found for response class MyClass.

ドキュメントを読んで、おそらく JSON プロバイダーを登録する必要があると思いました。5 月の Activator で、次のように追加しました。

bundleContext.registerService(new String[] { "javax.ws.rs.ext.MessageBodyReader",
    "javax.ws.rs.ext.MessageBodyWriter" },
    new org.apache.cxf.jaxrs.provider.JSONProvider(), null);

しかし、これは何の違いもありません。

「応答クラス MyClass のメッセージ本文ライターが見つかりませんでした」を修正するにはどうすればよいですか。エラーメッセージ?

4

1 に答える 1

1

メッセージ本文ライターがないということは、json プロバイダーが、返されたクラスを JSON にマーシャリングする方法を理解していないことを意味します。デフォルトの JSONProvider を使用している場合は、JAXB アノテーションを使用する Jackson を使用しています。つまり、返されるクラスには、クラス レベルで @XmlRootElement アノテーションが必要です。

于 2012-08-24T02:34:49.193 に答える