JBoss

RESTEasy BeanValidationエラーメッセージのカスタマイズ

JAX-RS Specでは、BeanValidationのバリデーションエラー時には、エラー原因を返すことのみが規定されており、メッセージのフォーマット自体は実装依存です。 7.6 Validation and Error Reporting In all cases, JAX-RS implementations SHOULD include a re…

OpenShiftでJBossクラスタを構成する仕組み

この記事は赤帽エンジニア Advent Calendar 2018の12/4分の記事です。 Red HatでJBoss EAPのサポートエンジニアをしています。自由なAdvent Calendarなので、自由に勉強メモを書いてみます。JBossのようなAPサーバはクラスタメンバの探索に従来マルチキャス…

コネクションプールの挙動差分によるバグ顕在化

この記事は Java EE Advent Calendar 2016の12/2分の記事です。 明日は@opengl_8080さんです。Java EEが使われているシステムは、改修を加え続けながら数年〜十年と運用し続けるライフサイクルの長いシステムが多くあります。アプリケーションを全面刷新する…

MavenのJAX-WSプラグイン

まだまだエンタープライズな分野ではJAX-WSがシステム間連携に使われることが多い。wsdlからスタブを生成するMavenプラグインの使い方に関するメモ。 JAX-WS Mavenプラグイン https://jax-ws-commons.java.net/jaxws-maven-plugin/ にJAX-WSの参照実装Metro…

クラスローダリークとヒープダンプ

Java EE を使っている人なら多くの人が遭遇するクラスローダリーク。EclipseなどのIDEでホットデプロイしながら開発していると、突然APサーバから応答がなくなったり、java.lang.OutOfMemory : PermGenが出力されたりする。原因についてはnekopさんのスライ…

EJBタイマーサービスを使う

定番のスケジュール実行としてはcronがあるが、Java EEにおいても同様の機能が用意されている。Java EE 5以前では『x秒後に実行する』ような機能しかなかったが、Java EE 6(WLS12c/JBossEAP6など)以降ではcron風にカレンダー形式で設定ができる。 使い方 Jav…

トラブルに備えるJVMオプション

以前の記事でトラブルが起きた後の初動対応を書いてみたが、いざトラブルに遭遇すると、まず再起動してからどうするか考えるケースが多いと感じている。しかし何も情報がないと『情報がない/再現方法が不明』などの理由からそのままお蔵入りになってしまう。…

GrowthForecastでJBossの運用状況をグラフ化する

アプリケーションサーバでありがちなトラブルとしてDB接続プールの枯渇がある。原因はチューニングミスやSQLが長時間化してプールにコネクションが返って来ないなど色々とあるが、負荷試験時にモニタリングしておくと多くの問題は事前に検知・対処できる。JB…

Javaトラブルに応じた初動対応のまとめ

Javaトラブルでは『情報がなくて、再現もなかなかしません』といった状況に陥ることがある。このような状況を回避するために、以下の3つの代表的なトラブルを例に、アプリケーションサーバを再起動する前に何を取得すれば良いのかをまとめてみる。 アプリケ…

JBossAS7 データソース設定 WebコンソールとCLIの違い

JBossAS7でEJBのコンテナ管理トランザクションが動かないことではまっていたが、WebコンソールとCLIでJTAを有効にするかどうかのデフォルトが違ったのが原因だったようだ。 Webコンソールの場合 Webコンソールから作成すると、デフォルトでUse JTA?はfalseに…

JBossAS7でトランザクションの動作を確認する

Spring3 入門を読んでいて、トランザクションの開始・終了がEJBを使ったJavaEEアプリケーションでも出力できないか考えてみた。 CDIのTransactionnal Observerで試行錯誤 : 失敗 CDIでは、トランザクションの成功・失敗・開始などの合わせてイベントを起動す…