JavaEE

Quarkus で Panache を使ったアプリケーション作成

はじめに Panache とは Panache の利用準備 Entity の定義 Entity の操作 永続化 IDによる検索 一覧取得 ソート 件数取得 削除 Stream 操作 ページング ページの取得 件数の取得 メソッドチェーン クエリー Entity メソッド トランザクション ロック カスタ…

Quarkus で JPA を使ったアプリケーション作成

はじめに プロジェクトの作成 Entity の作成 サービスの作成 リソースの作成 データベースの起動 アプリケーションの起動 登録レコードの確認 まとめ はじめに 以下では Quarkus による JAX-RS を使った簡単なアプリケーションを作成しました。 blog1.mammb.…

Quarkus による初めてのアプリケーション作成

Quarkus とは このガイド アーキテクチャ プロジェクト作成 エンドポイント リソースの作成 開発モードで起動 インジェクションの利用 機能テスト パッケージング Quarkus とは Red Hat が作っている、最近流行りのマイクロサービス向けの Java アプリケーシ…

Java EE Spec 一覧

Java EE Spec Version JSR リリース JavaEE1.3 JSR-58 2001年9月 JavaEE1.4 JSR-151 2003年11月 JavaEE5 JSR-244 2006年5月 JavaEE6 JSR-316 2009年12月 JavaEE7 JSR-342 2013年5月 JavaEE8 JSR-366 2017年9月 バージョン一覧 太字が前バージョンからの変更…

JavaEE Code探索 その3 〜 トランザクション属性 〜

前回はEJBにおけるトランザクションの開始と終了の流れを見てきました。 blog1.mammb.com 今回は、トランザクション属性による動作を少しだけみてみましょう。 はじめに 最初のトランザクション 次のトランザクション トランザクションのサスペンド REQUIRES…

JavaEE Code探索 その2 〜 トランザクション 〜

前回は Glassfish 4.1.2 のソースコードを元にして EJB のメソッド呼び出しの概要を見ました。 blog1.mammb.com 今回は、この流れの中でトランザクションの開始と終了について見ていきます。 前回と同様に今回の説明のために不要な箇所は大幅に省略または改…

JavaEE Code探索 その1 〜 EJB コール 〜

Glassfish のソースコードを元に、リモートEJBコールがどのように処理されていくかを説明します。 トラブルシュートにはどうしてもソースコードを読む必要がありますし、設定の問題なのかバグなのかの切り分けも容易になります。手っ取り早いし確実です。 そ…

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

FacesServlet Lifecycle RestoreViewPhase ApplyRequestValuesPhase 誤解されがちな Immediate ProcessValidationsPhase UpdateModelValuesPhase InvokeApplicationPhase RenderResponsePhase まとめ JSF のライフサイクルを理解するにはソース見てしまうの…

Payara Micro clustered CDI Event Bus -インスタンスを跨いだCDIイベント-

Clustered CDI Event Bus イベントの送信 イベントの受信 Clustered イベント送信側の実装 イベント受信側の実装 ビルド 実行 おまけ Clustered CDI Event Bus Payara Micro は Glassfish を元にしたマイクロサービス向けの JavaEE コンテナです。 Payara Mi…

JSF で JQueryUI Sortable を使う

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

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

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

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

前回からの続き。 blog1.mammb.com 今回はフィルタについてです。 フィルタ フィルタ適用のタイミング リクエストフィルタ リクエストフィルタの動作 レスポンスフィルタ Reader Interceptor と Writer Interceptor Reader Interceptor と Writer Intercepto…

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

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

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

前回までで作成したアプリケーションを Customer エンティティの CRUD 操作をできるようにしていきます。 blog1.mammb.com CustomerResource の変更 静的コンテンツのハンドラ追加 リクエスト処理 実行 CustomerResource の変更 前回作成した CustomerResour…

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

前回作成したサンプルに続けてJAX-RS を使った CRUD アプリケーションを作成していきます。 blog1.mammb.com EBean の導入 EBean 設定と起動 Entity の作成 CustomerResource リソースへのアクセス EBean の導入 永続化を行うため、何でもよいですが今回は導…

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

前回作成したサンプルを使って JAX-RS のパスのマッピングについて見ていきます。 blog1.mammb.com Path の指定 メソッド の指定 QueryParam @PathParam パスの正規表現指定 @MatrixParam PathSegment ヘッダ情報の取得 @FormParam @BeanParam モデルの作成 …

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

はじめに JAX-RS とは Jersey とは Grizzly とは プロジェクトの作成 Main クラスの作成 Resource クラスの作成 実行 はじめに Jersey と Grizzly を使って簡単な JAX-RS アプリケーションを作っていきます。 Glassfish などの JavaEE アプリケーションサー…

CDI(Contexts and Dependency Injection)まとめ

CDI のバージョン インジェクションポイント コンストラクタインジェクション フィールドインジェクション メソッドパラメータ(イニシャライザメソッド)インジェクション インジェクトのタイミング スコープアノテーション ノーマルスコープ 擬似スコープ Be…

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 まとめ

Converter の使用例 Converter の自動適用 Embedded 属性の変換 Collection 属性の変換 クラスレベルでの Converter 指定 orm.xml での Converter 指定 注意点 データベースのカラムと Entity の該当する属性の変換を Converter で定義できるようになりまし…

JPA 2.1 の新機能 Entity Graphs まとめ

Entity Graphs とは Entity Graph の構成 Graph アノテーションと Graph API 簡単な利用例 Fetch Graph と Load Graph Attribute Node の定義 Subgraph の定義 Subgraph の複数参照 継承構造の Graph 定義 ルート継承構造の Graph Map Key Subgraphs タイプ…

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

Java Batchとは Job の種類と実行制御 Job作成の流れ Chunk の実装例 ItemReader ItemProcessor ItemWriter Job 定義 Batchlet の簡単な例 バッチステータス Job Specification Language Job 定義の要素 Step 要素 chunk ステップの例 chunk ステップの要素 …

Gradle Copy タスクのまとめ

Copy タスク Copy タスクは Gradle の core で提供されている。 簡単な Copy タスク例は以下。 task copyConfig(type: Copy) { from 'config' into 'build/config' } gradle copyConfig でタスクを実行すると 'config' ディレクトリにあるファイルを'build/c…

gradle でファイルダウンロードを自動化する

ファイルのダウンロード ダウンロードプラグインを使うと簡単。 plugins { id 'java' id "de.undercouch.download" version "1.2" } repositories { mavenCentral() } task wrapper(type: Wrapper) { gradleVersion = '2.2.1' } task downloadAndUnzip { out…

分速で始める JavaEE 7 〜 Arquillian 〜

前回の続き blog1.mammb.com arquillian のテストまでやっときます。 ファイル準備 テスト用のパッケージ追加と arquillian 用の設定ファイルなどを作成しておきます。 mkdir -p src/test/java/example/service mkdir -p src/test/resources/META-INF touch …

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

前回 blog1.mammb.com の続き。 RESTサービス追加します。 ファイル準備 パッケージ用のディレクトリ追加とファイル作成します。 mkdir -p src/main/java/example/rest touch src/main/java/example/rest/JaxRsActivator.java touch src/main/java/example/r…

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

前回の続き blog1.mammb.com せっかくなので wildfly の quickstart をベースに、分速で簡単なアプリにしてみます。 設定ファイル準備 最初に src 以下にディレクトリを掘っておきます。 mkdir -p src/main/java/example/controller mkdir -p src/main/java/…