Jakarta RESTful Web Servicesアダプタ¶
目次
補足
本機能は、Nablarch5までは「JAX-RS アダプタ」という名称だった。 しかし、Java EEがEclipse Foundationに移管され仕様名が変わったことに伴い「Jakarta RESTful Web Servicesアダプタ」という名称に変更された。
変更されたのは名称のみで、機能的な差は無い。
その他、Nablarch6で名称が変更された機能については Nablarch5と6で名称が変更になった機能について を参照のこと。
RESTfulウェブサービス で使用するための以下のアダプタを提供する。
- JSONを Jackson(外部サイト、英語) を使って変換するアダプタ
- Jersey(外部サイト、英語) で RESTfulウェブサービス を使用するためのアダプタ
- RESTEasy(外部サイト、英語) で RESTfulウェブサービス を使用するためのアダプタ
モジュール一覧¶
<!-- jacksonアダプタを使う場合 -->
<dependency>
<groupId>com.nablarch.integration</groupId>
<artifactId>nablarch-jackson-adaptor</artifactId>
</dependency>
<!-- Jersey用アダプタを使う場合 -->
<dependency>
<groupId>com.nablarch.integration</groupId>
<artifactId>nablarch-jersey-adaptor</artifactId>
</dependency>
<!-- RESTEasy用アダプタを使う場合 -->
<dependency>
<groupId>com.nablarch.integration</groupId>
<artifactId>nablarch-resteasy-adaptor</artifactId>
</dependency>
補足
Jacksonのバージョン2.17.1を使用してテストを行っている。 バージョンを変更する場合は、プロジェクト側でテストを行い問題ないことを確認すること。
補足
Jackson1系ライブラリの脆弱性対応が行われなくなったため、Nablarch5u16よりJackson1系のサポートを廃止した。 Jackson1系を使用していた場合はJackson2系へ移行すること。
【参考情報】
Jersey環境下でRESTfulウェブサービスを使用する¶
ウェブアプリケーションサーバにバンドルされている Jakarta RESTful Web Services(外部サイト、英語) の実装が、 Jersey(外部サイト、英語) の場合には、Jersey用のアダプタを使用する。
以下にJersey用アダプタの適用方法を示す。
JaxRsMethodBinderFactory#handlerList に対して、Jersey用のハンドラを構築するファクトリクラス(JerseyJaxRsHandlerListFactory) をファクトリインジェクションする。これにより、Jersey用の以下のハンドラ構成が自動的に設定される。
- リクエストボディ変換ハンドラ の設定(以下のコンバータが設定される)
- JSONのコンバータには Jackson2BodyConverter が設定される。
- XMLのコンバータには JaxbBodyConverter が設定される。
- application/x-www-form-urlencodedのコンバータには FormUrlEncodedConverter が設定される。
- Jakarta RESTful Web Servcies Bean Validationハンドラ
<component name="packageMapping" class="nablarch.integration.router.RoutesMapping">
<property name="methodBinderFactory">
<component class="nablarch.fw.jaxrs.JaxRsMethodBinderFactory">
<property name="handlerList">
<!-- handlerListプロパティにJerseyのハンドラキューをファクトリインジェクションする -->
<component class="nablarch.integration.jaxrs.jersey.JerseyJaxRsHandlerListFactory"/>
</property>
</component>
</property>
<!-- 上記以外のプロパティは省略 -->
</component>
補足
使用するウェブアプリケーションサーバに Jackson(外部サイト、英語) が バンドルされていない場合は、Jacksonのモジュールをアプリケーションモジュールとセットでデプロイすること。
RESTEasy環境下でRESTfulウェブサービスを使用する¶
ウェブアプリケーションサーバにバンドルされている Jakarta RESTful Web Services(外部サイト、英語) の実装が、 RESTEasy(外部サイト、英語) の場合には、RESTEasy用のアダプタを使用する。
以下にRESTEasy用アダプタの適用方法を示す。
JaxRsMethodBinderFactory#handlerList に対して、RESTEasy用のハンドラを構築するファクトリクラス(ResteasyJaxRsHandlerListFactory) をファクトリインジェクションする。これにより、RESTEasy用の以下のハンドラ構成が自動的に設定される。
- リクエストボディ変換ハンドラ の設定(以下のコンバータが設定される)
- JSONのコンバータには Jackson2BodyConverter が設定される。
- XMLのコンバータには JaxbBodyConverter が設定される。
- application/x-www-form-urlencodedのコンバータには FormUrlEncodedConverter が設定される。
- Jakarta RESTful Web Servcies Bean Validationハンドラ
<component name="packageMapping" class="nablarch.integration.router.RoutesMapping">
<property name="methodBinderFactory">
<component class="nablarch.fw.jaxrs.JaxRsMethodBinderFactory">
<property name="handlerList">
<!-- handlerListプロパティにRESTEasyのハンドラキューをファクトリインジェクションする -->
<component class="nablarch.integration.jaxrs.resteasy.ResteasyJaxRsHandlerListFactory"/>
</property>
</component>
</property>
<!-- 上記以外のプロパティは省略 -->
</component>
補足
使用するウェブアプリケーションサーバに Jackson(外部サイト、英語) が バンドルされていない場合は、Jacksonのモジュールをアプリケーションモジュールとセットでデプロイすること。
各環境下で使用するボディコンバータを変更(追加)したい¶
プロジェクトで対応すべきMIMEが増えた場合には、 JaxRsHandlerListFactory を実装し対応する。
実装方法は、本アダプタ (JerseyJaxRsHandlerListFactory 、 ResteasyJaxRsHandlerListFactory) を参考にすると良い。