JavaEE

商用環境向けPayara サーバで行うべき設定

はじめに Production Ready Domain payaradomain と domain1 の違い その他の変更/追加すべき設定 ヒープサイズ Server header と X-Powered-By header の削除 docroot 設定 と エラーページ 各種ログ設定 タイムアウト設定 JVM の固定 まとめ はじめに Paya…

Quarkus CLI による Panache CRUD アプリケーションの作り方

はじめに プロジェクトの作成 開発モードの起動 Entity を作成する JAX-RS リソースを作成する Continuous Testing CRUD メソッドの追加 OpenAPI と Swagger UI まとめ はじめに 今回は、Quarkus CLI を使ったアプリケーション作成の流れについて説明します…

Quarkus 2.2.0 で変更された RESTEasy Reactive のスレッド割当ルール

RESTEasy Reactive とは RESTEasy Reactive は Quarkus 1.11 で追加された拡張です。RESTEasyReactive では、 JAX-RS API を利用したまま、リクエストをイベントループ(Quarkus ではこれを I/Oスレッドと呼びます)で処理することでスループットを大幅に向上…

開発を加速する Quarkus 2.0 で追加された Quarkus CLI

はじめに Quarkus CLI のインストール Windows 環境での Quarkus CLI のインストール Quarkus CLI コマンド プロジェクトの作成 Extension の追加 開発モードで起動 プロジェクトビルド コンテナイメージの作成 まとめ はじめに Quarkus 2.0 で追加された Qu…

JPA の EntityGraph は、@MappedSuperclass が考慮されていない

EntityGraph とは @MappedSuperclass のフィールドは指定できない EntityGraph の API バグと回避法 EntityGraph とは JPA 2.1 で標準化された、Entity のフェッチ戦略として EAGER / LAZY を個別に設定できる EntityGraph。 EntityGraph<Employee> graph = em.createE</employee>…

Quarkus 関連記事の一覧

リリースノート Quarkus リリースノート一覧 導入編 Quarkus による初めてのアプリケーション作成(Quarkus 0.23) Quarkus を Gradleではじめる(Quarkus 1.0) Quarkus CLI の使い方(Quarkus 2.2) 活用編 Quarkus によるJPAアプリケーション作成(Quarkus 0.23)…

Payara(Glassfish)のライブラリフォルダとクラスローダの関係

要約 各クラスローダの役割 Bootstrap class loader Extension class loader Public API class loader Common class loader Connector class loader LifeCycleModule class loader Applib class loader Archive class loader add-library Logback 利用時の注…

Gradle で始める Payara 5 〜 CDI・JPA 〜

はじめに データソースの登録 CDI の有効化 JPA の導入 Entity の作成 リポジトリの作成 サービスの作成 リソースの作成 アプリケーションの実行 まとめ はじめに 前回作成した、 blog1.mammb.com に続き、データベース処理を追加してみましょう。 データソ…

Gradle で始める Payara 5

はじめに プロジェクトの作成 Payara を組み込みモードで動かす JUL(Java Util Logger) から SLF4J への変更 buildSrc の追加 war モジュールの作成 Hello サーブレット アプリケーションのデプロイ Hello JAX-RS まとめ はじめに いまさら何故? という気は…

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>…