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

JSF ライフサイクルはソース見るのが手っ取り早い

JSF のライフサイクルを理解するにはソース見てしまうのが一番早いですねー。 いまさらですが、Mojarra 2.2.13 のソースでライフサイクルを追ってみます。いまさらですが。 大枠を眺めるため、ソースは大幅に削ったり加工したりしたものなのでご注意ください…

JSF で JQueryUI Sortable を使う

最近すぐに忘れてしまうので、細かいことでも書いておこう。 テーブルの一覧画面の並び順や項目名、表示/非表示などをユーザが自由にカスタマイズする機能追加の対応があった。 ユーザ独自のビューとして画面で見たり、ダウンロードして他のシステムに投入し…

JAX-RS でリソースを動的ディスパッチする

Subresource Locator JAX-RS では @Path アノテーションでリクエストURLを、@GET などのアノテーションで HTTPメソッドをマッピングします。 HTTPメソッドを指定するアノテーションを付けず、@Path アノテーションだけを定義し、戻り値としてリソースクラ…

Jersey Grizzly で始める JAX-RS 入門 〜STEP6〜

前回からの続き。 今回はフィルタについてです。 フィルタ JAX-RS のフィルタは Servlet のフィルタと異なり、リクエストフィルタとレスポンスフィルタが2つに分かれています。 リクエストフィルタとレスポンスフィルタはそれぞれ以下のインターフェースを実…

Jersey Grizzly で始める JAX-RS 入門 〜STEP5〜

前回からの続き。 例外ハンドリング アプリケーションからスローされた WebApplicationException およびそのサブクラスはJAX-RSのコンテナによりキャッチされ、例外に応じたレスポンスが返却されます。 レスポンスは WebApplicationException クラスの getRe…

Jersey Grizzly で始める JAX-RS 入門 〜STEP4〜

