アプリケーションに JAXRS エンドポイントを提供するために、IBM(s) にバンドルされている Apache Wink を使用しています。Websphere 8.5.5 に向けてコーディングしています。私たちはサーブレット 3.0 に準拠しているため、JaxRS アプリケーションを構成する「プログラムによる」方法を使用します。つまり、web.xml にエントリがなく、注釈付きの jax rs リソースのクラス スキャンに依存しています。一般的には正常に動作します。
@ApplicationPath("/api/v1/")
public class MyApplication extends Application{
このバージョンの Websphere と Apache Wink は、JSON のデシリアライゼーションに Jackson 1.6.x を使用しており、一般的にはうまく機能します。Object Mapper のデフォルト値のいくつかを変更したいと思います
そのため、se/deserialzation プロパティの一部を変更するだけの顧客コンテキスト リゾルバーを定義しました。
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJackssonConverter implements ContextResolver<ObjectMapper> {
final ObjectMapper defaultObjectMapper;
public AibasJackssonConverter() {
defaultObjectMapper = createDefaultMapper();
}
...
mapper.getSerializationConfig().set(SerializationConfig.Feature.INDENT_OUTPUT, true);
JAX-RS 呼び出し中に、コンテナーが新しいプロバイダーをエラーなしで登録していることを確認できます。
問題は、構成が「フォロー」されていないことです。ログから、Wink Engine が WinkJacksonProvider を検索していることがわかります。WinkJacksonProvider は、Jackson(s) のデフォルト値に従っている JacksonProvider を返します。
このデフォルト値を変更する方法はありますか?
プロバイダーをプログラムで構成するために、ここに示されているように Application オブジェクトの実装を変更しようとしましたが、うまくいきませんでした。
http://www.ibm.com/developerworks/java/library/wa-aj-jackson/index.html
ヒントやヒントはありますか?
どうもありがとう