読者です 読者をやめる 読者になる 読者になる

JAX-RS

Jersey(MOXy)でJSONバインドをカスタマイズする

JSONをリクエストで投げてJersey(MOXy)でPOJOとして受ける際に、Integerのフィールドに空文字が来ると「0」に変換される。 0じゃなくてnullで受けたい、というように変換をカスタマイズした場合はXmlAdapterを継承したadapterを作る。 参考:JAXBのXmlAdapte…

JAX-RS 返却用クラスはデフォルトコンストラクタ必須

タイトルの通り。JAXBの仕様?らしい。 @GET @Produces(MediaType.APPLICATION_JSON) public User getIt() { return new User(1); } この場合、Userクラスが以下だとダメ。 public class User { public User(int id) {} } ちゃんとデフォルトコンストラクタ…

JSON・XMLを返すけどエラー時はステータスコードやメッセージを選びたい

JAX-RSで200とか404とか返すだけなら、メソッド戻り値にResponseを指定してResponseを操作すればいい。 @RequestScoped @Path("myresource") public class MyResource { @GET public Response getIt() { return Response.ok().build(); // 200が返る } } JSO…

Jersey + CDIで@Contextが動かない

Jersey + CDIの構成で、ContainerRequestFilterの中でUriInfoを使おうとしてハマった。 構成は JAX-RS(Jersey) + JPA (on CDI) / on Tomcat - edgegram がベースでDeltaspikeを少々追加。 public class FormTypeFilter implements ContainerRequestFilter { …

JAX-RS(Jersey)のFilter(RequestFilter)を使う

JAX-RSのフィルタを使うが、前回書いた通り認可処理でとりあえず使うだけなので、RequestFilterが中心。 参考 Chapter 10. Filters and Interceptors 環境 Java8 Tomcat8 Jersey2.22.1 とりあえずFilter使う ContainerRequestFilter リクエストフィルタはCon…

JAX-RS(Jersey) Filterを使う前に

システムの都合上、認証・認可で標準的手法(Basic, Form, Digest, etc...)が使えない。 そんなわけでフィルタを使ってゴニョゴニョすることになるが、実際に使う前に関連情報を整理。 参考 Chapter 10. Filters and Interceptors JAX-RS 2.0 ことはじめ - Pr…

Jerseyの設定2(web.xmlとかApplicationクラスとか)

前回の続きでServlet3.xで動かす場合の設定。 Chapter 4. Application Deployment and Runtime Environments Servlert3.x pom.xml 前回にも書いたが、Servlet2.xと3.xでは使用するモジュールが異なる。 <dependencies> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-</artifactid></dependency></dependencies>…

Jerseyの設定1(web.xmlとかApplicationクラスとか)

Jerseyの設定がバージョンによって違うが、webにある情報が色々混在していたりバージョンが不明だったりするので整理。 DeltaSpikeといいJerseyといい、結局は公式ドキュメントを読み込まないといけなくなる。英語力無いのが辛いところ。 Chapter 4. Applica…

JAX-RS(Jersey) + JPA (on CDI) / on Tomcat

Tomcat上でJAX-RX(Jersey)を使う環境で、CDIからJPAのEntityManagerを取得するようにする。開発環境はeclipseでMarvenプロジェクトを使用。 分かりやすいサンプルがあったので楽勝・・・ではなかった。。。 参考(というかほぼそのまま) JAX-RS(Jersey)とJPA…