前回までで作成したアプリケーションを Customer エンティティの CRUD 操作をできるようにしていきます。 CustomerResource の変更 前回作成した CustomerResource は以下の内容でした。 @Path("customers") public class CustomerResource { @GET @Path("{i…

Jersey Grizzly で始める JAX-RS 入門 〜STEP3〜

前回作成したサンプルに続けてJAX-RS を使った CRUD アプリケーションを作成していきます。 EBean の導入 永続化を行うため、何でもよいですが今回は導入が簡単な EBean を使います。 build.gradle に以下の依存を追加します。 dependencies { // ・・・ // …

Jersey Grizzly で始める JAX-RS 入門 〜STEP2〜

前回作成したサンプルを使って JAX-RS のパスのマッピングについて見ていきます。 Path の指定 JAX-RS では Resource クラスに @Path アノテーションを付けることで URL とのマッピングを指定します。 以下の ExampleResource を作成します。 package exampl…

Jersey & Grizzly で始める JAX-RS 入門 〜STEP1〜

はじめに Jersey と Grizzly を使って簡単な JAX-RS アプリケーションを作っていきます。 Glassfish などの JavaEE アプリケーションサーバに組み込まれている Jersey と Grizzly ですが、単体ライブラリとしても簡単に使うことができます。 これらのライブ…

CDI(Contexts and Dependency Injection)まとめ

CDI のバージョン 現在 CDI 2.0 仕様はドラフト。 Ver JSR JavaEE RI CDI 1.0 JSR-299 JavaEE6 Weld 1.0 CDI 1.1 JSR-346 JavaEE7 Weld 2.0 CDI 1.2 JSR-346 JavaEE7 Weld 2.2 CDI 2.0 JSR-365 JavaEE8 Weld 3.0 各仕様についてはここにまとまっている。 htt…

CDI の管理対象範囲

CDI 1.0 から CDI 1.2 の間で揺れた CDI 管理対象として扱う範囲の変更について。 CDI 2.0 がそろそろだけど、昔のメモを記念に。。 CDIのバージョン 各種仕様などのバージョン対応。 Ver 対応JSR 対応JavaEE 対応Weld 主な変更 CDI 1.0 JSR-299 JavaEE6 Wel…

Wildfly Swarm で JavaEEアプリケーションを FatJAR 化する

wildfly-swarm とは JavaEE アプリケーションを Dropwizard や Spring Boot のようにコンテナごと fat JAR 化する 先日 1.0.0.Alpha4 がリリース WildFly 10.0.0.Beta1をベース 以前から要望のあった Netflix OSS サポート(Ribbon, Hystrix) Keycloak による…

JPA 2.1 の 新機能 バルクオペレーション まとめ

JPA 2.1 で Criteria API 経由での一括更新と一括削除が可能となりました。 Criteria API の変更点 JPA 2.1 では CriteriaUpdate と CriteriaDelete インターフェースが追加され、 CriteriaBuilder の createCriteriaUpdate(Class<T> targetEntity) と createCr</t>…

JPA では Read-Only の Entity は定義できない

JPA Read-Only マッピング JPA では今のところ読み込み専用で Entity を定義することはできない。 マッピングの定義で読み込み専用に定義することはできる。 @Entity public class Employee { @Id @Column(insertable=false) private int id; @Column(insert…

JPA 2.1 の 新機能 Converter まとめ

データベースのカラムと Entity の該当する属性の変換を Converter で定義できるようになりました。 Converter の使用例 Converter は以下の AttributeConverterインターフェース を実装して定義します。 public interface AttributeConverter<X,Y> { public Y co</x,y>…

JPA 2.1 の新機能 Entity Graphs まとめ

Entity Graphs とは JPA 2.1 では Entity Graph を使うことで fetch 計画を指定できるようになりました。これにより query や find で取得する対象ををカスタマイズできるようになります。同じ Entity から様々なデータの見せ方が必要で、時にはパフォーマン…

Java EE の標準バッチAPI -- JSR-352 Batch Applications for the Java Platform --

Java Batchとは JSR-352 Batch Applications for the Java Platform として仕様化されたバッチ処理用 API。 Java EE 7 に取り込まれた。通称 jBatch (日本のみ?)。 構造は Spring Batch とほとんど同じ。標準化されるのは良いことだ。 Job の種類と実行制御…

分速で始める JavaEE 7 〜 Arquillian 〜

前回分速で始める JavaEE 7 〜 JPA + CDI + JAX-RS 〜 - A Memorandumの続き arquillian のテストまでやっときます。 ファイル準備 テスト用のパッケージ追加と arquillian 用の設定ファイルなどを作成しておきます。 mkdir -p src/test/java/example/servic…

分速で始める JavaEE 7 〜 JPA + CDI + JAX-RS 〜

前回 分速で始める JavaEE 7 〜 JPA + CDI + JSF 〜 - A Memorandum の続き。 RESTサービス追加します。 ファイル準備 パッケージ用のディレクトリ追加とファイル作成します。 mkdir -p src/main/java/example/rest touch src/main/java/example/rest/JaxRsA…

分速で始める JavaEE 7 〜 JPA + CDI + JSF 〜

前回の続き 秒速で始める Java EE 7 with Wildfly - A Memorandum せっかくなので wildfly の quickstart をベースに、分速で簡単なアプリにしてみます。 設定ファイル準備 最初に src 以下にディレクトリを掘っておきます。 mkdir -p src/main/java/example…

秒速で始める Java EE 7 with Wildfly

gradle がインストールされている前提。 されていない場合は以下で入れておく。 brew install gradle 開始 ターミナルに以下のブロックを全て選択してコピペする。 mkdir example cd example cat <<EOF > build.gradle plugins { id 'java' id 'war' id 'com.bmusc</eof>…

enum の比較は安心して == を使ってください

どこのプロジェクトでも多くの人が enum を equals で比較していることが多いです。 でも enum のインスタンスは単一であることが保証されているので、安心して == で比較することができます(Elvisは1人しか存在しないのです)。 enum の == 比較はコンパイル…

Java8 新機能についてのまとめ 3

Java8 の Developer preview が公開されたので、そろそろ新機能についてまとめておきます。 の3回目は StringJoiner。 文字列整形のループ処理が不要になった Scala で言う mkString、Guava で言う Joiner でしょうか。 StringJoiner にてよくある文字列連結…

JavaEE6 によるリアルワールド開発 その2

はじめに ここ1ヶ月ほど、(とある事情により)JavaEE6 で開発作業をおこなっています。この中で得られた雑多な知見について、他の開発者の方のためにフィードバックとして簡単にさらしておこうかと思います。の第2回目です。前回の統合開発環境の話題に続いて…

JavaEE6 によるリアルワールド開発 その1

はじめに ここ1ヶ月ほど、(とある事情により)JavaEE6 で開発作業をおこなっています。 この中で得られた雑多な知見についての、他の開発者の方のためのフィードバックとして簡単にさらしておこうかと思います。今回のプロジェクトでは、Webプロファイルでは…

glassfish へのリソース設定はリソースファイルを使うべし その3

Application Scoped Resources 前回まででは、リソースをサーバに設定していました。これにより、サーバ上のアプリケーションから共通的にリソースを利用できるようになります。 しかしアプリケーションのデプロイやアンデプロイを繰り返していると不要なリ…

glassfish へのリソース設定はリソースファイルを使うべし その2

前回では glassfish-resources.xml を手で作成しましたが、Netbeans の Webアプリケーションプロジェクトだとほとんど裏で自動的にやってくれちゃいます。ので、流れを・ Webアプリケーションプロジェクトの作成 SampleWebApp とでもして適当に Webアプリケ…

glassfish へのリソース設定はリソースファイルを使うべし その1

glassfish-resources.xml ファイルで Glassfish にリソース設定 Glassfish でリソースを設定するには以下の3つの方法があります。 GlassFish Server 管理コンソール の画面から設定 asadmin コマンドラインツールから create-jdbc-connection-pool や creat…

JavaEE 6 を Netbeans 使って、

前回までは IDE を使わずに JavaEE6 を触って見ましたが、普通はやっぱり IDE 使うわけで、 プロジェクトの作成 ファイル > 新規プロジェクト で Webアプリケーションを選択 プロジェクト名を適当に コンテキストと依存性の注入を有効にして CDI を利用でき…

JavaEE 6 をテキストエディタだけで(5) - CDI編

前回の続きで CDI の導入 CDI(Contexts and Dependency Injection)とは JavaEE 6 にて標準化されたDI仕様(JSR 299) Java EE 5 仕様での DI は制限された形で仕様化されてきた(EJB や JSF など個別の仕様で DI が定義されてきた) 例えば EJB に @Resource で…

JavaEE 6 をテキストエディタだけで(4) - JSF編

前回の続きでJSFの導入 web.xml の作成 ここまで設定ファイルレスでやってきたが、現在 JSF は Servlet3.0 の web.xml レスには対応していない。ここで作成する src/main/webapp/WEB-INF/web.xml を作成

JavaEE 6 をテキストエディタだけで(3) - JPA編

前回作成したEJBにJPAによるDB操作を組み込む DBサーバの起動 glassfish 同梱の Derby を使う。glassfish の asadmin コマンドで asadmin start-database とすることで Derby が起動する。DBは以下のフォルダに sun-appserv-samples という名前で作成される …

JavaEE 6 をテキストエディタだけで(2) -EJB編

前回に続いて EJB 呼び出し。 EJB の依存関係を pom に追加 javax.ejb の依存を pom.xml に追加 <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.ejb</artifactId> <version>3.1</version> <scope>provided</scope> </dependency> 全文は以下

JavaEE 6 をテキストエディタだけで(1) - Servlet3.0編

いまさらの Java EE 6 について・ NetBeans の Java EE 6 サポートが充実していて楽ちんすぎる ので、テキストエディタとコンソールでなるべく手動で JavaEE 6 を Step by Step する。 glassfish のインストールと起動手順 今回は glassfish 使う。 http://g…