...

JBoss Enterprise Application Platform 6 移行ガイド

by user

on
Category: Documents
295

views

Report

Comments

Transcript

JBoss Enterprise Application Platform 6 移行ガイド
JBoss Enterprise Application
Platform 6
移行ガイド
JBoss Enterprise Application Platform 6 向け
エディッション 2
Sande Gilda
David Ryan
Tom Wells
Eamon Logue
Misty Stanley-Jones
Darrin Mison
Keerat Verma
JBoss Enterprise Application Platform 6 移行ガイド
JBoss Enterprise Application Platform 6 向け
エディッション 2
Sande Gilda
Eamo n Lo gue
Darrin Miso n
David Ryan
Misty Stanley-Jo nes
Keerat Verma
To m Wells
法律上の通知
Copyright © 2012 Red Hat, Inc..
T his document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported
License. If you distribute this document, or a modified version of it, you must provide attribution to Red
Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be
removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section
4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo,
and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux ® is the registered trademark of Linus T orvalds in the United States and other countries.
Java ® is a registered trademark of Oracle and/or its affiliates.
XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States
and/or other countries.
MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other
countries.
Node.js ® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or
endorsed by the official Joyent Node.js open source or commercial project.
T he OpenStack ® Word Mark and OpenStack Logo are either registered trademarks/service marks or
trademarks/service marks of the OpenStack Foundation, in the United States and other countries and
are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or
sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
概要
本書は、以前のバージョンの JBoss Enterprise Application Platform よりアプリケーションを移行するた
めのガイドになります。
目次
目次
.前書き
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5. . . . . . . . . .
1. 表記方法
5
1.1. 印刷における表記方法
5
1.2. 引用における表記方法
6
1.3. 注記および警告
7
2. サポート、およびフィードバックのお願い
7
2.1. サポートが必要ですか?
7
2.2. フィードバックをお願いします
8
. . .1章
第
. . . .はじめに
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9. . . . . . . . . .
1.1. 移行ガイドについて
9
. . .2章
第
. . . .移行の準備
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
............
2.1. 移行の準備
10
2.2. JBoss Enterprise Application Platform 6 の新機能と変更内容
10
. . .3章
第
. . . アプリケーションの移行
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
...........
3.1. ほとんどのアプリケーションで必要な変更
13
3.1.1. ほとんどのアプリケーションで必要な変更の確認
13
3.1.2. クラスローディングの変更
13
3.1.2.1. クラスローディングの変更によるアプリケーションの更新
13
3.1.2.2. モジュールの依存関係を理解する
13
3.1.2.3. クラスローディングの変更によるアプリケーション依存関係の更新
14
3.1.3. 設定ファイルの変更
14
3.1.3.1. JBoss Enterprise Application Platform 6 のクラスローディングを制御するファイルの作
成または変更
14
3.1.3.2. Jboss-deployment-structure.xml
18
3.1.3.3. 新しいモジュラークラスローディングシステムのパッケージリソース
19
3.1.3.4. ResourceBundle プロパティーの場所変更
19
3.1.3.5. カスタムモジュールの作成
19
3.1.4. ロギングの変更
21
3.1.4.1. ロギング依存関係の編集
21
3.1.4.2. サードパーティーロギングフレームワークのアプリケーションコードの更新
21
3.1.4.3. 新しい JBoss ロギングフレームワークを使用したコードの変更
22
3.1.5. アプリケーションパッケージの変更
23
3.1.5.1. EAR および WAR パッケージの編集
23
3.1.6. データソースおよびリソースアダプター設定の変更
23
3.1.6.1. 設定変更によるアプリケーションの更新
23
3.1.6.2. DataSource 設定の更新
24
3.1.6.3. JDBC ドライバーのインストールと設定
25
3.1.6.4. Hibernate または JPA に対するデータソースの設定
28
3.1.6.5. リソースアダプター設定の更新
28
3.1.7. セキュリティーの変更
29
3.1.7.1. アプリケーションセキュリティーの変更設定
29
3.1.8. JNDI の変更
30
3.1.8.1. アプリケーションの JNDI 名前空間名の更新
30
3.1.8.2. 移植可能な JNDI ネーミング構文
31
3.1.8.3. JNDI 名前空間のルールの確認
31
3.1.8.4. 新しい JNDI 名前空間ルールに準拠するようアプリケーションを変更する
32
3.1.8.5. 以前のリリースにおける JNDI 名前空間の例、また JBoss Enterprise Application
Platform 6 での名前空間の指定方法
32
3.2. アプリケーションのアーキテクチャーやコンポーネントによって異なる変更
33
1
JBoss Enterprise Application Platform 6 移行ガイド
3.2.1. アプリケーションのアーキテクチャーやコンポーネントによって異なる変更の確認
33
3.2.2. Hibernate および JPA の変更
35
3.2.2.1. Hibernate や JPA を使用するアプリケーションの更新
35
3.2.2.2. Hibernate および JPA を使用するアプリケーションの変更設定
35
3.2.2.3. Hibernate JPA 永続ユニットプロパティ
36
3.2.2.4. Hibernate 4 を使用するよう Hibernate 3 のアプリケーションを更新する
38
3.2.2.5. Hibernate アイデンティティの自動生成値の既存動作を保持する
38
3.2.2.6. Hibernate 3.3.x アプリケーションの Hibernate 4.x への移行
39
3.2.2.7. Hibernate 3.5.x アプリケーションの Hibernate 4.x への移行
40
3.2.2.8. クラスター環境で稼働する、移行された Seam および Hibernate アプリケーションの永
続プロパティーの変更
40
3.2.2.9. JPA 2.0 の仕様に準拠するようアプリケーションを更新する
41
3.2.2.10. Infinispan による JPA/Hibernate 2 次キャッシュの置き換え
42
3.2.2.11. Hibernate キャッシュプロパティー
43
3.2.2.12. Hibernate Validator 4 への移行
44
3.2.3. JAX-RS および REST Easy の変更
45
3.2.3.1. JAX-RS および REST Easy の変更の設定
46
3.2.4. LDAP セキュリティーレルムの変更
47
3.2.4.1. LDAP セキュリティーレルムの変更設定
47
3.2.5. HornetQ の変更
48
3.2.5.1. 既存の JMS メッセージを Enterprise Application Platform 6 へ移行するため JMS ブリッ
ジを設定する
48
3.2.5.2. HornetQ を JMS プロバイダーとして使用するためにアプリケーションを移行
51
3.2.5.3. HornetQ でのメッセージングの設定
52
3.2.6. クラスタリングの変更
52
3.2.6.1. クラスタリングに対するアプリケーションの変更
52
3.2.6.2. HA シングルトンの実装
55
3.2.7. サービススタイルデプロイメントの変更
62
3.2.7.1. サービススタイルデプロイメントを使用するアプリケーションの更新
62
3.2.8. リモート呼び出しの変更
62
3.2.8.1. JBoss Enterprise Application Platform 5 にデプロイされ、JBoss Enterprise Application
Platform 6 へリモート呼び出しを行うアプリケーションの移行
62
3.2.8.2. JNDI を使用したリモートでのセッション Bean の呼び出し
64
3.2.9. EJB 2.x の変更
67
3.2.9.1. EJB 2.x を使用するアプリケーションの更新
67
3.2.10. Seam 2.2 アプリケーションの移行
68
3.2.10.1. Seam 2.2 アーカイブの JBoss Enterprise Application Platform 6 への移行
68
3.2.10.2. Seam 2.2 アーカイブの移行の問題
71
3.2.11. Spring アプリケーションの移行
73
3.2.11.1. Spring アプリケーションの移行
73
3.2.12. 移行に影響するその他の変更
73
3.2.12.1. 移行に影響する可能性があるその他の変更について理解する
73
3.2.12.2. Maven プラグイン名の変更
73
3.2.12.3. クライアントアプリケーションの変更
73
. . .4.章
第
. . .ツールとヒント
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
............
4.1. 移行に役立つリソース
75
4.1.1. 移行に役立つリソース
75
4.1.2. 移行に便利なツールについて理解する
75
4.1.3. T attletale を用いたアプリケーション依存関係の検索
75
4.1.4. T attletale のダウンロードとインストール
76
4.1.5. T attletale レポートの作成および確認
76
4.1.6. IronJacamar ツールを使用してデータソースとリソースアダプターの設定を移行する
77
4.1.7. IronJacamar 移行ツールのダウンロードとインストール
78
4.1.8. IronJacamar 移行ツールを使用したデータソース設定ファイルの変換
78
4.1.9. IronJacamar 移行ツールを使用したリソースアダプター設定ファイルの変換
80
2
目次
4.2. 移行の問題のデバッグ
86
4.2.1. 移行の問題のデバッグと解決
86
4.2.2. ClassNotFoundExceptions および NoClassDefFoundErrors のデバッグと解決
86
4.2.3. JBoss モジュール依存関係の検索
86
4.2.4. 以前のインストールでの JAR の検索
87
4.2.5. ClassCastExceptions のデバッグと解決
88
4.2.6. DuplicateServiceExceptions のデバッグと解決
88
4.2.7. JBoss Seam のデバッグページエラーのデバッグと解決
89
4.3. アプリケーション例の移行の確認
91
4.3.1. アプリケーション例の移行の確認
91
4.3.2. Seam 2.2. JPA 例の JBoss Enterprise Application Platform 6 への移行
91
4.3.3. Seam 2.2. Booking 例の JBoss Enterprise Application Platform 6 への移行
92
4.3.4. Seam 2.2 Booking アーカイブの JBoss Enterprise Application 6 への移行: 手順説明
95
4.3.5. JBoss Enterprise Application Platform 5.1 バージョンの Seam 2.2 Booking アプリケーショ
ンのビルドおよびデプロイ
95
4.3.6. Seam 2.2 Booking アーカイブのデプロイメントエラーや例外のデバッグおよび解決
96
4.3.7. Seam 2.2 Booking アーカイブのランタイムエラーや例外のデバッグおよび解決
106
4.3.8. Seam 2.2 Booking アプリケーションの移行時に加えられる変更概要の確認
108
. . .5章
第
. . . .Compiler
. . . . . . . . . Output
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
.............
. . . . . . . . . . Glossary
Compiler
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
.............
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
改訂履歴
.............
3
JBoss Enterprise Application Platform 6 移行ガイド
4
前書き
前書き
1. 表 記 方 法
本ガイドは特定の単語や語句を強調したり、 記載内容の特定部分に注意を引かせる目的で次のような表記
方法を使用しています。
PDF版 および印刷版では、 Liberation Fonts セットから採用した書体を使用しています。 ご使用のシステ
ムに Liberation Fonts セットがインストールされている場合、 HT ML 版でもこのセットが使用されます。
インストールされていない場合は代替として同等の書体が表示されます。 注記: Red Hat Enterprise Linux
5 およびそれ以降のバージョンにはデフォルトで Liberation Fonts セットが収納されます。
1.1. 印刷における表記方法
特定の単語や語句に注意を引く目的で 4 種類の表記方法を使用しています。 その表記方法および適用さ
れる状況は以下の通りです。
等幅の太字
シェルコマンド、ファイル名、パスなどシステムへの入力を強調するために使用しています。またキー配
列やキーの組み合わせを強調するのにも使用しています。 例えば、
現在作業中のディレクトリ内のファイル m y_next_bestselling_novel の内容を表示さ
せるには、 シェルプロンプトで cat m y_next_bestselling_novel コマンドを入力して
から Enter を押してそのコマンドを実行します。
上記にはファイル名、シェルコマンド、キーが含まれています。 すべて等幅の太字で表されているため文
中内で見分けやすくなっています。
キーが 1 つの場合と複数のキーの組み合わせになる場合を区別するため、 その組み合わせを構成するキー
同士をハイフンでつないでいます。 例えば、
Enter を押してコマンドを実行します。
Press Ctrl+Alt+F2 to switch to a virtual terminal.
最初の段落では押すべき 1 つのキーを特定して強調しています。 次の段落では同時に押すべき 3 つの
キーの組み合わせが 2 種類ありそれぞれ強調されています。
ソースコードの説明では 1 段落内で提示されるクラス名、 メソッド、 関数、 変数名、 戻り値を上記のよ
うに 等幅の太字 で表示します。 例えば、
ファイル関連のクラス群はファイルシステムに対しては filesystem 、 ファイルには
file、 ディレクトリには dir をそれぞれ含みます。 各クラスは個別に関連する権限セット
を持っています。
プロポーショナルの太字
アプリケーション名、 ダイアログボックスのテキスト、ラベル付きボタン、 チェックボックスとラジオ
ボタンのラベル、 メニュータイトルとサブメニュータイトルなどシステム上で見られる単語や語句を表し
ます。 例えば、
メインメニューバーから システム > 個人設定 > マウス の順で選択し マウスの個人設定
を起動します。 ボタン タブ内で 左ききのマウス チェックボックスをクリックしてから 閉
じる をクリックしマウスの主要ボタンを左から右に切り替えます (マウスを左ききの人が使
用するのに適した設定にする)。
5
JBoss Enterprise Application Platform 6 移行ガイド
用するのに適した設定にする)。
T o insert a special character into a gedit file, choose Applications → Accessories →
Character Map from the main menu bar. Next, choose Search → Find… from the
Character Map menu bar, type the name of the character in the Search field and click
Next. T he character you sought will be highlighted in the Character T able. Double-click
this highlighted character to place it in the T ext to copy field and then click the Copy
button. Now switch back to your document and choose Edit → Paste from the gedit menu
bar.
上記には、 アプリケーション名、 システム全体のメニュー名と項目、 アプリケーション固有のメニュー
名、 GUI インタフェースで見られるボタンやテキストがあります。 すべてプロポーショナルの太字で表
示されているため文中内で見分けやすくなっています。
等幅の太字で且つ斜体 または プロポーショナルの太字で且つ斜体
等幅の太字やプロポーショナルの太字はいずれであっても斜体の場合は置換可能なテキストか変化するテ
キストを示します。 斜体は記載されている通りには入力しないテキスト、あるいは状況に応じて変化する
出力テキストを表します。 例えば、
ssh を使用してリモートマシンに接続するには、 シェルプロンプトで ssh
username@ domain.name と入力します。 リモートマシンが exam ple.com であり、 その
マシンで使用しているユーザー名が john なら ssh john@ exam ple.com と入力します。
m ount -o rem ount file-system コマンドは指定したファイルシステムを再マウントし
ます。 例えば、 /hom e ファイルシステムを再マウントするコマンドは m ount -o
rem ount /hom e になります。
現在インストールされているパッケージのバージョンを表示するには、 rpm -q package
コマンドを使用します。 結果として次を返してきます、 package-version-release。
Note the words in bold italics above — username, domain.name, file-system, package, version and
release. Each word is a placeholder, either for text you enter when issuing a command or for text
displayed by the system.
タイトル表示のような標準的な使用の他、 斜体は新しい重要な用語が初めて出現する場合にも使用されま
す。 例えば、
Publican は DocBook の発行システムです。
1.2. 引用における表記方法
端末の出力とソースコード一覧は、視覚的に周囲の文から区別されています。
端末に送信される出力は m ono-spaced rom an (等幅の Roman) にセットされるので以下のように表示
されます。
books
books_tests
Desktop
Desktop1
documentation
downloads
drafts
images
mss
notes
photos
scripts
stuff
svgs
svn
ソースコードの一覧も m ono-spaced rom an (等幅の Roman) でセットされますが、以下のように強調
表示されます。
6
前書き
package org.jboss.book.jca.ex1;
import javax.naming.InitialContext;
public class ExClient
{
public static void main(String args[])
throws Exception
{
InitialContext iniCtx = new InitialContext();
Object
ref
= iniCtx.lookup("EchoBean");
EchoHome
home
= (EchoHome) ref;
Echo
echo
= home.create();
System.out.println("Created Echo");
System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));
}
}
1.3. 注記および警告
情報が見過ごされないよう 3 種類の視覚的なスタイルを使用して注意を引いています。
注記
注記は説明している部分に対するヒントや近道あるいは代替となる手段などになります。注記を無
視しても悪影響はありませんが知っておくと便利なコツを見逃すことになるかもしれません。
重要
重要ボックスは見逃しやすい事項を詳細に説明しています。現在のセッションにのみ適用される設
定上の変更点、 更新を適用する前に再起動が必要なサービスなどがあります。重要ボックスを無視
してもデータを喪失するような結果にはなりませんがイライラ感やフラストレーションが生じる可
能性があります。
警告
警告は無視しないでください。警告を無視するとデータを喪失する可能性が非常に高くなります。
2. サ ポ ー ト 、 お よ び フ ィ ー ド バ ッ ク の お 願 い
2.1. サポートが必要ですか?
本書に説明してある手順で問題があれば、Red Hat カスタマーポータル(http://access.redhat.com)をご覧
ください。カスタマーポータルでは以下を行うことができます。
Red Hat 製品に関する技術的なサポートの記載をナレッジベースで検索、閲覧することができます。
サポートケースを Red Hat グローバルサポートサービス(GSS)に提出することができます。
7
JBoss Enterprise Application Platform 6 移行ガイド
他の製品文書を参照することができます。
また、Red Hat は Red Hat のソフトウェアやテクノロジーに関するディスカッションの場として多くの
メーリングリストを設置しています。公開されているメーリングリストについて
はhttps://www.redhat.com/mailman/listinfoで一覧を参照してください。メーリングリストをサブスクライ
ブする、またはメーリングリストのアーカイブを参照する場合はそのメーリングリスト名をクリックしま
す。
2.2. フィードバックをお願いします
誤植、本ガイドの改善案がある場合、ご意見お待ちしております。製品JBoss Enterprise
Application Platform 6、コンポーネントdoc-Migration_GuideとしBugzilla から報告してく
ださい。以下のリンクhttps://bugzilla.redhat.com/から、あらかじめ記入が施されている本製品のバグレ
ポートへ移動できます。
Bugzilla のDescription フィールドにある以下のテンプレートに記載してください。できるだけ具体的
に問題を説明していただけると、迅速に問題解決へ向けた取り組みが行いやすくなります。
文書URL:
項、項のタイトル:
問題の説明:
改善案:
追加情報:
問題報告の功績が認められるよう、名前を記載するのを忘れないようにしてください 。
8
第1章 はじめに
第 1章 はじめに
1.1. 移 行 ガ イ ド に つ い て
JBoss Enterprise Application Platform 6 は Java Enterprise Edition 6 仕様の軽量で高速な実装です。アー
キテクチャーはモジュラーサービスコンテナ上に構築され、アプリケーションが必要な時にサービスをオ
ンデマンドで有効にします。この新しいアーキテクチャーにより、JBoss Enterprise Application Platform
5 で実行されるアプリケーションを JBoss Enterprise Application Platform 6 で実行するには変更が必要に
なる場合があります。
本ガイドは、Enterprise Application Platform 5.1 のアプリケーションを Enterprise Application Platform 6
で正常に実行しデプロイするために必要な変更内容の文書化を目的としています。デプロイメントおよび
ランタイム時に発生する問題の解決方法や、アプリケーションの挙動が変更されないようにする方法が記
載されています。これは新しいプラットフォームへ移行する最初の一歩となります。アプリケーションが
正常にデプロイされ実行されたら、 JBoss Enterprise Application Platform 6 の新機能を使用するよう各
コンポーネントのアップグレードを計画することができます。
バグを報告する
9
JBoss Enterprise Application Platform 6 移行ガイド
第 2章 移行の準備
2.1. 移 行 の 準 備
アプリケーションサーバーの構造が以前のバージョンと異なるため、移行ついて調査し、計画を立ててか
らアプリケーションを移行した方がよいでしょう。
1. JBoss Enterprise Application Platform 6 の新機能と変更内容の確認
本リリースには、JBoss Enterprise Application Platform 5 のアプリケーションのデプロイメントに
影響する可能性がある変更が複数あります。これには、ファイルディレクトリ構造、スクリプト、
デプロイメント設定、クラスローディング、JNDI ルックアップなどの変更が含まれます。詳細は
「JBoss Enterprise Application Platform 6 の新機能と変更内容」 を参照してください。
2. スタートガイドの確認
JBoss Enterprise Application Platform 6 の 開発ガイドに記載されている、アプリケーション開発の
開始に関する章を読むようにしてください。この章には以下に関する重要な情報が含まれていま
す。
Java EE 6
新しいモジュラークラスローディングシステム
ファイル構造の変更
JBoss Enterprise Application Platform 6 のダウンロードおよびインストール方法
JBoss Developer Studio のダウンロードおよびインストール方法
開発環境に対応する Maven の設定方法
製品に同梱されるクイックスタートサンプルアプリケーションのダウンロードおよび実行方法
3. アプリケーションの分析および理解
アプリケーションはそれぞれ異なるため、移行を開始する前に既存アプリケーションのコンポーネ
ントやアーキテクチャーについて十分に理解する必要があります。
重要
アプリケーションを変更する前に、必ずバックアップコピーを作成するようにしてください。
バグを報告する
2.2. JBoss Enterprise Application Platform 6 の 新 機 能 と 変 更 内 容
はじめに
JBoss Enterprise Application Platform 6 が以前のリリースと顕著に異なる点は次の通りです。
モジュールベースのクラスローディング
JBoss Enterprise Application Platform 5 ではクラスローディングのアーキテクチャーは階層的で
した。JBoss Enterprise Application Platform 6 ではクラスローディングが JBoss モジュール
ベースとなりました。これにより、正確にアプリケーションを分離できるようになったため、
サーバー実装クラスを隠し、アプリケーションが必要なクラスのみをロードできるようになりま
した。より良いパフォーマンスを実現するため、クラスローディングは平行して実行されます。
JBoss Enterprise Application Platform 5 向けに書かれたアプリケーションはモジュールの依存関
係を指定するため変更する必要があります。場合によってはアーカイブを再パッケージ化する必
要があることもあります。詳細は、JBoss Enterprise Application Platform 6 開発ガイドの「アプ
10
第2章 移行の準備
リケーションの開発」の章に記載されている、クラスローディングおよびモジュールの概要を参
照してください。
ドメイン管理
JBoss Enterprise Application Platform 6 ではサーバーをスタンドアロンサーバーとして実行した
り、管理ドメインで実行することが可能です。管理ドメインではサーバーグループ全体を一度に
設定できるため、サーバーのネットワーク全体で設定を同期化することが可能です。これにより
前リリース向けに構築されたアプリケーションが影響を受けることはありませんが、複数サー
バーへのデプロイメントの管理を簡素化することができます。詳細は、JBoss Enterprise
Application Platform 6 開発ガイドの「アプリケーションの開発」の章に記載されている管理ドメ
インに関する説明を参照してください。
注記
ドメインモードは次の Boss Enterprise 製品ではサポートされていません。
JBoss Portal Platform 6
デプロイメント設定
スタンドアロンサーバーと管理ドメイン
JBoss Enterprise Application Platform 5 ではプロファイルベースのデプロイメント設定
を使用し、これらのプロファイルは EAP_HOME/server/ ディレクトリにありました。
多くのアプリケーションにはセキュリティーやデータベース、リソースアダプターなど
の設定に対する複数の設定ファイルが含まれていました。JBoss Enterprise Application
Platform 6 では 1 つのファイルを使用してデプロイメントを設定できるようになりまし
た。このファイルはデプロイメントに使用されるすべてのサービスやサブシステムを設
定するために使用されます。スタンドアロンサーバーは
EAP_HOME/standalone/configuration/standalone.xm l ファイルを使用して
設定されます。管理ドメインで実行されているサーバーでは、サーバーは
EAP_HOME/dom ain/configuration/dom ain.xm l ファイルを使用して設定されま
す。JBoss Enterprise Platform 5 の複数の設定ファイルに含まれる情報は、新しい単一
の設定ファイルへ移行する必要があります。
デプロイメントの順序付け
JBoss Enterprise Application Platform 6 はデプロイメントに対して高速で平行した初期
化を実行するため、パフォーマンスと効率性が向上します。ほとんどの場合でアプリ
ケーションサーバーは自動的に依存関係を事前判断し、最も効率的なデプロイメントス
トラテジーを選択します。しかし、EAR としてデプロイされた複数のモジュールで構成
され、CDI 挿入やリソース参照エントリーの代わりにレガシーの JNDI ルックアップを
使用する JBoss Enterprise Application Platform 5 のアプリケーションは、設定の変更
が必要になります。
ディレクトリー構造とスクリプト
前述の通り、JBoss Enterprise Application Platform 6 はプロファイルベースのデプロイメント設
定を使用しません。そのため、EAP_HOME/server/ ディレクトリは存在しません。スタンドア
ロンサーバーの設定ファイルは EAP_HOME/standalone/configuration/ ディレクトリ、デ
11
JBoss Enterprise Application Platform 6 移行ガイド
プロイメントは EAP_HOME/standalone/deploym ents/ ディレクトリにあります。管理ドメ
インで実行されているサーバーの設定ファイルは EAP_HOME/dom ain/configuration/ ディ
レクトリ、デプロイメントは EAP_HOME/dom ain/deploym ents/ ディレクトリにあります。
JBoss Enterprise Application Platform 5 では、Linux スクリプト EAP_HOME/bin/run.sh また
は Windows スクリプト EAP_HOME/bin/run.bat を使用してサーバーを起動しました。JBoss
Enterprise Application Platform 6 では、サーバーの起動方法によってサーバー起動スクリプトが
異なります。 スタンドアロンサーバーを使用する場合は、Linux スクリプト
EAP_HOME/bin/standalone.sh または Windows スクリプト
EAP_HOME/bin/standalone.bat を使用します。 管理ドメインを起動する場合は、Linux ス
クリプト EAP_HOME/bin/dom ain.sh または Windows スクリプト
EAP_HOME/bin/dom ain.bat を使用します。
JNDI ルックアップ
JBoss Enterprise Application Platform 6 は標準化された移植可能な JNDI 名前空間を使用するよ
うになりました。JBoss Enterprise Application Platform 5 向けに書かれた JNDI ルックアップを
使用するアプリケーションは、新しい JNDI 名前空間の慣習に従って変更する必要があります。
JNDI のネーミング構文についての詳細は 「移植可能な JNDI ネーミング構文」 を参照してくだ
さい。
また、JBoss Enterprise Application Platform 6 開発ガイドの 「アプリケーションの開発」の章に記載さ
れている、「JBoss Enterprise Application Platform 6 の新しい機能と変更された機能」も参照してくださ
い。
バグを報告する
12
第3章 アプリケーションの移行
第 3章 アプリケーションの移行
3.1. ほ と ん ど の ア プ リ ケ ー シ ョ ン で 必 要 な 変 更
3.1.1. ほとんどのアプリケーションで必要な変更の確認
JBoss Enterprise Application Platform 6 のクラスローディングと設定の変更はほとんどのアプリケーショ
ンに影響します。また、Enterprise Application Platform 6 は新しい標準の移植可能な JNDI ネーミング構
文を使用します。これらの変更はほとんどのアプリケーションに影響するため、アプリケーションを移行
する際、最初に以下の情報を確認することが推奨されます。
1. 「クラスローディングの変更によるアプリケーションの更新」
2. 「設定変更によるアプリケーションの更新」
3. 「アプリケーションの JNDI 名前空間名の更新」
バグを報告する
3.1.2. クラスローディングの変更
3.1.2.1. クラスローディングの変更によるアプリケーションの更新
モジュラークラスローディングは JBoss Enterprise Application Platform 6 における主な変更の 1 つで、
ほぼすべてのアプリケーションが影響を受けます。アプリケーションを移行する際、最初に次の情報を確
認してください。
1. 最初に、アプリケーションのパッケージと依存関係を確認します。詳細は 「クラスローディングの
変更によるアプリケーション依存関係の更新」を参照してください。
2. アプリケーションがロギングを行う場合、正しいモジュールの依存関係を指定する必要がありま
す。手順の詳細は 「ロギング依存関係の編集」 を参照してください。
3. モジュラークラスローディングの変更により、EAR または WAR のパッケージ構造を変更する必要
がある場合があります。詳細は 「EAR および WAR パッケージの編集」 を参照してください。
バグを報告する
3.1.2.2. モジュールの依存関係を理解する
概要
モジュールは独自のクラスと、明示的または暗黙的な依存関係を持つモジュールのクラスのみにアクセス
することが可能です。
手順 3.1 タスク
1. 暗黙的な依存関係を理解する
サーバー内のデプロイヤーは、javax.api や sun.jdk などの一般的に使用されるモジュール依
存関係を暗黙的かつ自動的に追加します。これにより、ランタイム時にデプロイメントに対してク
ラスを可視化でき、開発者が依存関係を明示的に追加する作業が軽減されます。暗黙的な依存関係
がいつどのように追加されるかについては、 JBoss Enterprise Application Platform 6 開発ガイドの
「クラスローディングとモジュール」の章に記載されている暗黙的なモジュール依存関係の説明を
参照してください。
2. 明示的な依存関係を理解する
その他のクラスに対してはモジュールを明示的に指定する必要があります。明示的に指定しない
13
JBoss Enterprise Application Platform 6 移行ガイド
と、欠落している依存関係が原因でデプロイメントエラーやランタイムエラーが発生します。依存
関係が欠落していると、サーバーログに ClassNotFoundExceptions や
NoClassDefFoundErrors トレースが記録されます。複数のモジュールが同じ JAR をロードし
たり、異なるモジュールによってロードされるクラスを拡張するクラスを 1 つのモジュールがロー
ドすると、サーバーログに ClassCastExceptionsトレースが記録されます。依存関係を明示的
に指定するには、MANIFEST .MF を変更するか、JBoss 固有のデプロイメント記述子ファイル
jboss-deploym ent-structure.xm l を作成します。モジュール依存関係の詳細は、JBoss
Enterprise Application Platform 6 開発ガイドに記載されている、クラスローディングとモジュール
の概要を参照してください。
バグを報告する
3.1.2.3. クラスローディングの変更によるアプリケーション依存関係の更新
概要
JBoss Enterprise Application Platform 6 のクラスローディングは以前のバージョンの JBoss Application
Server とは大きく異なっています。JBoss Enterprise Application Platform 6 のクラスローディングは
JBoss モジュールプロジェクトが基盤となっています。すべての JAR をフラットなクラスパスにロード
する単一の階層的なクラスローダーではなく、各ライブラリが依存するモジュールに対してのみリンクす
るモジュールとなります。また、Enterprise Application Platform 6 のデプロイメントもモジュールで、ク
ラスの依存関係が明示的に定義されている場合を除き、アプリケーションサーバーの JAR に定義されてい
るクラスへアクセスできません。アプリケーションサーバーによって定義されるモジュール依存関係の一
部は自動的に設定されます。例えば、Java EE アプリケーションをデプロイする場合、Java EE API の依
存関係は自動的にモジュールに追加されます。自動的に追加される依存関係の完全一覧は、JBoss
Enterprise Application Platform 6 開発ガイドの「クラストーディングとモジュール」の章に記載されてい
る暗黙的なモジュール依存関係の説明を参照してください。
タスク
アプリケーションを JBoss Enterprise Application Platform 6 に移行する際、モジュラークラスローディ
ングの変更に伴い、以下のタスクを 1 つ以上実行する必要がある場合があります。
「モジュールの依存関係を理解する」
「T attletale を用いたアプリケーション依存関係の検索」
「JBoss Enterprise Application Platform 6 のクラスローディングを制御するファイルの作成または変
更」
「新しいモジュラークラスローディングシステムのパッケージリソース」
バグを報告する
3.1.3. 設定ファイルの変更
3.1.3.1. JBoss Enterprise Application Platform 6 のクラスローディングを制御するファイルの作
成または変更
概要
モジュラークラスローディングを使用する JBoss Enterprise Application Platform 6 の変更に伴い、依存
関係を追加したり自動的な依存関係がロードされないようにするため、1 つ以上のファイルを作成または
変更する必要がある場合があります。クラスローディングの優先度については、JBoss Enterprise
Application Platform 6 開発ガイドの「クラスローディングとモジュール」の章を参照してください。
JBoss Enterprise Application Platform 6 のクラスローディングを制御するために使用されるファイルは次
14
第3章 アプリケーションの移行
の通りです。
jboss-web.xml
jboss-web.xm l ファイルの <class-loading> 要素が定義されている場合はこれを削除する
必要があります。 JBoss Enterprise Application Platform 5 でこの要素によって引き起こされた
動作は、JBoss Enterprise Application Platform 6 ではクラスローディングのデフォルト動作とと
なっているため、この要素が必要なくなりました。この要素を削除しないと、サーバーログに
ParseError と XMLStreamException が記録されます。
これは、コメントアウトされた jboss-web.xm l ファイルの <class-loading> 要素の例に
なります。
<jboss-web>
<!-<class-loading java2ClassLoadingCompliance="false">
<loader-repository>
seam.jboss.org:loader=MyApplication
<loader-repository-config>java2ParentDelegation=false</loaderrepository-config>
</loader-repository>
</class-loading>
-->
</jboss-web>
MANIFEST .MF
手作業による編集
アプリケーションが使用するコンポーネントやモジュールによって異なりますが、この
ファイルに 1 つ以上の依存関係を追加する必要がある場合があります。依存関係は
Dependencies か Class-Path エントリのどちらかに追加します。
開発者によって編集された MANIFEST .MF の例は次の通りです。
Manifest-Version: 1.0
Dependencies: org.jboss.logmanager
Class-Path: OrderManagerEJB.jar
このファイルを編集する時、必ずファイルの最後にニューライン文字があるようにして
ください。
Maven を使用した生成
Maven を使用する場合、pom .xm l ファイルを編集して MANIFEST .MF ファイルの依
存関係を生成する必要があります。アプリケーションによって EJB 3.0 が使用される場
合、 pom .xm l ファイルに次のようなセクションが含まれることがあります。
15
JBoss Enterprise Application Platform 6 移行ガイド
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<configuration>
<ejbVersion>3.0</ejbVersion>
</configuration>
</plugin>
EJB 3.0 コードがorg.apache.com m ons.log を使用する場合、MANIFEST .MF ファ
イルにこの依存関係が存在しなければなりません。この依存関係を生成するには、次の
ように <plugin> 要素を pom .xm l ファイルに追加します。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<configuration>
<ejbVersion>3.0</ejbVersion>
<archive>
<manifestFile>src/main/resources/METAINF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
上記の例では、次の依存関係エントリのみが
src/m ain/resourcres/MANIFEST .MF ファイルに含まれる必要があります。
Dependencies: org.apache.commons.logging
Maven は完全な MANIFEST .MF ファイルを生成します。
Manifest-Version: 1.0
Dependencies: org.apache.commons.logging
jboss-deployment-structure.xml
このファイルは、クラスローディングを細かく制御するために使用される JBoss 固有のデプロイ
メント記述子です。MANIFEST .MF と同様に、このファイルを使用して依存関係を追加すること
が可能です。また、自動的な依存関係が追加されないようにしたり、追加のモジュールを定義す
ることが可能で、EAR デプロイメントの分離されたクラスローディング動作を変更したり、追加
のリソースルートをモジュールへ追加することもできます。
JSF 1.2 モジュールの依存関係を追加し、JSF 2.0 モジュールが自動的にローディングされないよ
うにする jboss-deploym ent-structure.xm l ファイルの例は次の通りです。
16
第3章 アプリケーションの移行
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="javax.faces.api" slot="1.2" export="true"/>
<module name="com.sun.jsf-impl" slot="1.2" export="true"/>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
<module name="com.sun.jsf-impl" slot="main"/>
</exclusions>
<dependencies>
<module name="javax.faces.api" slot="1.2"/>
<module name="com.sun.jsf-impl" slot="1.2"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
このファイルに関する詳細は 「Jboss-deployment-structure.xml」 を参照してください。
application.xml
以前のバージョンの JBoss Enterprise Application Platform では、jboss-app.xm l ファイルを
使用して EAR 内でデプロイメントの順番を制御しました。本バージョンより Java EE6 仕様が
application.xm l に <initialize-in-order> 要素を提供するようになり、これにより
EAR 内の Java EE モジュールがデプロイされる順番を制御することができます。
ほとんどの場合、デプロイメントの順番を指定する必要はありません。依存関係の挿入と、外部
モジュールのコンポーネントを参照する resource-refs がアプリケーションによって使用される
場合、アプリケーションサーバーは適切で最適なコンポーネントの順番を暗黙的に決定できるた
め、ほとんどの場合で <initialize-in-order> 要素は必要ありません。
m yApp.ear 内に m yBeans.jar と m yApp.war を持つアプリケーションがあるとしましょ
う。m yApp.war@ EJB のサーブレットが m yBeans.jar より Bean を挿入します。この場合、
必ずサーブレットが起動する前に EJB コンポーネントを使用できるようにし、<initializein-order> 要素を使用する必要がないことをアプリケーションサーバーが適切に認識します。
しかし、次のようなレガシーの JNDI ルックアップスタイルのリモート参照を使用し、Bean へア
クセスする場合はモジュールの順番を指定する必要がある場合があります。
init() {
Context ctx = new InitialContext();
ctx.lookup("TheBeanInMyBeansModule");
}
この場合、EJB コンポーネントが m yBeans.jar にあることをサーバーが判断できないた
め、m yBeans.jar のコンポーネントがm yApp.war のコンポーネントの前に初期化され開始さ
れるよう強制する必要があります。これには、 <initialize-in-order> 要素を true に設
定し、m yBeans.jar モジュールと m yApp.war モジュールの順番を application.xm l ファ
イルに指定します。
以下は <initialize-in-order> 要素を使用してデプロイメントの順番を制御する例になり
ます。 m yBeans.jar は m yApp.war ファイルの前にデプロイされます。
17
JBoss Enterprise Application Platform 6 移行ガイド
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="6"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/application_6.xsd">
<application-name>myApp</application-name>
<initialize-in-order>true</initialize-in-order>
<module>
<ejb>myBeans.jar</ejb>
</module>
<module>
<web>
<web-uri>myApp.war</web-uri>
<context-root>myApp</context-root>
</web>
</module>
</application>
application.xm l ファイルのスキーマは http://java.sun.com/xml/ns/javaee/application_6.xsd
を参照してください。
注記
<initialize-in-order> 要素を true に設定するとデプロイメントの速度が遅くな
ることに注意してください。デプロイメントを最適化するためのコンテナの柔軟性が高い
ため、依存関係の挿入や resource-refs を使用して適切な依存関係を定義する方法が推奨
されます。
jboss-ejb3.xml
Java Enterprise Edition (EE) によって定義される ejb3-jar.xm l デプロイメント記述子によっ
て提供される機能を上書きしたり追加するため、jboss.xm l は jboss-ejb3.xm l デプロイメ
ント記述子に置き換えられました。この新ファイルは jboss.xm l との互換性がないた
め、jboss.xm l はデプロイメントで無視されます。
login-config.xml
login-config.xm l ファイルはセキュリティー設定で使用されないようになりました。セキュ
リティーはサーバー設定ファイルの <security-dom ain> 要素に設定されるようになりまし
た。スタンドアロンサーバーでは standalone/configuration/standalone.xm l ファイ
ルになります。管理ドメインでサーバーを実行している場合は
dom ain/configuration/dom ain.xm l ファイルになります。
バグを報告する
3.1.3.2. Jboss-deployment-structure.xml
jboss-deployment-structure.xml は JBoss Enterprise Application Platform 6 の新しい任意のデプロイメン
ト記述子です。このデプロイメント記述子はデプロイメントのクラスローディングを制御できるようにし
ます。
このデプロイメント記述子の XML スキーマは EAP_HOME/docs/schem a/jboss-deploym ent-
18
第3章 アプリケーションの移行
structure-1_0.xsd にあります。
バグを報告する
3.1.3.3. 新しいモジュラークラスローディングシステムのパッケージリソース
概要
以前のバージョンの Enterprise Application Platform では、WEB-INF/ ディレクトリ内のすべてのリソー
スが WAR クラスパスに追加されました。JBoss Enterprise Application Platform 6 では、Web アプリケー
ションのアーティファクトは WEB-INF/classes および WEB-INF/lib ディレクトリからのみロードさ
れます。指定の場所でアプリケーションアーティファクトのパッケージ化に失敗した場
合、ClassNotFoundException や NoClassDefError などのランタイムエラーが発生します。
これらのクラスローディングエラーを解決するには、アプリケーションアーカイブの構造を編集するか、
カスタムモジュールを定義する必要があります。
リソースパッケージの編集
アプリケーションのみがリソースを使用できるようにするには、プロパティーファイル、JAR、
およびその他のアーティファクトを WEB-INF/classes/ または WEB-INF/lib/ ディレクトリ
へ移動し、WAR とバンドルします。この方法の詳細は 「ResourceBundle プロパティーの場所
変更」 を参照してください。
カスタムモジュールの作成
Enterprise Application Platform サーバー上で実行されているすべてのアプリケーションが、カス
タムリソースを使用できるようにするには、カスタムモジュールを作成する必要があります。こ
の方法の詳細は 「カスタムモジュールの作成」 を参照してください。
バグを報告する
3.1.3.4 . ResourceBundle プロパティーの場所変更
概要
以前のバージョンの JBoss Enterprise Application Platform で
は、EAP_HOME/server/SERVER_NAME/conf/ ディレクトリはクラスパスに存在し、アプリケーション
による使用が可能でした。このプロパティーを JBoss Enterprise Application Platform 6 のアプリケー
ションのクラスパスで使用できるようにするには、アプリケーション内でパッケージ化する必要がありま
す。
手順 3.2
1. WAR アーカイブをデプロイする場合、これらのプロパティーを WAR の WEB-INF/classes/
フォルダーでパッケージ化する必要があります。
2. これらのプロパティーを EAR のすべてのコンポーネントに対してアクセス可能にするには、JAR
のルートでパッケージ化し、EAR の lib/ フォルダーに置く必要があります。
バグを報告する
3.1.3.5. カスタムモジュールの作成
次の手順では、Enterprise Application Platform サーバー上で実行されているすべてのアプリケーションが
19
JBoss Enterprise Application Platform 6 移行ガイド
プロパティーファイルやその他のリソースを使用できるようにするため、カスタムモジュールを作成する
方法について説明します。
手順 3.3 カスタムモジュールの作成
1. m odule/ ディレクトリ構造を作成し、ファイルを追加します。
a. EAP_HOME/m odule ディレクトリ下にディレクトリ構造を作成し、ファイルや JAR が含まれ
るようにします。例は次の通りです。
$ cd EAP_HOME/modules/ $ mkdir -p myorg-conf/main/properties
b. 作成した EAP_HOME/m odules/m yorg-conf/m ain/properties/ ディレクトリにプロパ
ティーファイルを移動します。
c. 次の XML が含まれる m odule.xm l ファイルを EAP_HOME/m odules/m yorgconf/m ain/ ディレクトリに作成します。
<module xmlns="urn:jboss:module:1.1" name="myorg-conf">
<resources>
<resource-root path="properties"/>
</resources>
</module>
2. サーバー設定ファイルの ee サブシステムを編集します。JBoss CLI を使用するか、手作業でファ
イルを編集します。
A. 次の手順に従って JBoss CLI を使用し、サーバー設定ファイルを編集します。
a. サーバーを起動し、管理 CLI へ接続します。
A. Linux の場合は、コマンドラインで以下を入力します。
$ EAP_HOME/bin/jboss-cli.sh --connect
$ Connected to standalone controller at localhost:9999
B. Windows の場合は、コマンドラインで以下を入力します。
C:\>EAP_HOME\bin\jboss-cli.bat --connect
C:\> Connected to standalone controller at localhost:9999
b. ee サブシステムに m yorg-conf<global-modules> 要素を作成するには、コマンドライ
ンで以下を入力します。
/subsystem=ee:write-attribute(name=global-modules,
value=[{"name"=>"myorg-conf","slot"=>"main"}])
次の結果が表示されるはずです。
{"outcome" => "success"}
B. サーバー設定ファイルを手作業で編集したい場合は、次の手順に従ってください。
a. サーバーを停止し、テキストエディターでサーバー設定ファイルを開きます。スタンドア
ロンサーバーを実行している場合
は、EAP_HOME/standalone/configuration/standalone.xm l ファイルになりま
す。管理ドメインを実行している場合
は、EAP_HOME/dom ain/configuration/dom ain.xm l ファイルになります。
20
第3章 アプリケーションの移行
b. ee サブシステムを見つけ、m yorg-conf のグローバルモジュールを追加します。以下
は、m yorg-conf 要素が含まれるように編集された ee サブシステム要素の例になりま
す。
<subsystem xmlns="urn:jboss:domain:ee:1.0" >
<global-modules>
<module name="myorg-conf" slot="main" />
</global-modules>
</subsystem>
3. m y.properties という名前のファイルを正しいモジュールの場所にコピーしたとします。する
と、以下のようなコードを使用してプロパティーファイルをロードできるようになります。
Thread.currentThread().getContextClassLoader().getResource("my.properties");
バグを報告する
3.1.4. ロギングの変更
3.1.4 .1. ロギング依存関係の編集
概要
JBoss LogManager はすべてのロギングフレームワークのフロントエンドをサポートするため、現在のロ
ギングコードを保持することも、新しい JBoss のロギングインフラストラクチャーへ移行することも可能
です。モジュラークラスローディングが変更されたため、いずれの場合でもアプリケーションを変更して
必要な依存関係を追加する必要があるでしょう。
手順 3.4 アプリケーションロギングコードの更新
1. 「サードパーティーロギングフレームワークのアプリケーションコードの更新」 に従ってアプリ
ケーションコードを更新します。
2. 「新しい JBoss ロギングフレームワークを使用したコードの変更」 に従ってコードを編集しま
す。
バグを報告する
3.1.4 .2. サードパーティーロギングフレームワークのアプリケーションコードの更新
概要
JBoss Enterprise Application Platform 6 では Apache Commons Logging、Apache log4j、SLF4J、Java
Logging などの一般的なサードパーティーフレームワークのロギング依存関係はデフォルトで追加されて
います。しかし、log4j を使用し、ロギングサブシステムを使用してハンドラー (アペンダー) を設定した
くない場合は Enterprise Application Platform の log4j モジュールを除外する必要があります。
手順 3.5 log4 j.properties または log4 j.xml ファイルを使用するよう Enterprise Application
Platform 6 を設定する
1. 次の内容が含まれる jboss-deploym ent-structure.xm l を作成します。
21
JBoss Enterprise Application Platform 6 移行ガイド
<jboss-deployment-structure>
<deployment>
<!-- Exclusions allow you to prevent the server from automatically
adding some dependencies -->
<exclusions>
<module name="org.apache.log4j" />
</exclusions>
</deployment>
</jboss-deployment-structure>
2. WAR をデプロイする場合は jboss-deploym ent-structure.xm l ファイルを WEB-INF/ ディ
レクトリに置きます。EAR をデプロイする場合は jboss-deploym ent-structure.xm l ファイ
ルを MET A-INF/ ディレクトリに置きます。
3. デプロイメントの lib/ ディレクトリに log4 j.properties または log4 j.xm l ファイルが含
まれるようにします。
4. アプリケーションをデプロイします。
注記
log4j 設定ファイルを使用すると、ランタイム時に log4j ロギング設定を変更することができなくな
ります。
バグを報告する
3.1.4 .3. 新しい JBoss ロギングフレームワークを使用したコードの変更
概要
新しいフレームワークを使用するには、次のようにインポートとコードを変更します。
手順 3.6 タスク
1. インポートとロギングコードの変更
新しい JBoss ロギングフレームワークを使用するコードの例は次の通りです。
import org.jboss.logging.Level;
import org.jboss.logging.Logger;
private static final Logger logger =
Logger.getLogger(MyClass.class.toString());
if(logger.isTraceEnabled()) {
logger.tracef("Starting...", subsystem);
}
2. ロギング依存関係の追加
JBoss ロギングクラスが含まれる JAR は org.jboss.logging という名前のモジュールにあり
ます。MANIFEST -MF ファイルは次のようになるはずです。
Manifest-Version: 1.0
Dependencies: org.jboss.logging
モジュール依存関係の検索方法に関する詳細は 「クラスローディングの変更によるアプリケーショ
22
第3章 アプリケーションの移行
ン依存関係の更新」 と 「移行の問題のデバッグと解決」 を参照してください。
バグを報告する
3.1.5. アプリケーションパッケージの変更
3.1.5.1. EAR および WAR パッケージの編集
概要
アプリケーションを移行する際、モジュラークラスローディングの変更に伴い、EAR または WAR のパッ
ケージ構造を変更する必要がある場合があります。モジュール依存関係は次の順序でロードされます。
1. システム依存関係
2. ユーザー依存関係
3. ローカルリソース
4. デプロイメント間の依存性
手順 3.7 アーカイブパッケージの編集
1. WAR のパッケージ化
WAR は単一のモジュールで、WAR のすべてのクラスは同じクラスローダーでロードされます。そ
のため WEB-INF/lib/ ディレクトリにパッケージされるクラスは、WEB-INF/classes ディレク
トリのクラスと同様に処理されます。
2. EAR のパッケージ化
EAR は複数のモジュールによって構成されます。EAR/lib/ ディレクトリは単一のモジュールで、
EAR 内の各 WAR や EJB jar サブデプロイメントは個別のモジュールになります。依存関係が明示
的に定義された場合を除き、クラスは EAR 内の他のモジュールにあるクラスへアクセスすることは
できません。サブデプロイメントは常に親モジュール上で自動的な依存関係を持ち、親モジュール
は EAR/lib/ ディレクトリのクラスへのアクセスを許可します。しかし、サブデプロイメントはお
互いのアクセスを許可するため常に自動的な依存関係を持っているわけではありません。この挙動
は次のように ee サブシステム設定の <ear-subdeploym ents-isolated> 要素を設定すると
制御することができます。
<subsystem xmlns="urn:jboss:domain:ee:1.0" >
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
</subsystem></subsystem>
デフォルトでは false に設定され、EAR 内の他のサブデプロイメント属するクラスがサブデプロイ
メントに対して可視化されます。
クラスローディングについての詳細は、JBoss Enterprise Application Platform 6 開発ガイドの「ク
ラスローディングとモジュール」の章を参照してください。
バグを報告する
3.1.6. データソースおよびリソースアダプター設定の変更
3.1.6.1. 設定変更によるアプリケーションの更新
JBoss Enterprise Application Platform 5 ではサービスやサブシステムが多くの異なるファイルに設定され
ていました。JBoss Enterprise Application 6 では、設定は主に 1 つのファイルで行われます。アプリケー
ションが以下のサービスやリソースを使用する場合は、設定の変更が必要となる場合があります。
23
JBoss Enterprise Application Platform 6 移行ガイド
1. アプリケーションがデータソースを使用する場合は 「DataSource 設定の更新」を参照してくださ
い。
2. アプリケーションが JPA を使用し、現在 Hibernate JAR をバンドルする場合は、 「Hibernate また
は JPA に対するデータソースの設定」を参照し、移行のオプションについて確認してください。
3. アプリケーションがリソースアダプターを使用する場合は、 「リソースアダプター設定の更新」を
参照してください。
4. 「アプリケーションセキュリティーの変更設定」 を参照し、基本的なセキュリティーの設定変更方
法について確認してください。
バグを報告する
3.1.6.2. DataSource 設定の更新
概要
以前のバージョンの JBoss Enterprise Application Platform では、ファイル名の最後に * -ds.xm l が付く
ファイルに JCA データソースの設定が定義されていました。このファイルはサーバーの deploy/ ディレ
クトリにデプロイされるか、アプリケーションによってパッケージ化されました。JDBC ドライバーは
server/lib/ ディレクトリにコピーされるか、アプリケーションの WEB-INF/lib/ ディレクトリに
パッケージ化されました。この設定方法は開発環境では今でもサポートされていますが、JBoss の管理
ツールではサポートされていないため実稼働環境では推奨されません。
JBoss Enterprise Application Platform 6 ではデータソースはサーバー設定ファイルに設定されています。
Enterprise Application Platform インスタンスが管理ドメインで実行されている場合、データソースは
dom ain/configuration/dom ain.xm l ファイルに設定されます。Enterprise Application Platform イ
ンスタンスがスタンドアロンサーバーとして実行されている場合、データソースは
standalone/configuration/standalone.xm l ファイルに設定されます。このように設定された
データソースは、Web 管理コンソールやコマンドラインインターフェース (CLI) などが含まれる JBoss
管理インターフェースを使用して管理および制御されます。これらのツールはデプロイメントの管理や、
管理ドメインで実行されている複数のサーバーの設定を容易にします。
次の項では、使用可能な管理ツールによって管理およびサポートされるよう、データソースの設定を変更
する方法について説明します。
JBoss Enterprise Application Platform 6 の管理可能なデータソース設定の移行
JDBC 4.0 対応のドライバーはデプロイメントまたはコアモジュールとしてインストールすることができ
ます。JDBC 4.0 対応のドライバーには、ドライバークラス名を指定する MET AINF/services/java.sql.Driver ファイルが含まれています。JDBC 4.0 対応でないドライバーには
追加の設定が必要となります。ドライバーを JDBC 4.0 対応にする方法や、現在のデータソース設定を
Web 管理コンソールや CLI によって管理可能な設定に更新する方法の詳細については 「JDBC ドライ
バーのインストールと設定」 を参照してください。
アプリケーションが Hibernate や JPA を使用する場合、追加の変更が必要となる場合があります。詳細は
「Hibernate または JPA に対するデータソースの設定」 を参照してください。
IronJacamar 移行ツールを使用した設定データの変換
「IronJacamar ツールを使用してデータソースとリソースアダプターの設定を移行する」 の通り、
IronJacamar ツールを使用してデータソースやリソースアダプター設定を移行することが可能です。この
ツールは * -ds.xm l スタイルの設定ファイルを JBoss Enterprise Application Platform 6 が想定する形式
に変換します。
バグを報告する
24
第3章 アプリケーションの移行
3.1.6.3. JDBC ドライバーのインストールと設定
概要
次の 2 つの方法の 1 つを用いて JDBC ドライバーをコンテナにインストールすることができます。
デプロイメントとしてのインストール
コアモジュールとしてのインストール
これらの方法の利点と欠点は次の通りです。
JBoss Enterprise Application Platform 6 ではデータソースはサーバー設定ファイルに設定されています。
Enterprise Application Platform インスタンスが管理ドメインで実行されている場合、データソースは
dom ain/configuration/dom ain.xm l ファイルに設定されます。Enterprise Application Platform イ
ンスタンスがスタンドアロンサーバーとして実行されている場合、データソースは
standalone/configuration/standalone.xm l ファイルに設定されます。両モードで同じである
スキーマ参照情報は JBoss Enterprise Application Platform 6 インストールの doc/ ディレクトリにあり
ます。ここでは説明上、サーバーがスタンドアロンサーバーとして稼働し、データソースが
standalone.xm l ファイルに設定されていると仮定します。
手順 3.8 JDBC ドライバーのインストールと設定
1. JDBC ドライバーのインストール
a. JDBC ドライバーのデプロイメントとしてのインストール
これはドライバーのインストールに推奨される方法です。JDBC ドライバーがデプロイメン
トとしてインストールされると、普通の JAR としてデプロイされます。JBoss Enterprise
Application Platform インスタンスがスタンドアロンサーバーとして実行されている場合は、
JDBC 4.0 対応の JAR を EAP_HOME/standalone/deploym ents/ ディレクトリへコピー
します。サーバーが管理ドメインとして実行されている場合は、JAR を
EAP_HOME/dom ain/deploym ents/ ディレクトリへコピーします。
スタンドアロンサーバーにデプロイメントとしてインストールされた MySQL JDBC ドライ
バーの例は次の通りです。
$cp mysql-connector-java-5.1.15.jar EAP_HOME/standalone/deployments/
JDBC 4.0 対応のドライバーは自動的に認識され、名前とバージョンによってシステムへイン
ストールされます。JDBC 4.0 対応の JAR にはドライバーのクラス名を指定する MET AINF/services/java.sql.Driver という名前のテキストファイルが含まれてます。ドラ
イバーが 4.0 対応でない場合は、次の方法の 1 つを用いてデプロイ可能にすることができま
す。
java.sql.Driver ファイルを作成し、MET A-INF/services/ パス下の JAR に追加
します。次の例のように、このファイルにはドライバークラス名が含まれていなければな
りません。
com.mysql.jdbc.Driver
java.sql.Driver ファイルをデプロイメントディレクトリに作成します。スタンドア
ロンサーバーとして実行されている JBoss Enterprise Application Platform 6 のインスタ
ンスの場合、このファイルを EAP_HOME/standalone/deploym ents/MET AINF/services/java.sql.Driver に置く必要があります。サーバーが管理ドメイン
で実行されている場合、EAP_HOME/dom ain/deploym ents/MET AINF/services/java.sql.Driver に置く必要があります。
この方法の利点は次の通りです。
25
JBoss Enterprise Application Platform 6 移行ガイド
モジュールを定義する必要がないため、最も簡単な方法になります。
サーバーが管理ドメインで実行されている場合、この方法を使用するデプロイメントは自
動的にドメインの全サーバーへ伝播されます。そのため、管理者が手作業で ドライバー
JAR を配布する必要がありません。
この方法の難点は次の通りです。
ドライバーと依存ライセンス JAR を持つ JARなど、JDBC ドライバーが複数の JAR で構
成されている場合、ドライバーをデプロイメントとしてインストールすることができませ
ん。この場合、JDBC ドライバーをコアモジュールとしてインストールする必要がありま
す。
ドライバーが JDBC 4.0 対応でない場合、ドライバークラス名が含まれるファイルを作成
して JAR へインポートするか、deploym ents/ ディレクトリにオーバーレイする必要
があります。
b. コアモジュールとしての JDBC ドライバーのインストール
a. EAP_HOME/m odules/ ディレクトリ下にファイルパス構造を作成します。この構造に
はドライバー JAR とモジュールを定義する m odule.xm l ファイルが含まれます。例
えば、前述の MySQL JDBC ドライバーを使用して次のようなディレクトリ構造を作成
します。EAP_HOME/m odules/com /m ysql/m ain/
b. m ain/ サブディレクトリに次の m odule.xm l ファイルを作成します。
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java5.1.15.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
</dependencies>
</module>
モジュール名「com.mysql」はこのモジュールのディレクトリ構造と一致しま
す。<dependencies> 要素は、このモジュールの他のモジュールへの依存関係を指
定するために使用されます。この場合、全 JDBC データソースの場合と同様
に、javax.api という名前の他のモジュールによって定義される Java JDBC API に
依存します。このモジュールは m odules/javax/api/m ain/ ディレクトリに存在
します。
注記
m odule.xm l ファイルの最初に空白文字が存在しないようにしてください。空
白文字が存在すると、このドライバーに対して 「New missing/unsatisfied
dependencies」エラーが発生します。
c. MySQL JDBC ドライバー JAR を EAP_HOME/m odules/com /m ysql/m ain/ ディレ
クトリへコピーします。
$cp mysql-connector-java-5.1.15.jar
EAP_HOME/modules/com/mysql/main/
この方法の利点は次の通りです。
JDBC ドライバーが複数の JAR で構成される場合に唯一使用できる方法です。
この方法では、ドライバー JAR を変更したりファイルオーバーレイを作成せずに、JDBC
26
第3章 アプリケーションの移行
4.0 対応でないドライバーをインストールすることができます。
この方法の難点は次の通りです。
モジュールの設定が難しくなります。
管理ドメインで実行されている各サーバーへモジュールを手作業でコピーする必要があり
ます。
2. データソースの設定
a. データベースドライバーの追加
<driver> 要素を同じファイルの <drivers> 要素に追加します。以前 * -ds.xm l ファイ
ルに定義されたデータソース情報と同じ情報が一部含まれます。
最初にドライバー JAR が JDBC 4.0 対応であるか判断します。JDBC 4.0 対応の JAR にはド
ライバークラス名を指定する MET A-INF/services/java.sql.Driver ファイルが含ま
れています。サーバーはこのファイルを使用して JAR のドライバークラス名を探します。
JDBC 4.0 対応の ドライバーの JAR には既に <driver-class> 要素が指定されているた
め、この要素は必要ありません。JDBC 4.0 対応 MySQL ドライバーのドライバー要素の例は
次の通りです。
<driver name="mysql-connector-java-5.1.15.jar" module="com.mysql"/>
JDBC 4.0 対応でないドライバーにはドライバークラス名を指定する MET AINF/services/java.sql.Driver がないため、ドライバークラスを識別するために
<driver-class> が必要となります。JDBC 4.0 に対応していないドライバーのドライバー
要素の例は次の通りです。
<driver name="mysql-connector-java-5.1.15.jar" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class></driver>
b. データソースの作成
standalone.xm l ファイルの <datasources> セクションに <datasource> 要素を作
成します。このファイルには、以前 * -ds.xm l に定義されたデータソース情報と同じ情報の
多くが含まれています。
standalone.xm l ファイルの MySQL データソース要素の例は次の通りです。
<datasource jndi-name="java:/YourDatasourceName" poolname="YourDatasourceName">
<connectionurl>jdbc:mysql://localhost:3306/YourApplicationURL</connection-url>
<driver>mysql-connector-java-5.1.15.jar</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transactionisolation>
<pool>
<min-pool-size>100</min-pool-size>
<max-pool-size>200</max-pool-size>
</pool>
<security>
<user-name>USERID</user-name>
<password>PASSWORD</password>
</security>
<statement>
<prepared-statement-cache-size>100</prepared-statement-cache-size>
<share-prepared-statements/>
</statement>
</datasource>
27
JBoss Enterprise Application Platform 6 移行ガイド
バグを報告する
3.1.6.4 . Hibernate または JPA に対するデータソースの設定
アプリケーションが JPA を使用し、現在 Hibernate JAR をバンドルする場合、JBoss Enterprise
Application Platform 6 に含まれる Hibernate を使用した方がよい場合があります。このバージョンの
Hibernate を使用するには、アプリケーションより古いバージョンの Hibernate バンドルを削除する必要
があります。
手順 3.9 Hibernate バンドルの削除
1. アプリケーションライブラリーフォルダーより Hibernate JAR を削除します。
2. persistence.xm l ファイルの <hibernate.transaction.m anager_lookup_class> 要
素は必要がないため、削除またはコメントアウトします。
バグを報告する
3.1.6.5. リソースアダプター設定の更新
概要
以前のバージョンのアプリケーションサーバーでは、リソースアダプター設定は、ファイル名の最後に
* -ds.xm l が付くファイルで定義されました。JBoss Enterprise Application Platform 6 ではリソースア
ダプターはサーバー設定ファイルで設定されます。管理ドメインで実行されている場合、設定ファイルは
EAP_HOME/dom ain/configuration/dom ain.xm l ファイルになります。スタンドアロンサーバーと
して実行されている場合、EAP_HOME/standalone/configuration/standalone.xm l ファイルの
リソースアダプターを設定します。Resource adapter descriptors のスキーマ参照情報は両モード共通で
す。
リソースアダプターの定義
リソースアダプター記述子の情報は、サーバー設定ファイルの次のサブシステム要素下に定義されます。
<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"/>
以前リソースアダプター * -ds.xm l ファイルに定義された情報と同じものの一部を使用します。
サーバー設定ファイルのリソースアダプター要素の例は次の通りです。
28
第3章 アプリケーションの移行
<resource-adapters>
<resource-adapter>
<archive>multiple-full.rar</archive>
<config-property name="Name">ResourceAdapterValue</config-property>
<transaction-support>NoTransaction</transaction-support>
<connection-definitions>
<connection-definition
classname="org.jboss.jca.test.deployers.spec.rars.multiple.MultipleManagedConnectionFacto
ry1"
enabled="true" jndi-name="java:/eis/MultipleConnectionFactory1"
pool-name="MultipleConnectionFactory1">
<config-property name="Name">MultipleConnectionFactory1Value</configproperty>
</connection-definition>
<connection-definition
classname="org.jboss.jca.test.deployers.spec.rars.multiple.MultipleManagedConnectionFacto
ry2"
enabled="true" jndi-name="java:/eis/MultipleConnectionFactory2"
pool-name="MultipleConnectionFactory2">
<config-property name="Name">MultipleConnectionFactory2Value</configproperty>
</connection-definition>
</connection-definitions>
<admin-objects>
<admin-object
classname="org.jboss.jca.test.deployers.spec.rars.multiple.MultipleAdminObject1Impl"
jndi-name="java:/eis/MultipleAdminObject1">
<config-property name="Name">MultipleAdminObject1Value</config-property>
</admin-object>
<admin-object classname="org.jboss.jca.test.deployers.spec.rars.multiple.MultipleAdminObject2Impl"
jndi-name="java:/eis/MultipleAdminObject2">
<config-property name="Name">MultipleAdminObject2Value</config-property>
</admin-object>
</admin-objects>
</resource-adapter>
</resource-adapters>
バグを報告する
3.1.7. セキュリティーの変更
3.1.7.1. アプリケーションセキュリティーの変更設定
基本認証のセキュリティーの設定
UsersRolesLoginModule は常にクラスパスのプロパティーファイルを検索しました。以前のバージョ
ンのJBoss Enterprise Application Platform では、EAP_HOME/server/SERVER_NAME/conf/ ディレク
トリに置かれたプロパティーファイルはクラスパス上にあり、UsersRolesLoginModule によって簡単
に見つかりました。JBoss Enterprise Application Platform 6 ではディレクトリ構造が変更になりました。
プロパティーファイルをアプリケーション内でパッケージ化し、クラスパスで使用できるようにする必要
があります。
基本認証のセキュリティーを設定するには、security-dom ains 下の新しいセキュリティードメインを
29
JBoss Enterprise Application Platform 6 移行ガイド
standalone/configuration/standalone.xm l または
dom ain/configuration/dom ain.xm l サーバー設定ファイルに追加します。
<security-domain name="example">
<authentication>
<login-module code="UsersRoles" flag="required">
<module-option name="usersProperties"
value="${jboss.server.config.dir}/example-users.properties"/>
<module-option name="rolesProperties"
value="${jboss.server.config.dir}/example-roles.properties"/>
</login-module>
</authentication>
</security-domain>
JBoss Enterpise Application Platform 6 インスタンスがスタンドアロンサーバーとして実行されている場
合、 ${jboss.server.config.dir} は EAP_HOME/standalone/configuration/ ディレクトリ
を参照します。インスタンスが管理ドメインで実行されている場合、
${jboss.server.config.dir} は EAP_HOME/dom ain/configuration/ ディレクトリを参照し
ます。
セキュリティードメイン名の変更
JBoss Enterprise Application Platform 6 では、セキュリティードメインの名前の最初に java:/jaas/
が付かないようになりました。
Web アプリケーションでは jboss-web.xm l のセキュリティー設定よりこのプレフィックスを削除
する必要があります。
エンタープライズアプリケーションでは、jboss-ejb3.xm l ファイルのセキュリティードメイン設
定よりこのプレフィックスを削除する必要があります。JBoss Enterprise Application Platform 6 では
jboss.xm l はこのファイルに置き換えられました。
バグを報告する
3.1.8. JNDI の変更
3.1.8.1. アプリケーションの JNDI 名前空間名の更新
概要
EJB 3.1 は標準化されたグローバル JNDI 名前空間や、Java EE アプリケーションの様々なスコープへマッ
プする複数の関連名前空間を導入しました。移植可能な EE アプリケーションに使用される JNDI 名前空
間は java:global、 java:m odule、 java:app の 3 つです。JNDI ルックアップを使用するアプリ
ケーションを変更し、新しい標準 JNDI 名前空間の慣例に従うようにする必要があります。
手順 3.10 JNDI ルックアップの変更
1. 「移植可能な JNDI ネーミング構文」 について学ぶ
2. 「JNDI 名前空間のルールの確認」
3. 「新しい JNDI 名前空間ルールに準拠するようアプリケーションを変更する」
JNDI マッピングの例
以前のリリースにおける JNDI 名前空間の例や、 JBoss Enterprise Application Platform 6 で指定する方法
については 「以前のリリースにおける JNDI 名前空間の例、また JBoss Enterprise Application Platform 6
での名前空間の指定方法」 を参照してください。
30
第3章 アプリケーションの移行
バグを報告する
3.1.8.2. 移植可能な JNDI ネーミング構文
概要
論理的な名前空間は 4 つあり、それぞれ独自のスコープを持っています。このうち 3 つは移植可能な
JNDI ルックアップに利用されます。以下の表は各名前空間をいつどのように使用するかを説明していま
す。
表 3.1 移植可能な JNDI 名前空間
JNDI 名前空間
詳細
java:global
この名前空間の名前はアプリケーションサーバーインスタンス内に
デプロイされている全アプリケーションで共有されます。この名前
空間の名前を使いリモートの EJB を検索します。
以下は java:global 名前空間の例になります。
java:global/jboss-seam -booking/jboss-seam booking.jar/HotelBookingAction
java:module
この名前空間の名前は、1 つの EJB モジュールにある全エンタープ
ライズ Bean や Web モジュールにある全コンポーネントなど、モ
ジュール内の全コンポーネントで共有されます。
java:module 名前空間の例は次の通りです。
java:m odule/HotelBookingAction!org.jboss.seam .exa
m ple.booking.HotelBooking
java:app
この名前空間の名前は、1つのアプリケーション内にある全モ
ジュールのコンポーネントすべてで共有されます。例えば、同じ
EAR ファイルにある WAR や EJB jar ファイルは java:app
namespace のリソースにアクセスできます。
以下は java:app 名前空間の例になります。 java:app/jbossseam -booking.jar/HotelBookingAction
JNDI ネーミングコンテキストの詳細は「JSR 316: JavaT M Platform, Enterprise Edition (Java EE) 仕様
バージョン 6」 の EE.5.2.2 「Application Component Environment Namespaces」 を参照してください。
http://jcp.org/en/jsr/detail?id=316 からこの仕様をダウンロードすることができます。
バグを報告する
3.1.8.3. JNDI 名前空間のルールの確認
概要
JBoss Enterprise Application Platform 6 では JNDI 名前空間の名前が改良され、アプリケーションにバイ
ンドされた名前に対して一貫した予測可能なルールを提供するだけでなく、将来的に互換性の問題が起こ
らないよう対処されます。そのため、現在の名前空間が新しいルールに準拠しない場合、問題が発生する
ことがあります。
名前空間は次のルールに準拠する必要があります。
31
JBoss Enterprise Application Platform 6 移行ガイド
1. DefaultDS や jdbc/DefaultDS のような修飾されていない相対名は、コンテキストに応じて
java:com p/env や java:m odule/env、java:jboss/env のいずれかに相対的に修飾されな
ければなりません。
2. /jdbc/DefaultDS などの修飾されていない absolute 名は java:jboss/root 名に相対的に
修飾されなければなりません。
3. java:/jdbc/DefaultDS などの修飾された absolute 名は、前述の修飾されていない
absolute 名と同様に修飾されなければなりません。
4. 特殊な java:jboss 名前空間は AS サーバーインスタンス全体で共有されます。
5. プレフィックスが java: である relative 名は、 com p、m odule、 app、global、 プロプラ
エタリ jboss の 5 つの名前空間の 1 つでなければなりません。 名前が java:xxx で始まり、xxx
が前述の 5 つの名前空間と一致しない場合、無効な名前エラーが発生する原因となります。
バグを報告する
3.1.8.4 . 新しい JNDI 名前空間ルールに準拠するようアプリケーションを変更する
JBoss Enterprise Application Platform 5.1 の JNDI ルックアップの例は次の通りです。通常、このコー
ドは初期化メソッドに存在します。
private ProductManager productManager;
try {
context = new InitialContext();
productManager = (ProductManager)
context.lookup("OrderManagerApp/ProductManagerBean/local");
} catch(Exception lookupError) {
throw new ServletException("Unable to find the ProductManager bean",
lookupError);
}
ルックアップ名は OrderManagerApp/ProductManagerBean/local になります。
次の例は、JBoss Enterprise Application Platform 6 では同じルックアップがどのようにコード化され
るかを表しています。
@EJB(lookup=“java:app/OrderManagerEJB/ProductManagerBean!services.ejb.ProductMan
ager")
private ProductManager productManager;
ルックアップ値はメンバー変数として定義され、新しい移植可能な java:app JNDI 名前空間名であ
る java:app/OrderManagerEJB/ProductManagerBean!services.ejb.ProductManager
が使用されます。
バグを報告する
3.1.8.5. 以前のリリースにおける JNDI 名前空間の例、また JBoss Enterprise Application
Platform 6 での名前空間の指定方法
32
第3章 アプリケーションの移行
表 3.2
JBoss Enterprise Application
Platform 5.x の名前空間
JBoss Enterprise Application
Platform 6 の名前空間
OrderManagerApp/ProductManagerBe
an/local
java:module/ProductManagerBean!servi EE6 標準のバイン
ces.ejb.ProductManager
ディング、同じモ
ジュール内でのみ
アクセス可能
OrderManagerApp/ProductManagerBe
an/local
java:app/OrderManagerEJB/ProductMa
nagerBean!services.ejb.ProductManag
er
EE6 標準のバイン
ディング、同じア
プリケーション内
でのみアクセス可
能
OrderManagerApp/ProductManagerBe
an/local
java:global/OrderManagerApp/OrderMa
nagerEJB/ProductManagerBean!servic
es.ejb.ProductManager
EE6 標準のバイン
ディング、グロー
バルにアクセス可
能
java:comp/UserT ransaction
java:comp/UserT ransaction
アプリケーション
が直接作成するス
レッドなど、EE
以外のスレッド対
してアクセス可能
java:comp/UserT ransaction
java:jboss/UserT ransaction
グローバルにアク
セス可能。
java:comp/UserT r
ansaction を利用
できない場合に使
用。
java:/T ransactionManager
java:jboss/T ransactionManager
java:/T ransactionSynchronizationRegis
try
java:jboss/T ransactionSynchronization
Registry
追加コメント
バグを報告する
3.2. ア プ リ ケ ー シ ョ ン の ア ー キ テ ク チ ャ ー や コ ン ポ ー ネ ン ト に
よって異なる変更
3.2.1. アプリケーションのアーキテクチャーやコンポーネントによって異なる変更
の確認
アプリケーションが下記の技術やコンポーネントを使用する場合、JBoss Enterprise Application Platform
6 へ移行する時にアプリケーションの変更が必要となることがあります。
Hibernate と JPA
アプリケーションが Hibernate または JPA を使用する場合、アプリケーションを変更する必要が
あります。
REST
33
JBoss Enterprise Application Platform 6 移行ガイド
アプリケーションが JAX-RS を使用する場合、JBoss Enterprise Application Platform 6 は自動的
に REST Easy を設定するため、手作業で設定する必要がなくなりました。詳細は 「JAX-RS お
よび REST Easy の変更の設定」 を参照してください。
LDAP
JBoss Enterprise Application Platform 6 では LDAP セキュリティーレルムの設定が異なります。
アプリケーションが LDAP を使用する場合、 「LDAP セキュリティーレルムの変更設定」 で詳細
を確認してください。
メッセージング
JBoss Messaging は JBoss Enterprise Application Platform 6 から除外されました。アプリケー
ションがメッセージングプロバイダーとして JBoss Messaging を使用する場合、 JBoss
Messaging コードを HornetQ に置き換える必要があります。詳細は 「HornetQ を JMS プロバ
イダーとして使用するためにアプリケーションを移行」 を参照してください。
クラスタリング
JBoss Enterprise Application Platform 6 ではクラスタリングを有効にする方法が変更になりまし
た。詳細は 「クラスタリングに対するアプリケーションの変更」を参照してください。
サービススタイルのデプロイメント
JBoss Enterprise Application Platform 6 はサービススタイル記述子を使用しないようになりまし
たが、できる限り変更がない状態でコンテナはサービススタイルデプロイメントをサポートしま
す。デプロイメントの情報は 「サービススタイルデプロイメントを使用するアプリケーションの
更新」 を参照してください。
リモート呼び出し
アプリケーションがリモート呼び出しを行う場合、JNDI を使用して Bean のプロキシをルック
アップし、返されたプロキシ上で呼び出しすることができます。必要な構文や名前空間の変更に
ついては 「JBoss Enterprise Application Platform 5 にデプロイされ、JBoss Enterprise
Application Platform 6 へリモート呼び出しを行うアプリケーションの移行」を参照してくださ
い。
Seam 2.2
アプリケーションが Seam 2.2 を使用する場合は、 「Seam 2.2 アーカイブの JBoss Enterprise
Application Platform 6 への移行」を参照して必要な変更について確認してください。
Spring
アプリケーションが Spring を使用する場合は 「Spring アプリケーションの移行」を参照してく
ださい。
移行に影響する可能性があるその他の変更
アプリケーションに影響する可能性がある JBoss Enterprise Application Platform 6 のその他の
変更については 「移行に影響する可能性があるその他の変更について理解する」を参照してくだ
さい。
バグを報告する
34
第3章 アプリケーションの移行
3.2.2. Hibernate および JPA の変更
3.2.2.1. Hibernate や JPA を使用するアプリケーションの更新
概要
アプリケーションが Hibernate や JPAを使用する場合は、次の項を読んで JBoss Enterprise Application
Platform 6 への移行に必要な変更を行ってください。
手順 3.11
1. 「Hibernate および JPA を使用するアプリケーションの変更設定」
2. 「Hibernate 4 を使用するよう Hibernate 3 のアプリケーションを更新する」
3. 「JPA 2.0 の仕様に準拠するようアプリケーションを更新する」
4. 「Infinispan による JPA/Hibernate 2 次キャッシュの置き換え」
5. 「Hibernate Validator 4 への移行」
バグを報告する
3.2.2.2. Hibernate および JPA を使用するアプリケーションの変更設定
概要
アプリケーションに persistence.xm l ファイルが含まれていたり、コードが
@ PersistenceContext アノテーションや @ PersistenceUnit アノテーションを使用する場合、
JBoss Enterprise Application Platform 6 はデプロイメント中にこれを検出し、アプリケーションによって
JPA が使用されることを想定します。Hibernate 4 とその他の依存関係の一部を暗黙的にアプリケーショ
ンのクラスパスへ追加します。
現在、アプリケーションが Hibernate 3 ライブラリを使用する場合、ほとんどの場合で Hibernate 4 へ切
り替えることが可能で、Hibernate 4 を使用して正常に実行されるはずです。しかし、アプリケーション
をデプロイする時に ClassNotFoundExceptions が発生した場合、次の方法の 1 つを用いて問題解決
を図ることができます。
重要
この手順は、最初にアプリケーションを JBoss Enterprise Application Platform 6 上で実行できる
ようにすることを目的としています。この設定はサポート対象ではなく、Hibernate 4 を使用する
よう次の手順でアプリケーションをアップグレードする必要があります。
手順 3.12 タスク
1. 必要な Hibernate 3 の JAR をアプリケーションライブラリへコピーする
見つからないクラスが含まれる特定の Hibernate 3 JAR をアプリケーションの lib/ ディレクトリ
へコピーするか、他の方法を使用してクラスパスに追加すると問題を解決できることがあります。
これにより、Hibernate のバージョンを複数使用することが原因で ClassCastExceptions や他
のクラスローディングの問題が発生することがあります。この問題が発生した場合、次の方法で対
処する必要があります。
2. Hibernate 3 ライブラリのみを使用するようサーバーへ指示する
JBoss Enterprise Application Platorm 6 では、Hibernate 3.5 (およびそれ以降のバージョン) の永続
35
JBoss Enterprise Application Platform 6 移行ガイド
性プロバイダー jar をアプリケーションと共にパッケージ化することができます。Hibernate 3 ライ
ブラリのみを使用し、Hibernate 4 を除外するようサーバーを指示するには、次のように
jboss.as.jpa.providerModule を persistence.xm l の hibernate3-bundled に設定
する必要があります。
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="plannerdatasource_pu">
<description>Hibernate 3 Persistence Unit.</description>
<jta-data-source>java:jboss/datasources/PlannerDS</jta-data-source>
<properties>
<property name="hibernate.show_sql" value="false" />
<property name="jboss.as.jpa.providerModule" value="hibernate3bundled" />
</properties>
</persistence-unit>
</persistence>
Java 永続性 API (JPA) のデプロイヤーによってアプリケーションに永続性プロバイダーがあること
が検出され、Hibernate 3 ライブラリが使用されます。
3. Hibernate の 2 次キャッシュの無効化
JBoss Enterprise Application Platorm 6 における Hibernate 3 の 2 次キャッシュの挙動は以前のリ
リースとは異なっています。アプリケーションを用いて Hibernate の 2 次キャッシュを使用してい
る場合、Hibernate 4 にアップグレードするまで 2 次キャッシュを無効にする必要があります。2
次キャッシュを無効にするには、persistence.xm l ファイルの
<hibernate.cache.use_second_level_cache> を false に設定します。
バグを報告する
3.2.2.3. Hibernate JPA 永続ユニットプロパティ
概要
JBoss Enterprise Application Platform 6 は自動的に以下の Hibernate 4.x 設定プロパティを設定します。
36
第3章 アプリケーションの移行
表 3.3 Hibernate 永続ユニットプロパティ
プロパティ名
デフォルト値
目的
hibernate.id.
new_generator
_m appings
true
@ GeneratedValue(AUT O) を使用して新しいエンティ
ティに対して一意のインデックスキーを生成する場合にこの
設定は有効です。新規のアプリケーションのデフォルト値
はtrue になるはずです。Hibernate 3.3.x を使用した既存の
アプリケーションが継続してシーケンスオブジェクトやテー
ブルベースのジェネレーターを使用し、後方互換性を維持す
るにはデフォルト値 false に変更する必要がある場合があ
ります。アプリケーションは persistence.xm l ファイル
にあるこの値を上書きすることが可能です。
詳細は以下を参照してください。
hibernate.tra
nsaction.jta.
platform
hibernate.ejb
.resource_sca
nner
org.hibernate
.service.jta.
platform .spi.
JtaPlatform イ
ンターフェースの
インスタンス
このクラスはトランザクションマネージャーやユーザーのト
ランザクション、トランザクション同期化レジストリを
Hibernate に渡します。
hibernate.ejb
.resource_sca
nner
org.hibernate
.ejb.packagin
g.Scanner イン
ターフェースのイ
ンスタンス
このクラスは JBoss Enterprise Application Platform のアノ
テーションインデクサーを使用してより高速なデプロイメン
トを提供する方法を認識しています。
このプロパティは
hibernate.transaction.jta.platform と競合する
ことがあるため、persistence.xml に存在する場合は削除され
ます。
hibernate.tra
nsaction.m ana
ger_lookup_cl
ass
hibernate.ses
sion_factory_
nam e
QUALIFIED_PERS
ISTENCE_UNIT_N
AME
アプリケーション名 + 永続ユニット名に設定されます。アプ
リケーションは異なる値を指定することができますが JBoss
Enterprise Application Platform インスタンス上のすべてのア
プリケーションデプロイメントで一意となる値でなければな
りません。
hibernate.ses
sion_factory_
nam e_is_jndi
false
アプリケーションが
hibernate.session_factory_nam e の値を指定しな
かった場合のみ設定されます。
hibernate.ejb
.entitym anage
r_factory_nam
e
QUALIFIED_PERS
ISTENCE_UNIT_N
AME
アプリケーション名 + 永続ユニット名に設定されます。アプ
リケーションは異なる値を指定することができますが JBoss
Enterprise Application Platform インスタンス上のすべてのア
プリケーションデプロイメントで一意となる値でなければな
りません。
In Hibernate 4.x, if new_generator_m appings is set to true:
@ GeneratedValue(AUT O) が org.hibernate.id.enhanced.SequenceStyleGenerator
へマッピングします。
37
JBoss Enterprise Application Platform 6 移行ガイド
@ GeneratedValue(T ABLE) が org.hibernate.id.enhanced.T ableGenerator へマッピ
ングします。
@ GeneratedValue(SEQUENCE) が
org.hibernate.id.enhanced.SequenceStyleGenerator へマッピングします。
In Hibernate 4.x, if new_generator_m appings is set to false:
@ GeneratedValue(AUT O) が Hibernate の "native" へマッピングします。
@ GeneratedValue(T ABLE) が org.hibernate.id.MultipleHiLoPerT ableGenerator へ
マッピングします。
@ GeneratedValue(SEQUENCE) が Hibernate の "seqhilo" へマッピングします。
これらプロパティーの詳細を確認するには、http://www.hibernate.org/docs へ移動し、 Hibernate 4.1
Developer Guide を参照してください。
バグを報告する
3.2.2.4 . Hibernate 4 を使用するよう Hibernate 3 のアプリケーションを更新する
概要
Hibernate 4 を使用するようアプリケーションを更新する場合、更新の一部である一般的な更新は、アプ
リケーションが現在使用する Hibernate のバージョンに関係なく適用されます。その他の更新については
アプリケーションが現在使用するバージョンを判断する必要があります。
手順 3.13 Hibernate 4 を使用するようアプリケーションを更新する
1. 自動インクリメントシーケンスジェネレーターのデフォルトの動作は JBoss Enterprise Application
Platform 6 で変更になりました。詳細は 「Hibernate アイデンティティの自動生成値の既存動作を
保持する」 を参照してください。
2. アプリケーションによって現在使用されている Hibernate のバージョンを判断し、下記より適切な
更新手順を選択します。
A. 「Hibernate 3.3.x アプリケーションの Hibernate 4.x への移行」
B. 「Hibernate 3.5.x アプリケーションの Hibernate 4.x への移行」
3. アプリケーションをクラスター化された環境で実行する場合は 「クラスター環境で稼働する、移行
された Seam および Hibernate アプリケーションの永続プロパティーの変更」 を参照してくださ
い。
バグを報告する
3.2.2.5. Hibernate アイデンティティの自動生成値の既存動作を保持する
Hibernate 3.5 には @ GeneratedValue を使用する際にアイデンティティやシーケンスカラムの生成方法
を指示する hibernate.id.new_generator_m appings というコアプロパティーが導入されまし
た。JBoss Enterprise Application Platform 6 ではこのプロパティーのデフォルト値は次のように設定され
ています。
ネイティブの Hibernate アプリケーションをデプロイする場合、デフォルト値は false になります。
JPA アプリケーションをデプロイする場合、デフォルト値は true になります。
新規アプリケーションのガイドライン
@ GeneratedValue アノテーションを使用する新しいアプリケーションでは
hibernate.id.new_generator_m appings プロパティーの値を true に設定するようにします。こ
38
第3章 アプリケーションの移行
の設定は異なるデータベースにおける移植性が高まるため推奨設定となります。ほとんどの場合で効率が
よく、場合によっては JPA 2 仕様との互換性に対応します。
新しい JPA アプリケーションでは JBoss Enterprise Application Platform 6 の
hibernate.id.new_generator_m appings プロパティーのデフォルトは true になります。こ
の値は変更しないでください。
新しいネイティブの Hibernate アプリケーションでは JBoss Enterprise Application Platform 6 の
hibernate.id.new_generator_m appings プロパティーのデフォルトは false になります。
このプロパティーを true に設定してください。
既存の JBoss Enterprise Application Platform 5 のアプリケーションに対するガイドライン
JBoss Enterprise Application Platform 6 へ移行する時、@ GeneratedValue アノテーションを使用する
既存のアプリケーションが同じジェネレーターを使用して新しいエンティティーに対してプライマリキー
の値を作成するよう確認してください。
既存の JPA アプリケーションでは JBoss Enterprise Application Platform 6 の
hibernate.id.new_generator_m appings プロパティーのデフォルトは true になりま
す。persistence.xm l ファイルでこのプロパティーを false に設定してください。
既存のネイティブ Hibernate アプリケーションでは JBoss Enterprise Application Platform 6 の
hibernate.id.new_generator_m appings プロパティーのデフォルトは false になります。
この値は変更しないでください。
これらプロパティー設定の詳細は 「Hibernate JPA 永続ユニットプロパティ」 を参照してください。
バグを報告する
3.2.2.6. Hibernate 3.3.x アプリケーションの Hibernate 4 .x への移行
手順 3.14
1. Hibernate の text タイプを JDBC LONGVARCHAR へマッピングする
バージョンが 3.5 以前の Hibernate では text 型は JDBC CLOB へマッピングされていました。
Java String プロパティーを JDBC CLOB へマッピングするため、新しい Hibernate タイプ
m aterialized_clob が Hibernate 4 に追加されました。JDBC CLOB へのマッピングが目的で
type="text" と設定されているプロパティーがアプリケーションにある場合は、次の項目の 1 つ
を実行する必要があります。
a. アプリケーションが hbm マッピングファイルを使用する場合、プロパティーを
type="m aterialized_clob" に変更します。
b. アプリケーションがアノテーションを使用する場合、@ T ype(type = "text") を @ Lob に
置き換えます。
2. コードを確認し戻り値型の変更を探す
数値集約の基準射影 (criteria projection) は HQL と同じ値型を返すようになるはずです。その結
果、org.hibernate.criterion の以下の射影からの戻り型が変更されます。
a. CountProjection、 Projections.rowCount()、
Projections.count(propertyNam e)、
Projections.countDistinct(propertyNam e) の変更により、count および count
distinct 射影は Long 値を返すようになります。
b. Projections.sum (propertyNam e) の変更により、sum 射影はプロパティー型によって
異なる値タイプを返すようになります。
39
JBoss Enterprise Application Platform 6 移行ガイド
注記
アプリケーションコードを変更しないと、java.lang.ClassCastException が
発生する原因となります。
a. Long、Short、Integer、プリミティブ型整数のいずれかとしてマッピングされているプ
ロパティーは Long 値が返されます。
b. Float、Double、プリミティブ浮動小数点型のいずれかとしてマッピングされているプ
ロパティーは Double 値が返されます。
バグを報告する
3.2.2.7. Hibernate 3.5.x アプリケーションの Hibernate 4 .x への移行
手順 3.15
1. AnnotationConfiguration の設定へのマージ
AnnotationConfiguration は既に廃止されていますが、移行に影響しないようにしなければ
なりません。
今でも hbm .xm l ファイルを使用している場合、JBoss Enterprise Application Platform 6 では 以前
のリリースで使用された org.hibernate.cfg.DefaultNam ingStrategy ではな
く、AnnotationConfiguration の org.hibernate.cfg.EJB3Nam ingStrategy を使用
することに注意してください。そのため、名前付けの不一致が発生する可能性があります。名前付
けストラテジーがデフォルトのアソシエーション (要素の多対多やコレクション) テーブルに依存す
る場合、この問題が発生することがあります。この問題を解決するには、レガシーの
org.hibernate.cfg.DefaultNam ingStrategy を使用するよう Hibernate に指示するため
Configuration#setNam ingStrategy を呼び出して
org.hibernate.cfg.DefaultNam ingStrategy#INST ANCE に渡します。
2. 新しい Hibernate DT D ファイル名に適合するよう名前空間を変更する
表 3.4
以前の DT D 名前空間
新しい DT D 名前空間
http://hibernate.sourceforge.net/hibernateconfiguration-3.0.dtd
http://www.hibernate.org/dtd/hibernateconfiguration-3.0.dtd
http://hibernate.sourceforge.net/hibernatemapping-3.0.dtd
http://www.hibernate.org/dtd/hibernatemapping-3.0.dtd
3. 環境変数の編集
a. Oracle で m aterialized_clob または m aterialized_blob プロパティーを使用して
いる場合、グローバル環境変数 hibernate.jdbc.use_stream s_for_binary を true
に設定する必要があります。
b. PostgreSQL で CLOB または BLOB プロパティーを使用している場合、グローバル環境変数
hibernate.jdbc.use_stream s_for_binary を false に設定する必要があります。
バグを報告する
3.2.2.8. クラスター環境で稼働する、移行された Seam および Hibernate アプリケーションの永続
プロパティーの変更
JPA コンテナーによって管理されるアプリケーションを移行する場合には、正しい永続プロパティが自動
的にコンテナーに渡されるので、シリアル化問題は発生しないはずです。
40
第3章 アプリケーションの移行
的にコンテナーに渡されるので、シリアル化問題は発生しないはずです。
ただし、Hibernate における変更により、移行した Seam または Hibernate アプリケーションをクラス
ター環境で実行すると、シリアル化問題が発生する可能性があります。 以下のようなエラーログが記録さ
れる場合があります:
javax.ejb.EJBTransactionRolledbackException: JBAS010361: Failed to deserialize
....
Caused by: java.io.InvalidObjectException: could not resolve session factory during
session deserialization [uuid=8aa29e74373ce3a301373ce3a44b0000, name=null]
このようなエラーを解決するには、設定ファイルのプロパティーを変更する必要があります。ほとんどの
場合、設定ファイルは persistence.xm l ファイルになります。ネイティブの Hibernate API アプリ
ケーションでは hibernate.cfg.xm l ファイルになります。
手順 3.16 クラスター環境で稼働する永続プロパティ設定
1. hibernate.session_factory_nam e 値を一意名に設定します。この名前は、JBoss
Enterprise Application Platform インスタンス上の全アプリケーションデプロイメントにわたって一
意である必要があります。例は次の通りです。
<property name="hibernate.session_factory_name" value="jboss-seambooking.ear_session_factory"/>
2. hibernate.ejb.entitym anager_factory_nam e 値を一意名に設定します。この名前は、
JBoss Enterprise Application Platform インスタンス上の全アプリケーションデプロイメントにわ
たって一意である必要があります。例は次の通りです。
<property name="hibernate.ejb.entitymanager_factory_name" value="seambooking.ear_PersistenceUnitName"/>
Hibernate JPA 永続ユニットプロパティーに関する詳しい情報は 「Hibernate JPA 永続ユニットプロパ
ティ」 を参照してください。
バグを報告する
3.2.2.9. JPA 2.0 の仕様に準拠するようアプリケーションを更新する
概要
JPA 2.0 の仕様では、永続コンテキストが JT A トランザクションの外部では伝播できないことが要件と
なっています。アプリケーションがトランザクションスコープの永続コンテキストのみを使用する場合、
JBoss Enterprise Application Platform 6 での挙動は以前のバージョンと変わらないため、変更を加える必
要はありません。アプリケーションが拡張永続コンテキスト (XPC) を使用してデータ変更のキューやバッ
チ処理を許可する場合は、アプリケーションを変更する必要があります。
永続コンテキストの伝搬挙動
拡張永続コンテキストを使用するステートフルセッション Bean である Bean1 がアプリケーションにあ
り、トランザクションスコープの永続コンテキストを使用するステートレスセッション Bean である
Bean2 を呼び出す場合、次のような挙動が想定されます。
Bean1が JT A トランザクションを開始し、JT A トランザクションがアクティブな状態で Bean2 メ
ソッドを呼び出す場合、JBoss Enterprise Application Platform 6 における挙動は以前のリリースと変
わらないため、変更を加える必要はありません。
Bean1 が JT A トランザクションを開始せず、 Bean2 メソッドを呼び出す場合、JBoss Enterprise
41
JBoss Enterprise Application Platform 6 移行ガイド
Application Platform 6 は拡張永続コンテキストを Bean2 へ伝搬しません。この挙動は拡張永続コン
テキストを Bean2 へ伝搬した以前のリリースとは異なっています。拡張永続コンテキストがトラン
ザクションエンティティーマネージャーによって Bean へ伝搬されることをアプリケーションが想定
している場合、アクティブな JT A トランザクション内で呼び出しを行うようにアプリケーションを変
更する必要があります。
バグを報告する
3.2.2.10. Infinispan による JPA/Hibernate 2 次キャッシュの置き換え
概要
2 次キャッシュ (2LC) に関し、 JBoss Cache は Infinispan に置き換えられました。これによ
り、persistence.xm l ファイルの変更が必要になります。使用する 2 次キャッシュが JPA または
Hibernate であるかによって、構文は若干異なります。ここで取り上げる例は Hibernate の使用が前提と
なっています。
以下は JBoss Enterprise Application Platform 5.x の persistence.xm l ファイルで 2 次キャッシュのプ
ロパティーを設定する例になります。
<property name="hibernate.cache.region.factory_class"
value="org.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactory"/>
<property name="hibernate.cache.region.jbc2.cachefactory"
value="java:CacheManager"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.region.jbc2.cfg.entity" value="mvcc-entity"/>
<property name="hibernate.cache.region_prefix" value="services"/>
次の手順ではこの例を用いて JBoss Enterprise Application Platform 6 で Infinispan を設定します。
手順 3.17 Infinispan を使用するよう persistence.xm l ファイルを変更する
1. JBoss Enterprise Application Platform 6 の JPA アプリケーション向けに Infinispan を設
定する
JBoss Enterprise Application Platform 6 で Infinispan を使用し、プロパティーを指定して JPA アプ
リケーションに対して同じ設定を行う方法は次の通りです。
<property name="hibernate.cache.use_second_level_cache" value="true"/>
さらに、次のように ENABLE_SELECT IVE または ALL を値として shared-cache-m ode を指定
する必要があります。
A. デフォルトは ENABLE_SELECT IVE で、これが推奨値となります。この場合、エンティティー
は明示的にキャッシュ可能であるとマークされない限りキャッシュされません。
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
B. ALL の場合、キャッシュ不可能であるとマークされていてもエンティティーは常にキャッシュさ
れます。
<shared-cache-mode>ALL</shared-cache-mode>
2. JBoss Enterprise Application Platform 6 のネイティブ Hibernate アプリケーションに対
して Infinispan を設定する
JBoss Enterprise Application Platform 6 で Infinispan を使用し、ネイティブ Hibernate アプリケー
42
第3章 アプリケーションの移行
ションに対して同じ設定を指定する方法は次の通りです。
<property name="hibernate.cache.region.factory_class"
value="org.jboss.as.jpa.hibernate4.infinispan.InfinispanRegionFactory"/>
<property name="hibernate.cache.infinispan.cachemanager"
value="java:jboss/infinispan/container/hibernate"/>
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
また、次の依存関係を MANIFEST .MF ファイルに追加する必要があります。
Manifest-Version: 1.0
Dependencies: org.infinispan, org.hibernate
Hibernate のキャッシュプロパティーに関する詳細は 「Hibernate キャッシュプロパティー」 を参照して
ください。
バグを報告する
3.2.2.11. Hibernate キャッシュプロパティー
43
JBoss Enterprise Application Platform 6 移行ガイド
表 3.5 プロパティー
プロパティー名
説明
hibernate.cache.provider_class
カスタム CacheProvider のクラス名。
hibernate.cache.use_m inim al_puts
ブール変数です。2 次キャッシュの操作を最適化
し、読み取りの回数を増やして書き込みを最小限
にします。これはクラスター化されたキャッシュ
で最も便利な設定で、Hibernate 3 ではクラスター
化されたキャッシュの実装に対してデフォルトで
有効になっています。
hibernate.cache.use_query_cache
ブール変数です。クエリキャッシュを有効にしま
す。各クエリをキャッシュ可能に設定する必要が
あります。
hibernate.cache.use_second_level_cac
he
ブール変数です。<cache> マッピングを指定す
るクラスに対してデフォルトで有効になっている
2 次 キャッシュを完全に無効にするため使用され
ます。
hibernate.cache.query_cache_factory
カスタム QueryCache インターフェースのクラ
ス名です。デフォルトの値はビルトイン
StandardQueryCache です。
hibernate.cache.region_prefix
2 次キャッシュのリージョン名に使用するプレ
フィックスです。
hibernate.cache.use_structured_entri
es
ブール変数です。人間が解読可能な形式でデータ
を 2 次キャッシュに保存するよう Hibernate を強
制します。
hibernate.cache.default_cache_concur
rency_strategy
@ Cacheable か @ Cache が使用される場合に使
用するデフォルトの
org.hibernate.annotations.CacheConcu
rrencyStrategy の名前を付与するため使用さ
れる設定です。@ Cache(strategy="..") を使
用してこのデフォルトが上書きされます。
バグを報告する
3.2.2.12. Hibernate Validator 4 への移行
概要
Hibernate Validator 4.x は、JSR 303 - Bean Validation を実装する完全に新しいコードベースです。
Validator 3.x から 4.x への移行プロセスは非常に簡単ですが、アプリケーションの移行時にいくつかの変
更を行う必要があります。
手順 3.18 以下の 1 つまたは複数のタスクを実行する必要がある場合があります。
1. デフォルトの ValidatorFactory へのアクセス
JBoss Enterprise Application Platform 6 は、デフォルトの ValidatorFactory を
java:com p/ValidatorFactory 以下にある JNDI コンテキストにバインドします。
2. ライフサイクルでトリガーされた検証の理解
Hibernate Core 4 と組み合わせて使用する場合、ライフサイクルベースの検証は Hibernate Core
により自動的に有効になります。
44
第3章 アプリケーションの移行
a. 検証は、エンティティー INSERT 操作、UPDAT E 操作、および DELET E 操作に対して行わ
れます。
b. 次のプロパティーを使用してイベントタイプによってグループが検証されるよう設定するこ
とができます。
javax.persistence.validation.group.pre-persist、
javax.persistence.validation.group.pre-update、
javax.persistence.validation.group.pre-rem ove
これらのプロパティーの値は、検証するグループの、カンマで区切られた完全修飾クラス名
です。
検証グループは、Bean Validation 仕様の新しい機能です。この新しい機能を使用しない場合
は、Hibernate Validator 4 に移行するときに変更を必要としません。
c. ライフサイクルベース検証は、javax.persistence.validation.m ode プロパティー
を none に設定することにより無効できます。このプロパティーの他の有効値は auto (デ
フォルト値)、callback、および ddl です。
3. アプリケーションが手動の検証を使用するよう設定
a. 検証を手動で制御する場合、次のいずれかの方法で Validator を作成できます。
getValidator() メソッドを使用して ValidatorFactory から Validator インス
タンスを作成します。
Validator インスタンスを EJB、CDI Bean、または他の Java EE の挿入可能なリソースに
挿入します。
b. Validator インスタンスをカスタマイズするため
に、ValidatorFactory.usingContext() により返された ValidatorContext を使
用できます。この API を使用して、カスタム
MessageInterpolator、T raverableResolver、および
ConstraintValidatorFactory を設定できます。これらのインターフェースは、Bean
Validation 仕様で指定され、Hibernate Validator 4 で新しい機能です。
4. 新しい Bean Validation の制約を使用するようコードを変更
Hibernate Validator 4 への移行時に、新しい Bean レベル検証制約では、コードの変更が必要で
す。
a. Hibernate Validator 4 にアップグレードする場合は、次のパッケージの制約を使用する必要
があります。
javax.validation.constraints
org.hibernate.validator.constraints
b. Hibernate Validator 3 に存在していたすべての制約は、Hibernate Validator 4 でも引き続き
利用できます。これらを使用するには、指定されたクラスをインポートし、場合によって
は、制約パラメーターの名前またはタイプを変更する必要があります。
5. カスタム制約の使用
Hibernate Validator 3 では、カスタム制約でorg.hibernate.validator.Validator イン
ターフェースを実装する必要がありました。Hibernate Validator 4 で
は、javax.validation.ConstraintValidator インターフェースを実装する必要がありま
す。このインターフェースには、以前のインターフェースと同じ initialize() メソッドと
isValid() メソッドが含まれますが、メソッドシグネチャーが変更されました。また、代替の
DDL は Hibernate Validator 4 でサポートされなくなりました。
バグを報告する
3.2.3. JAX-RS および RESTEasy の変更
45
JBoss Enterprise Application Platform 6 移行ガイド
3.2.3.1. JAX-RS および REST Easy の変更の設定
JBoss Enterprise Application Platform 6 は自動的に REST Easy を設定するため、手作業で設定する必要
はありません。そのため、web.xm l ファイルから既存の REST Easy の設定をすべて削除し、次の 3 つの
オプションの 1 つに置き換える必要があります。
1. Subclass javax.ws.rs.core.Application および @ ApplicationPath annotation アノ
テーションの使用。
これが最も簡単なオプションで、xml の設定が必要ありません。次のようにアプリケーションで
javax.ws.rs.core.Application をサブクラス化し、 JAX-RS クラスを使用可能にするパスを
用いてアノテーションを付けます。
@ApplicationPath("/mypath")
public class MyApplication extends Application {
}
上記の例では、JAX-RS リソースはパス /MY_WEB_APP_CONTEXT/m ypath/ で使用できるようにな
ります。
注記
パスは /m ypath/* ではなく /m ypath として指定する必要があることに注意してくださ
い。最後にフォワードスラッシュやアスタリスクがあってはなりません。
2. サブクラス javax.ws.rs.core.Application および JAX-RS マッピングの設定に web.xm l
を使用する。
@ ApplicationPath アノテーションを使用したくない場合でも
javax.ws.rs.core.Application をサブクラス化する必要があります。サブクラス化した後に
web.xm l ファイルに JAX-RS マッピングを設定します。
public class MyApplication extends Application {
}
<servlet-mapping>
<servlet-name>com.acme.MyApplication</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
上記の例では、JAX-RS リソースはパス /MY_WEB_APP_CONTEXT/hello で使用できるようになり
ます。
注記
この方法を使用して @ ApplicationPath アノテーションを使用して設定されたアプリ
ケーションパスを上書きすることもできます。
3. web.xm l ファイルの変更
Application をサブクラス化したくない場合、次のように web.xm l ファイルで JAX-RS のマッ
ピングを設定することが可能です。
46
第3章 アプリケーションの移行
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
上記の例では、JAX-RS リソースはパス /MY_WEB_APP_CONTEXT/hello で使用できるようになり
ます。
注記
このオプションを選択した場合、マッピングの追加のみが必要となります。対応するサーブ
レットを追加する必要はありません。対応するサーブレットはサーバーによって自動的に追
加されるはずです。
バグを報告する
3.2.4. LDAP セキュリティーレルムの変更
3.2.4 .1. LDAP セキュリティーレルムの変更設定
JBoss Enterprise Application Platform 5 では LDAP セキュリティーレルムは login-config.xm l ファ
イルの <application-policy> 要素に設定されていました。JBoss Enterprise Application Platform 6
では、LDAP セキュリティーレルムはサーバー設定ファイルの <security-dom ain> 要素に設定されて
います。サーバー設定ファイルはスタンドアロンサーバーでは
standalone/configuration/standalone.xm l ファイルになります。サーバーが管理ドメインで
実行されている場合、dom ain/configuration/dom ain.xm l ファイルがサーバー設定ファイルにな
ります。
JBoss Enterprise Application Platform 5 の login-config.xm l ファイルにある LDAP セキュリティー
レルム設定の例は次の通りです。
<application-policy name="mcp_ldap_domain">
<authentication>
<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule"
flag="required">
<module-option
name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</module-option>
<module-option name="java.naming.security.authentication">simple</moduleoption>
....
</login-module>
</authentication>
</application-policy>
JBoss Enterprise Application Platform 6 のサーバー設定ファイルにある LDAP 設定の例は次の通りです。
47
JBoss Enterprise Application Platform 6 移行ガイド
<subsystem xmlns="urn:jboss:domain:security:1.0">
<security-domains>
<security-domain name="mcp_ldap_domain" type="default">
<authentication>
<login-module code="org.jboss.security.auth.spi.LdapLoginModule"
flag="required">
<module-option name="java.naming.factory.initial"
value="com.sun.jndi.ldap.LdapCtxFactory">
<module-option name="java.naming.security.authentication"
value="simple">
...
</module-option>
</module-option>
</login-module>
</authentication>
</security-domain>
</security-domains>
</subsystem>
注記
JBoss Enterprise Application Platform 6 では XML パーサーが変更になりました。JBoss
Enterprise Application Platform 5 では、次のようにモジュールオプションを要素の内容として指定
しました。
<module-option
name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</moduleoption>
モジュールオプションは次のように "value=" を用いて要素属性として指定するようになりまし
た。
<module-option name="java.naming.factory.initial"
value="com.sun.jndi.ldap.LdapCtxFactory"/>
バグを報告する
3.2.5. HornetQ の変更
3.2.5.1. 既存の JMS メッセージを Enterprise Application Platform 6 へ移行するため JMS ブリッ
ジを設定する
JBoss Enterprise Application Platform 6 ではデフォルトの JMS 実装が JBoss Messaging から HornetQ
に変更になりました。JMS ブリッジを使用すると、最も簡単に JMS メッセージを 1 つの環境から別の環
境に移行することができます。現在、JBoss Enterprise Application Platform 6 には JMS ブリッジが含ま
れていませんが、JMS ブリッジを JBoss Enterprise Application Platform 5.x にデプロイしてメッセージを
Enterprise Application Platform 6 に移動することが可能です。リリース間のクラスの競合を避けるため、
次の方法を用いて JMS ブリッジを設定する必要があります。SAR ディレクトリとブリッジの名前は任意
で、好きな名前に変更できます。
手順 3.19 JMS ブリッジの設定
1. 次の例に従って、SAR が含まれるように Enterprise Application Platform 5 の deploy ディレクトリ
48
第3章 アプリケーションの移行
にサブディレクトリを作成します。
EAP5_HOME/server/PROFILE_NAME/deploy/m yBridge.sar
2. EAP5_HOME/server/PROFILE_NAME/deploy/m yBridge.sar/ に MET A-INF という名前のサ
ブディレクトリを作成します。
3. 以下と似た情報が含まれる jboss-service.xm l ファイル
をEAP5_HOME/server/PROFILE_NAME/deploy/m yBridge.sar/MET A-INF/ ディレクトリに
作成します。
49
JBoss Enterprise Application Platform 6 移行ガイド
<server>
<loader-repository>
com.example:archive=unique-archive-name
<loader-repository-config>java2ParentDelegation=false</loaderrepository-config>
</loader-repository>
<!-- Enterprise Application Platform 6 JMS Provider -->
<mbean code="org.jboss.jms.jndi.JMSProviderLoader"
name="jboss.messaging:service=JMSProviderLoader,name=EnterpriseApplicationPla
tform6JMSProvider">
<attribute
name="ProviderName">EnterpriseApplicationPlatform6JMSProvider</attribute>
<attribute
name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute
>
<attribute name="FactoryRef">jms/RemoteConnectionFactory</attribute>
<attribute
name="QueueFactoryRef">jms/RemoteConnectionFactory</attribute>
<attribute
name="TopicFactoryRef">jms/RemoteConnectionFactory</attribute>
<attribute name="Properties">
java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactor
y
java.naming.provider.url=remote://EnterpriseApplicationPlatform6host:4447
java.naming.security.principal=jbossuser
java.naming.security.credentials=jbosspass
</attribute>
</mbean>
<mbean code="org.jboss.jms.server.bridge.BridgeService"
name="jboss.jms:service=Bridge,name=MyBridgeName" xmbean-dd="xmdesc/Bridgexmbean.xml">
<depends optional-attributename="SourceProviderLoader">jboss.messaging:service=JMSProviderLoader,name=J
MSProvider</depends>
<depends optional-attributename="TargetProviderLoader">jboss.messaging:service=JMSProviderLoader,name=En
terpriseApplicationPlatform6JMSProvider</depends>
<attribute name="SourceDestinationLookup">/queue/A</attribute>
<attribute name="TargetDestinationLookup">jms/queue/test</attribute>
<attribute name="QualityOfServiceMode">1</attribute>
<attribute name="MaxBatchSize">1</attribute>
<attribute name="MaxBatchTime">-1</attribute>
<attribute name="FailureRetryInterval">60000</attribute>
<attribute name="MaxRetries">-1</attribute>
<attribute name="AddMessageIDInHeader">false</attribute>
<attribute name="TargetUsername">jbossuser</attribute>
<attribute name="TargetPassword">jbosspass</attribute>
</mbean>
</server>
50
第3章 アプリケーションの移行
注記
<load-repository> は SAR に分離されたクラスローダーが確実に存在するようにしま
す。JNDI ルックアップとブリッジの「ターゲット」の両方に、パスワードが
「jbosspass」であるユーザー 「jbossuser」のセキュリティー認証情報が含まれているこ
とに注意してください。これは、JBoss Enterprise Application Platform 6 はデフォルトで保
護されているからです。パスワードが 「jbosspass」であるユーザー「jbossuser」は
guest ロールを持ち、EAP_HOME/bin/add_user.sh スクリプトを使用して
ApplicationRealm に作成されました。
4. 次の JAR を EAP_HOME/m odules/ ディレクトリから
EAP5_HOME/server/PROFILE_NAME/deploy/m yBridge.sar/ ディレクトリへコピーします。
VERSION_NUMBER を JBoss Enterprise Application Platform 6 ディストリビューションの実際の
バージョン番号に置き換えてください。
org/hornetq/m ain/hornetq-core-VERSION_NUMBER.jar
org/hornetq/m ain/hornetq-jm s-VERSION_NUMBER.jar
org/jboss/ejb-client/m ain/jboss-ejb-client-VERSION_NUMBER.jar
org/jboss/logging/m ain/jboss-logging-VERSION_NUMBER.jar
org/jboss/logm anager/m ain/jboss-logm anager-VERSION_NUMBER.jar
org/jboss/m arshalling/m ain/jboss-m arshalling-VERSION_NUMBER.jar
org/jboss/m arshalling/river/m ain/jboss-m arshallingriver-VERSION_NUMBER.jar
org/jboss/rem ote-nam ing/m ain/jboss-rem ote-nam ing-VERSION_NUMBER.jar
org/jboss/rem oting3/m ain/jboss-rem oting-VERSION_NUMBER.jar
org/jboss/sasl/m ain/jboss-sasl-VERSION_NUMBER.jar
org/jboss/netty/m ain/netty-VERSION_NUMBER.jar
org/jboss/rem oting3/rem ote-jm x/m ain/rem oting-jm x-VERSION_NUMBER.jar
org/jboss/xnio/m ain/xnio-api-VERSION_NUMBER.jar
org/jboss/xnio/nio/m ain.xnio-nio-VERSION_NUMBER.jar
注記
javax API クラスは Enterprise Application Platform 5.x のクラスと競合するため、単にその
まま EAP_HOME/bin/client/jboss-client.jar をコピーしないようにしてくださ
い。
バグを報告する
3.2.5.2. HornetQ を JMS プロバイダーとして使用するためにアプリケーションを移行
JBoss Messaging は、JBoss Enterprise Application Platform 6 に同梱されなくなりました。アプリケー
ションがメッセージングプロバイダーとして JBoss Messaging を使用する場合は、JBoss Messaging
コードを HornetQ と置き換える必要があります。
手順 3.20 開始する前に
1. クライアントとサーバーをシャットダウンします。
51
JBoss Enterprise Application Platform 6 移行ガイド
2. JBoss Messaging データのバックアップコピーを作成します。
手順 3.21 HornetQ へのプロバイダーの変更
1. 設定の転送
最初に、既存の JBoss Messaging 設定を Enterprise Application Platform 設定に転送する必要があ
ります。以下の設定が、 JBoss Mesaging サーバーにあるデプロイメント記述子に存在します。
接続ファクトリーサービス設定
この設定は、 JBoss Messaging サーバーにデプロイされた JMS 接続ファクトリーを定義しま
す。JBoss Messaging は、アプリケーションサーバーのデプロイメントディレクトリにある
connection-factories-service.xm l という名前のファイルで接続ファクトリーを設定
します。
宛先設定
この設定は、JBoss Messaging サーバーでデプロイされた JMS キューおよびトピックを定義し
ます。デフォルトでは、JBoss Messaging は、アプリケーションサーバーのデプロイメント
ディレクトリにある destinations-service.xm l という名前のファイルで宛先を設定しま
す。
メッセージブリッジサービス設定
この設定には、JBoss Messaging サーバーでデプロイされたブリッジサービスが含まれます。
デフォルトではブリッジがデプロイされないため、デプロイメントファイルの名前は、JBoss
Messaging インストールによって異なります。
2. アプリケーションコードの変更
アプリケーションコードで標準的な JMS を使用する場合は、コードの変更が必要ありません。ただ
し、アプリケーションが JBoss Messaging に固有な機能を使用する場合は、HornetQ で利用可能
な同等の機能を使用するようコードを変更する必要があります。
HornetQ でメッセージングを設定する方法の詳細については、 「HornetQ でのメッセージングの設
定」 を参照してください。
3. ブリッジおよび JMS 管理オブジェクトの移行
JBoss Messaging は、 Managed Bean サービスを使用してブリッジと接続ファクトリーなどの
JMS オブジェクト、キュー、およびトピックを設定します。HornetQ は POJO (Plain Old Java
Object) を使用してこれらのオブジェクトを設定します。HornetQ で同等のパラメーターを使用す
るには設定パラメーターを更新する必要があります。
4. 既存のメッセージの移行
JBoss Messaging データベースのすべてのメッセージを HornetQ バインディングに移動します。
バグを報告する
3.2.5.3. HornetQ でのメッセージングの設定
JBoss Enterprise Application Platform 6 でのメッセージングの設定では、管理コンソールまたは管理 CLI
の使用が推奨されます。どちらの管理ツールでも、standalone.xm l や dom ain.xm l 設定ファイルを
手作業で編集せずに永続的な変更を行うことができますが、デフォルト設定ファイルのメッセージングコ
ンポーネントについて理解できると便利です。デフォルトの設定ファイルには、管理ツールを使用するド
キュメントの例に参考用の設定ファイルスニペットがあります。
バグを報告する
3.2.6. クラスタリングの変更
3.2.6.1. クラスタリングに対するアプリケーションの変更
手順 3.22
52
第3章 アプリケーションの移行
1. クラスタリグが有効な状態で JBoss Enterprise Application Platform 6 を起動する
JBoss Enterprise Application Platform 5.x でクラスタリングを有効にするには、次のように all プ
ロファイル (またはその派生プロファイル) を使用してサーバーインスタンスを起動する必要があり
ました。
$ EAP5_HOME/bin/run.sh -c all
JBoss Enterprise Application Platform 6 でクラスタリングを有効にする方法は、サーバーがスタン
ドアロンであるか管理ドメインで実行されているかによって異なります。
a. 管理ドメインで実行されているサーバーに対してクラスタリングを有効にする
ドメインコントローラーを使用して起動したサーバーに対してクラスタリングを有効にする
には、dom ain.xm l を更新し、ha プロファイルと ha-sockets ソケットバインディング
グループを使用するサーバーグループを指定します。例は次の通りです。
<server-groups>
<server-group name="main-server-group" profile="ha">
<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
<socket-binding-group ref="ha-sockets"/>
</server-group>
</server-group>
b. スタンドアロンサーバーに対してクラスタリングを有効にする
スタンドアロンサーバーに対してクラスタリングを有効にするには、次のように適切な設定
ファイルを使用してサーバーを起動します。 $ EAP_HOME/bin/standalone.sh -server-config=standalone-ha.xm l
2. バインドアドレスの指定
JBoss Enterprise Application Platform 5.x では、通常 $ EAP_HOME/bin/run.sh -c all -b
192.168.0.2 のように -b コマンドライン引数を用いてクラスタリングに使用するバインドアド
レスを指定しました。
JBoss Enterprise Application Platform 6 では、JBoss Enterprise Application Platform 6 の設定ファ
イル内の関連するソケットバインディングによってバインドアドレスが明示的に定義されます。ド
メインコントローラーを用いて起動したサーバーの場合、バインドアドレスは
dom ain/configuration/host.xm l ファイル内で指定されます。スタンドアロンサーバーの場
合、バインドアドレスは standalone-ha.xm l ファイル内で指定されます。
<interfaces>
<interface name="management">
<inet-address value="192.168.0.2"/>
</interface>
<interface name="public">
<inet-address value="192.168.0.2"/>
</interface>
</interfaces>
<socket-binding-groups>
<socket-binding-group name="ha-sockets" default-interface="public">
<!-- ... -->
</socket-binding-group>
</socket-binding-groups>
上記の例では、ha-sockets ソケットバインディンググループ内のすべてのソケットに対するデ
フォルトインターフェースに public インターフェースが指定されています。
53
JBoss Enterprise Application Platform 6 移行ガイド
3. マルチキャストアドレスおよびポートの指定
JBoss Enterprise Application Platform 5.x では、次のようにコマンドライン引数 -u を使用してク
ラスター内の通信に使用されるマルチキャストアドレスを指定することができました。 同様に、引
数 -m を使用してクラスター内の通信に使用されるポートを指定することができました。 $
EAP_HOME/bin/run.sh -c all -u 228.11.11.11 -m 4 5688
JBoss Enterprise Application Platform 6 では、クラスター間の通信に使用されるマルチキャストア
ドレスとポートは、関連する JGroups プロトコルスタックによって参照されるソケットバインディ
ングによって次のように定義されます。
<subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="udp">
<stack name="udp">
<transport type="UDP" socket-binding="jgroups-udp"/>
<!-- ... -->
</stack>
</subsystem>
<socket-binding-groups>
<socket-binding-group name="ha-sockets" default-interface="public">
<!-- ... -->
<socket-binding name="jgroups-udp" port="55200" multicastaddress="228.11.11.11" multicast-port="45688"/>
<!-- ... -->
</socket-binding-group>
</socket-binding-groups>
コマンドラインでマルチキャストアドレスとポートを指定したい場合、マルチキャストアドレスと
ポートをシステムプロパティーとして定義した後、サーバー起動時にこれらのプロパティーをコマ
ンドライン上で使用します。次の例では、 jboss.m cast.addr はマルチキャストアドレスの変
数名、 jboss.m cast.port はポートの変数名になります。
<socket-binding name="jgroups-udp" port="55200"
multicast-address="${jboss.mcast.addr:230.0.0.4}" multicastport="${jboss.mcast.port:45688}"/>
その後、次のコマンドライン引数を使用してサーバーを起動できます。 $
EAP_HOME/bin/dom ain.sh -Djboss.m cast.addr=228.11.11.11 Djboss.m cast.port=4 5688
4. 代替のプロトコルスタックの使用
JBoss Enterprise Application Platform 5.x では、jboss.default.jgroups.stack システムプ
ロパティーを使用してすべてのクラスタリングサービスに使用されるデフォルトのプロトコルス
タックを操作することができました。 $ EAP_HOME/bin/run.sh -c all Djboss.default.jgroups.stack=tcp
JBoss Enterprise Application Platform 6 では、dom ain.xm l または standalone-ha.xm l 内の
JGroups サブシステムによってデフォルトのプロトコルスタックが定義されます。
<subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="udp">
<stack name="udp">
<!-- ... -->
</stack>
</subsystem>
バグを報告する
54
第3章 アプリケーションの移行
3.2.6.2. HA シングルトンの実装
概要
JBoss Enterprise Application Platform 5 では、HA シングルトンアーカイブは他のデプロイメントとは別
に deploy-hasingleton/ ディレクトリにデプロイされていました。これは自動デプロイメントが発生
しないようにするためで、また確実に HASingletonDeployer サービスがデプロイメントを制御し、クラス
ターのマスターノードのみにアーカイブがデプロイされるようにするための処置でした。ホットデプロイ
メント機能がなかったため、再デプロイメントにはサーバーの再起動が必要でした。また、マスターノー
ドに障害が発生し、他のノードがマスターとして引き継ぐ必要がある場合、シングルトンサービスはサー
ビスを提供するためデプロイメントプロセス全体を実行する必要がありました。
JBoss Enterprise Application Platform 6 ではこれが変更になりました。SingletonService を使用してクラ
スターの各ノードに目的のサービスがインストールされますが、サービスは一度に 1 つのノード上でのみ
起動されます。これにより、デプロイメントの要件が簡素化され、ノード間でシングルトンマスターサー
ビスを移動するために必要な時間が最小限になります。
手順 3.23 HA シングルトンサービスの実装
1. HA シングルトンサービスアプリケーションの作成
シングルトンサービスとしてデプロイされる SingletonService デコレーターでラッピングされた
サービスの簡単な例は次の通りです。
a. シングルトンサービスを作成します。
55
JBoss Enterprise Application Platform 6 移行ガイド
package com.mycompany.hasingleton.service.ejb;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Logger;
import
import
import
import
import
import
import
import
org.jboss.as.server.ServerEnvironment;
org.jboss.msc.inject.Injector;
org.jboss.msc.service.Service;
org.jboss.msc.service.ServiceName;
org.jboss.msc.service.StartContext;
org.jboss.msc.service.StartException;
org.jboss.msc.service.StopContext;
org.jboss.msc.value.InjectedValue;
/**
* @author <a href="mailto:[email protected]">Wolf-Dieter Fink</a>
*/
public class EnvironmentService implements Service<String> {
private static final Logger LOGGER =
Logger.getLogger(EnvironmentService.class.getCanonicalName());
public static final ServiceName SINGLETON_SERVICE_NAME =
ServiceName.JBOSS.append("quickstart", "ha", "singleton");
/**
* A flag whether the service is started.
*/
private final AtomicBoolean started = new AtomicBoolean(false);
private String nodeName;
private final InjectedValue<ServerEnvironment> env = new
InjectedValue<ServerEnvironment>();
public Injector<ServerEnvironment> getEnvInjector() {
return this.env;
}
/**
* @return the name of the server node
*/
public String getValue() throws IllegalStateException,
IllegalArgumentException {
if (!started.get()) {
throw new IllegalStateException("The service '" +
this.getClass().getName() + "' is not ready!");
}
return this.nodeName;
}
public void start(StartContext arg0) throws StartException {
if (!started.compareAndSet(false, true)) {
throw new StartException("The service is still started!");
}
LOGGER.info("Start service '" + this.getClass().getName() + "'");
this.nodeName = this.env.getValue().getNodeName();
}
public void stop(StopContext arg0) {
if (!started.compareAndSet(true, false)) {
LOGGER.warning("The service '" + this.getClass().getName() +
"' is not active!");
56
第3章 アプリケーションの移行
} else {
LOGGER.info("Stop service '" + this.getClass().getName() +
"'");
}
}
}
b. サーバー起動時にサービスを SingletonService として開始するシングルトン EJB を作成しま
す。
57
JBoss Enterprise Application Platform 6 移行ガイド
package com.mycompany.hasingleton.service.ejb;
import java.util.Collection;
import java.util.EnumSet;
import
import
import
import
javax.annotation.PostConstruct;
javax.annotation.PreDestroy;
javax.ejb.Singleton;
javax.ejb.Startup;
import
import
import
import
import
import
import
import
import
import
org.jboss.as.clustering.singleton.SingletonService;
org.jboss.as.server.CurrentServiceContainer;
org.jboss.as.server.ServerEnvironment;
org.jboss.as.server.ServerEnvironmentService;
org.jboss.msc.service.AbstractServiceListener;
org.jboss.msc.service.ServiceController;
org.jboss.msc.service.ServiceController.Transition;
org.jboss.msc.service.ServiceListener;
org.slf4j.Logger;
org.slf4j.LoggerFactory;
/**
* A Singleton EJB to create the SingletonService during startup.
*
* @author <a href="mailto:[email protected]">Wolf-Dieter Fink</a>
*/
@Singleton
@Startup
public class StartupSingleton {
private static final Logger LOGGER =
LoggerFactory.getLogger(StartupSingleton.class);
/**
* Create the Service and wait until it is started.<br/>
* Will log a message if the service will not start in 10sec.
*/
@PostConstruct
protected void startup() {
LOGGER.info("StartupSingleton will be initialized!");
EnvironmentService service = new EnvironmentService();
SingletonService<String> singleton = new
SingletonService<String>(service,
EnvironmentService.SINGLETON_SERVICE_NAME);
// if there is a node where the Singleton should deployed the
election policy might set,
// otherwise the JGroups coordinator will start it
//singleton.setElectionPolicy(new
PreferredSingletonElectionPolicy(new NamePreference("node2/cluster"),
new SimpleSingletonElectionPolicy()));
ServiceController<String> controller =
singleton.build(CurrentServiceContainer.getServiceContainer())
.addDependency(ServerEnvironmentService.SERVICE_NAME,
ServerEnvironment.class, service.getEnvInjector())
.install();
controller.setMode(ServiceController.Mode.ACTIVE);
try {
wait(controller, EnumSet.of(ServiceController.State.DOWN,
58
第3章 アプリケーションの移行
ServiceController.State.STARTING), ServiceController.State.UP);
LOGGER.info("StartupSingleton has started the Service");
} catch (IllegalStateException e) {
LOGGER.warn("Singleton Service {} not started, are you sure to
start in a cluster (HA)
environment?",EnvironmentService.SINGLETON_SERVICE_NAME);
}
}
/**
* Remove the service during undeploy or shutdown
*/
@PreDestroy
protected void destroy() {
LOGGER.info("StartupSingleton will be removed!");
ServiceController<?> controller =
CurrentServiceContainer.getServiceContainer().getRequiredService(Environ
mentService.SINGLETON_SERVICE_NAME);
controller.setMode(ServiceController.Mode.REMOVE);
try {
wait(controller, EnumSet.of(ServiceController.State.UP,
ServiceController.State.STOPPING, ServiceController.State.DOWN),
ServiceController.State.REMOVED);
} catch (IllegalStateException e) {
LOGGER.warn("Singleton Service {} has not be stopped
correctly!",EnvironmentService.SINGLETON_SERVICE_NAME);
}
}
private static <T> void wait(ServiceController<T> controller,
Collection<ServiceController.State> expectedStates,
ServiceController.State targetState) {
if (controller.getState() != targetState) {
ServiceListener<T> listener = new NotifyingServiceListener<T>();
controller.addListener(listener);
try {
synchronized (controller) {
int maxRetry = 2;
while (expectedStates.contains(controller.getState()) &&
maxRetry > 0) {
LOGGER.info("Service controller state is {}, waiting for
transition to {}", new Object[] {controller.getState(), targetState});
controller.wait(5000);
maxRetry--;
}
}
} catch (InterruptedException e) {
LOGGER.warn("Wait on startup is interrupted!");
Thread.currentThread().interrupt();
}
controller.removeListener(listener);
ServiceController.State state = controller.getState();
LOGGER.info("Service controller state is now {}",state);
if (state != targetState) {
throw new IllegalStateException(String.format("Failed to wait
for state to transition to %s. Current state is %s", targetState, state),
controller.getStartException());
}
}
}
59
JBoss Enterprise Application Platform 6 移行ガイド
private static class NotifyingServiceListener<T> extends
AbstractServiceListener<T> {
@Override
public void transition(ServiceController<? extends T> controller,
Transition transition) {
synchronized (controller) {
controller.notify();
}
}
}
}
c. クライアントよりサービスへアクセスするためステートレスセッション Bean を作成
します。
package com.mycompany.hasingleton.service.ejb;
import javax.ejb.Stateless;
import
import
import
import
org.jboss.as.server.CurrentServiceContainer;
org.jboss.msc.service.ServiceController;
org.slf4j.Logger;
org.slf4j.LoggerFactory;
/**
* A simple SLSB to access the internal SingletonService.
*
* @author <a href="mailto:[email protected]">Wolf-Dieter Fink</a>
*/
@Stateless
public class ServiceAccessBean implements ServiceAccess {
private static final Logger LOGGER =
LoggerFactory.getLogger(ServiceAccessBean.class);
public String getNodeNameOfService() {
LOGGER.info("getNodeNameOfService() is called()");
ServiceController<?> service =
CurrentServiceContainer.getServiceContainer().getService(
EnvironmentService.SINGLETON_SERVICE_NAME);
LOGGER.debug("SERVICE {}", service);
if (service != null) {
return (String) service.getValue();
} else {
throw new IllegalStateException("Service '" +
EnvironmentService.SINGLETON_SERVICE_NAME + "' not found!");
}
}
}
d. SingletonService のビジネスロジックインターフェースを作成します。
60
第3章 アプリケーションの移行
package com.mycompany.hasingleton.service.ejb;
import javax.ejb.Remote;
/**
* Business interface to access the SingletonService via this EJB
*
* @author <a href="mailto:[email protected]">Wolf-Dieter Fink</a>
*/
@Remote
public interface ServiceAccess {
public abstract String getNodeNameOfService();
}
2. クラスタリングが有効な状態で各 Jboss Enterprise Application Platform 6 インスタンスを
起動する
クラスターを有効化する方法は、サーバーがスタンドアローンであるか管理ドメインで実行されて
いるかによって異なります。
a. 管理ドメインで実行されているサーバーに対してクラスタリングを有効にする
ドメインコントローラーを使用して起動したサーバーに対してクラスタリングを有効にする
には、dom ain.xm l を更新し、ha プロファイルと ha-sockets ソケットバインディング
グループを使用するようサーバーグループを指定します。例は次の通りです。
<server-groups>
<server-group name="main-server-group" profile="ha">
<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
<socket-binding-group ref="ha-sockets"/>
</server-group>
</server-groups>
次のように host.xm l ファイルを変更します。
<servers>
<server name="server-one" group="main-server-group" autostart="false"/>
<server name="server-two" group="distinct2">
<socket-bindings port-offset="100"/>
</server>
<servers>
その後、次のようにサーバーを起動します。
A. Linux では EAP_HOME/bin/dom ain.sh と入力します。
B. Microsoft Windows では EAP_HOME\bin\dom ain.bat と入力します。
b. スタンドアローンサーバーに対してクラスタリングを有効にする
スタンドアローンサーバーに対してクラスタリングを有効にするには、次のようにノード名
と standalone-ha.xm l 設定ファイルを使用してサーバーを起動します。
A. Linux では EAP_HOME/bin/standalone.sh --server-config=standaloneha.xm l -Djboss.node.nam e=UNIQUE_NODE_NAME と入力します。
B. Microsoft Windows では EAP_HOME\bin\standalone.bat --serverconfig=standalone-ha.xm l -Djboss.node.nam e=UNIQUE_NODE_NAME と入力
します。
61
JBoss Enterprise Application Platform 6 移行ガイド
注記
1 つのマシン上で複数のサーバーが実行されている時にポートの競合が発生しないようにす
るため、別のインターフェースでバインドするように各サーバーインスタンスに対して
standalone-ha.xm l ファイルを設定します。または、コマンドラインで Djboss.socket.binding.port-offset=100 のような引数を使用し、ポートオフセッ
トを持つ後続のサーバーインスタンスを開始して対応することも可能です 。
3. アプリケーションをサーバーにデプロイする
Maven を使用してアプリケーションをデプロイする場合は、次の Maven コマンドを使用してデ
フォルトのポートで稼働しているサーバーへデプロイします。
m vn clean install jboss-as:deploy
追加のサーバーをデプロイするには、サーバー名とポート番号をコマンドラインに渡します。
m vn clean package jboss-as:deploy -Ddeploy.hostnam e=localhost Ddeploy.port=10099
バグを報告する
3.2.7. サービススタイルデプロイメントの変更
3.2.7.1. サービススタイルデプロイメントを使用するアプリケーションの更新
概要
JBoss Enterprise Application Platform 6 はサービススタイル記述子を使用しないようになりましたが、で
きる限り変更がない状態でコンテナはサービススタイルデプロイメントをサポートします。そのため、
JBoss Enterprise Application 5.x アプリケーションの jboss-service.xm l または jbossbeans.xm l デプロイメント記述子を使用した場合、JBoss Enterprise Application Platform 6 へ変更をほ
とんどまたは全く加えなくても実行できるはずです。継続してファイルを EAR や SAR にパッケージ化す
ることが可能ですが、ファイルを直接 deployments ディレクトリに置くこともできます。スタンドアロン
サーバーをを実行している場合、deployments ディレクトリは
EAP_HOME/standalone/deploym ents/ になります。管理ドメインを実行している場合、
deployments フォルダーは EAP_HOME/dom ain/deploym ents/ になります。
バグを報告する
3.2.8. リモート呼び出しの変更
3.2.8.1. JBoss Enterprise Application Platform 5 にデプロイされ、 JBoss Enterprise
Application Platform 6 へリモート呼び出しを行うアプリケーションの移行
概要
JBoss Enterprise Application Platform 6 では、次の 2 つの方法でサーバーへリモート呼び出しすることが
できます。
新しい JBoss 固有の EJB クライアント API を使用して呼び出しを行う。
JNDI を使用して Bean のプロキシをルックアップし、返されたプロキシ上で呼び出しを行う。
本項では 2 つ目の方法について取り上げます。JNDI を使用するクライアントは コーディングの変更が必
62
第3章 アプリケーションの移行
要となります。
JBoss Enterprise Application Platform 5 では、EJB リモートインターフェースはデフォルトで JNDI にて
バインドされ、ローカルインターフェースの場合は「ejbName/local」、リモートインターフェースの場合
は「ejbName/remote」という名前でした。クライアントアプリケーションは 「ejbName/remote」を使用
して Bean をルックアップしました。
JBoss Enterprise Application Platform 6 では、以下の構文を用いて ejb:NAMESPACE_NAME を使用して
EJB へリモートアクセスします。ステートレス Bean の場合、構文は次のようになります。
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualifiedclassname-of-the-remote-interface>
ステートフル Bean の場合は次のようになります。
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualifiedclassname-of-the-remote-interface>?stateful
上記の構文で置き換える必要のある値は次の通りです。
<app-nam e> - デプロイされた EJB のアプリケーション名。通常、.ear サフィックスを抜かした ear
名になりますが、application.xml ファイルで名前が上書きされる場合があります。アプリケーションが
.ear としてデプロイされていない場合、この値は空の文字列となります。この例は EAR としてデプロ
イされていないことを仮定します。
<m odule-nam e> - サーバー上のデプロイされた EJB のモジュール名。通常、.jar サフィックスを除
いた EJB デプロイメントの jar 名になりますが、ejb-jar.xml を使用して名前が上書きされる場合があ
ります。この例では、EJB が jboss-as-ejb-remote-app.jar にデプロイされていることを仮定している
ため、モジュール名は jboss-as-ejb-remote-app になります。
<distinct-nam e> - EJB の任意の distinct name です。この例では distinct name は使用しないた
め、空の文字列を使用します。
<bean-nam e> - デフォルトでは Bean 実装クラスの簡単なクラス名になります。
<fully-qualified-classnam e-of-the-rem ote-interface> - リモートビューの完全修飾ク
ラス名。
クライアントコードの更新
次のステートレス EJB を JBoss Enterprise Application 6 サーバーにデプロイしたことにします。これに
より、Bean のリモートビューが公開されます。
@Stateless
@Remote(RemoteCalculator.class)
public class CalculatorBean implements RemoteCalculator {
@Override
public int add(int a, int b) {
return a + b;
}
@Override
public int subtract(int a, int b) {
return a - b;
}
}
JBoss Enterprise Application Platform 5 では、クライアント EJB のルックアップと呼び出しが次のよう
63
JBoss Enterprise Application Platform 6 移行ガイド
にコード化されていました。
InitialContext ctx = new InitialContext();
RemoteCalculator calculator = (RemoteCalculator)
ctx.lookup("CalculatorBean/remote");
int a = 204;
int b = 340;
int sum = calculator.add(a, b);
JBoss Enterprise Application Platform 6 では前述の情報を使用して、クライアントのルックアップと呼び
出しが次のようにコード化されます。
final Hashtable jndiProperties = new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
final Context context = new InitialContext(jndiProperties);
final String appName = "";
final String moduleName = "jboss-as-ejb-remote-app";
final String distinctName = "";
final String beanName = CalculatorBean.class.getSimpleName();
final String viewClassName = RemoteCalculator.class.getName();
final RemoteCalculator statelessRemoteCalculator = (RemoteCalculator)
context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" +
beanName + "!" + viewClassName);
int a = 204;
int b = 340;
int sum = statelessRemoteCalculator.add(a, b);
クライアントがステートフル EJB にアクセスしている場合、次のようにコンテキストルックアップの最後
に “?stateful” を追加する必要があります。
final RemoteCalculator statefulRemoteCalculator = (RemoteCalculator)
context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" +
beanName + "!" + viewClassName + "?stateful")
サーバーおよびクライアントコードなどが含まれる完全な作業例は Quickstart にあります。詳細は、
JBoss Enterprise Application Platform 6 開発ガイドの「アプリケーションの開発」の章にある「クイック
スタートチュートリアルの確認」を参照してください。
JNDI を使用したリモート呼び出しの詳細については、JBoss Enterprise Application Platform 6 開発ガイ
ドの「Enterprise JavaBeans」の章にある「JNDI を使用したリモートでのセッション Bean の呼び出し」
を参照してください。
バグを報告する
3.2.8.2. JNDI を使用したリモートでのセッション Bean の呼び出し
このタスクは、JNDI を使用してセッション Bean の呼び出すリモートクライアントへサポートを追加する
方法を説明します。Maven を使用してプロジェクトがビルドされていることが前提となります。
rem ote-ejb クイックスタートには、この機能を実証する Maven プロジェクトが含まれています。デプ
ロイするセッション Bean のプロジェクトとリモートクライアントのプロジェクトの両方が含まれていま
す。下記のコード例はリモートクライアントのプロジェクトから引用されています。
このタスクでは、セッション Bean に認証の必要がないことが前提となっています。
前提条件
64
第3章 アプリケーションの移行
始める前に、次の前提条件を満たしている必要があります。
Maven プロジェクトが作成され、使用できる状態である。
JBoss Enterprise Application Platform 6 の Maven リポジトリが既に追加されている。
呼び出しするセッション Bean が既にデプロイされている。
デプロイされたセッション Bean がリモートビジネスインターフェースを実装する。
セッション Bean のリモートビジネスインターフェースは Maven 依存関係として使用できる。リモー
トビジネスインターフェースが JAR ファイルとしてのみ使用できる場合は、JAR をアーティファクト
として Maven リポジトリに追加することが推奨されます。http://maven.apache.org/plugins/maveninstall-plugin/usage.html にある Maven ドキュメントの install:install-file ゴールを参照して
ください。
セッション Bean をホストするサーバーのホスト名と JNDI ポートを覚えておく必要があります。
リモートクライアントよりセッション Bean を呼び出すには、最初にプロジェクトを適切に設定する必要
があります。
手順 3.24 セッション Bean のリモート呼び出しに対する Maven プロジェクト設定の追加
1. 必要なプロジェクト依存関係の追加
必要な依存関係が含まれるようにするため、プロジェクトの pom .xm l を更新する必要がありま
す。
2. jboss-ejb-client.properties ファイルの追加
JBoss EJB クライアント API は、JNDI サービスの接続情報が含まれる jboss-ejbclient.properties という名前のプロジェクトのルートにファイルがあることを想定します。
このファイルを以下の内容と共にプロジェクトの src/resources/ ディレクトリに追加します。
# Set this to true for SSL
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
# Uncomment this for SSL
# remote.connection.default.connect.options.org.xnio.Options.SSL_STARTTLS=true
remote.connection.default.host=localhost
remote.connection.default.port = 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONY
MOUS=false
# Add other SASL options if required
#
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONY
MOUS=false
#
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAIN
TEXT=false
#
remote.connection.default.connect.options.org.xnio.Options.SASL_DISALLOWED_MEC
HANISMS=JBOSS-LOCAL-USER
ホスト名とポートを変更してサーバーと一致するようにします。4 4 4 7 がデフォルトのポート番号
です。 安全な接続の場合、SSL_ENABLED 行を true に設定し、 SSL_ST ART T LS 行をアンコメン
トします。コンテナ内のリモーティングインターフェースは同じポートを使用して安全な接続と安
全でない接続をサポートします。
3. リモートビジネスインターフェースの依存関係の追加
セッション Bean のリモートビジネスインターフェースに対する pom .xm l に Maven の依存関係を
追加します。
65
JBoss Enterprise Application Platform 6 移行ガイド
<dependency>
<groupId>org.jboss.as.quickstarts</groupId>
<artifactId>jboss-as-ejb-remote-server-side</artifactId>
<type>ejb-client</type>
<version>7.1.0.CR1-SNAPSHOT</version>
</dependency>
これでプロジェクトが適切に設定されたため、コードを追加してセッション Bean へアクセスしたり呼び
出しすることができるようになりました。
手順 3.25 JNDI を使用して Bean プロキシを取得し、 Bean のメソッドを呼び出す
1. チェック例外の処理
次のコードに使用されるメソッドの 2 つ (InitialContext() および lookup()) は、タイプ
javax.nam ing.Nam ingException のチェック例外を持っています。これらのメソッド呼び出
しは Nam ingException をキャッチする try/catch ブロックか、Nam ingException のスローが
宣言されたメソッドで囲まなければなりません。rem ote-ejb クイックスタートでは
Nam ingException のスローが宣言されたメソッドで囲む方法を使用します。
2. JNDI コンテキストの作成
JNDI コンテキストオブジェクトはサーバーよりリソースを要求するメカニズムを提供します。次の
コードを使用して JNDI コンテキストを作成します。
final Hashtable jndiProperties = new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
final Context context = new InitialContext(jndiProperties);
JNDI サービスの接続プロパティーは jboss-ejb-client.properties ファイルより読み取ら
れます。
3. JNDI コンテキストの lookup() メソッドを使用した Bean プロキシの取得
Bean プロキシの lookup() メソッドを呼び出し、必要なセッション Bean の JNDI 名 へ渡しま
す。これにより、呼び出したいメソッドが含まれるリモートビジネスインターフェースのタイプへ
キャストされなければならないオブジェクトが返されます。
final RemoteCalculator statelessRemoteCalculator = (RemoteCalculator)
context.lookup(
"ejb:/jboss-as-ejb-remote-app/CalculatorBean!" +
RemoteCalculator.class.getName()
);
セッション Bean の JNDI 名は特別な構文によって定義されます。
4. 呼び出しメソッド
プロキシ Bean オブジェクトを取得したため、リモートビジネスインターフェースに含まれるすべ
てのメソッドを呼び出しすることができます。
int a = 204;
int b = 340;
System.out.println("Adding " + a + " and " + b + " via the remote stateless
calculator deployed on the server");
int sum = statelessRemoteCalculator.add(a, b);
System.out.println("Remote calculator returned sum = " + sum);
メソッド呼び出し要求が実行されるサーバー上で、プロキシ Bean がメソッド呼び出し要求をセッ
ション Bean へ渡します。結果はプロキシ Bean へ返され、プロキシ Bean によって結果が呼び出
66
第3章 アプリケーションの移行
し側へ返されます。プロキシ Bean とリモートセッション Bean 間の通信は呼び出し側に透過的で
す。
これで、Maven プロジェクトを設定してリモートサーバー上で呼び出しを行うセッション Bean をサポー
トし、JNDI を使用してサーバーより読み出したプロキシ Bean を使用してセッション Bean メソッドを呼
び出すコードを作成できるようになりました。
バグを報告する
3.2.9. EJB 2.x の変更
3.2.9.1. EJB 2.x を使用するアプリケーションの更新
JBoss Enterprise Application Platform 6 は EJB 2.x へのサポートを提供しますが、一部コードの変更が必
要で、サーバーを完全なプロファイルで起動する必要があります。
手順 3.26 JBoss Enterprise Application Platform 6 で EJB 2.x を起動する
1. JNDI 名前空間の新しいルールを使用するようコードを変更する
EJB 3.0 と同様に、EJB 2.x でも完全な JNDI プレフィックスを使用する必要があります。新しい
JNDI 名前空間ルールやコード例の詳細は 「アプリケーションの JNDI 名前空間名の更新」 を参照
してください。
以前のリリースから JNDI 名前空間を更新する方法を表す例は 「以前のリリースにおける JNDI 名
前空間の例、また JBoss Enterprise Application Platform 6 での名前空間の指定方法」 にありま
す。
2. JBoss AOP インターセプターの置換
JBoss AOP (Aspect Oriented Programming) は JBoss Enterprise Application Platform 6 には含ま
れていません。以前のリリースでは、JBoss AOP は EJB コンテナによって使用されていました
が、Enterprise Application Platform 6 では EJB コンテナは新しいメカニズムを使用します。アプリ
ケーションが JBoss AOP を使用する場合、次のようにアプリケーションコードを変更する必要が
あります。
ejb3-interceptors-aop.xm l で設定された標準的な EJB3 設定は、サーバー設定ファイル
で設定されるようになりました。スタンドアロンサーバーの場合、このファイルは
standalone/configuration/standalone.xm l ファイルになります。サーバーが管理ド
メインで実行されている場合は dom ain/configuration/dom ain.xm l ファイルになりま
す。
AOP インターセプターを EJB レイヤーへ統合するアプリケーションは、 EJB3 インターセプ
ターと CDI を使用するよう再設計する必要があります。サーバー側のインターセプターは EJB3
インターセプターへ変更することができますが、Enterprise Application Platform 6 ではクライ
アント側のインターセプターがありません。
3. jboss-web.xm l ファイル記述子の変更
各 <ejb-ref> に対する <jndi-nam e> を変更し、新しい JNDI 完全修飾ルックアップ形式を使
用するようにします。
4. jboss.xm l デプロイメント記述子ファイルの置換
Java Enterprise Edition (EE) によって定義される ejb3-jar.xm l デプロイメント記述子によって
提供される機能を上書きしたり追加するため、jboss.xm l は jboss-ejb3.xm l デプロイメント
記述子に置き換えられました。この新ファイルは jboss.xm l との互換性がないた
め、jboss.xm l はデプロイメントで無視されます。
5. 完全プロファイルでのサーバーの起動
EJB 2.x には Java Enterprise Edition 6 の完全プロファイルが必要となります。完全プロファイルで
JBoss Enterprise Application Platform 6 を起動するには、サーバーの起動時に引数 -c
67
JBoss Enterprise Application Platform 6 移行ガイド
standalone-full.xm l をコマンドラインに渡します。
バグを報告する
3.2.10. Seam 2.2 アプリケーションの移行
3.2.10.1. Seam 2.2 アーカイブの JBoss Enterprise Application Platform 6 への移行
概要
Seam 2.2 アプリケーションを移行する際、データソースを設定し、モジュール依存関係を指定する必要
があります。また、JBoss Enterprise Application Platform 6 に同梱されないアーカイブにアプリケーショ
ンの依存関係があるかを判断し、依存している JAR をアプリケーションの lib/ ディレクトリにコピー
する必要があります。
重要
この例は、最初にアプリケーションを JBoss Enterprise Application Platform 6 上で実行できるよ
うにすることを目的としています。この設定はサポート対象ではなく、Hibernate 4 を使用するよ
う次の手順でアプリケーションをアップグレードする必要があります。
手順 3.27 Seam 2.2 アーカイブの移行
1. データソース設定の更新
一部の Seam 2.2 の例は、java:/Exam pleDS という名前のデフォルトの JDBC データソースを
使用します。このデフォルトデータソースは JBoss Enterprise Application Platform 6 では
java:jboss/datasources/Exam pleDS に変更になりました。例のデータベースがアプリケー
ションによって使用される場合、以下の方法の 1 つ実行します。
JBoss Enterprise Application Platform 6 に同梱されるデータベースの例を使用したい場合
は、MET A-INF/persistence.xm l ファイルを変更し、既存の jta-data-source 要素を
データベースのデータソース JNDI 名に置き換えます。
<!-- <jta-data-source>java:/ExampleDS</jta-data-source> -->
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
既存のデータベースを維持したい場合は、データソースの定義を
EAP_HOME/standalone/configuration/standalone.xm l ファイルに追加することがで
きます。以下の定義は JBoss Enterprise Application Platform 6 で定義されるデフォルトの
HSQL データソースのコピーになります。
<datasource name="ExampleDS" jndi-name="java:/ExampleDS" enabled="true"
jta="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
jbossadmin コマンドラインインターフェースを使用してデータソースの定義を追加することも
可能です。データソースを追加するために使用しなければならない構文の例は次の通りです。行
の最後にある "\" はコマンドが次の行に続くことを表しています。
68
第3章 アプリケーションの移行
例 3.1 データソース定義を追加する構文の例
$ EAP_HOME/bin/jboss-cli --connect
[standalone@localhost:9999 /] data-source add --name=ExampleDS --jndiname=java:/ExampleDS \
--connection-url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1 --drivername=h2 \
--user-name=sa --password=sa
データソースの設定方法の詳細は 「DataSource 設定の更新」 を参照してください。
2. 必要な依存関係の追加
Seam 2.2 アプリケーションは JSF 1.2 を使用するため、JSF 1.2 モジュールの依存関係を追加し、
JSF 2.0 モジュールを除外する必要があります。これを実行するには、以下のデータが格納される
EAR の MET A-INF/ ディレクトリに jboss-deploym ent-structure.xm l ファイルを作成する
必要があります。
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="javax.faces.api" slot="1.2" export="true"/>
<module name="com.sun.jsf-impl" slot="1.2" export="true"/>
</ dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
<module name="com.sun.jsf-impl" slot="main"/>
</exclusions>
<dependencies>
<module name="javax.faces.api" slot="1.2"/>
<module name="com.sun.jsf-impl" slot="1.2"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
アプリケーションがサードパーティーのロギングフレームワークを使用する場合は、 「ロギング依
存関係の編集」 に記載されている依存関係を追加する必要があります。
3. 外部フレームワークまたは他の場所より依存するアーカイブをコピーする
Seam 2.2 アプリケーションが Hibernate 3.x を使用する場合でも、JBoss Enterprise Application
Platform 6 にパッケージ化されている Hibernate 4 モジュールを使用してアプリケーションを実行
することが可能ですが、存在しない Hibernate 3.x クラスがあるため、以前の Hibernate JAR を 1
つ以上 /lib ディレクトリへコピーする必要がある場合があります。Hibernate クラスを示す
ClassNotFoundExceptions や ClassCastExceptions が発生した場合、次のように MET AINF/jboss-deploym ent-structure.xm l のデプロイメントセクションにある Hibernate モ
ジュールを除外する必要があることがあります。
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<exclusions>
<module name="org.hibernate"/>
</exclusions>
<deployment>
</jboss-deployment-structure>
69
JBoss Enterprise Application Platform 6 移行ガイド
4. Seam 2.2 JNDI エラーのデバッグおよび解決
Seam 2.2 アプリケーションを移行する時に次のような
javax.nam ing.Nam eNotFoundException エラーがログに記録されることがあります。
javax.naming.NameNotFoundException: Name 'jboss-seam-booking' not found in
context ''
コード全体の JNDI ルックアップを変更したくない場合、次のようにアプリケーションの
com ponents.xm l ファイルを変更することができます。
a. 既存の core-init 要素の置き換え
最初に、次のように既存の core-init 要素を置き換える必要があります。
<!-- <core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local"
debug="true" distributable="false"/>
-->
<core:init debug="true" distributable="false"/>
b. サーバーログでの JNDI バインディング INFO メッセージの検索
次に、アプリケーションがデプロイされた時にサーバーログに出力された JNDI バインディン
グ INFO メッセージを探します。以下のメッセージと似ているものが JNDI バインディング
メッセージです。
INFO
org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitPro
cessor (MSC service thread 1-1) JNDI bindings for session bean
named AuthenticatorAction in deployment unit subdeployment "jboss-seambooking.jar" of deployment "jboss-seam-booking.ear" are as follows:
java:global/jboss-seam-booking/jboss-seambooking.jar/AuthenticatorAction!org.jboss.seam.example.booking.Authentica
tor
java:app/jboss-seambooking.jar/AuthenticatorAction!org.jboss.seam.example.booking.Authentica
tor
java:module/AuthenticatorAction!org.jboss.seam.example.booking.Authentica
tor
java:global/jboss-seam-booking/jboss-seambooking.jar/AuthenticatorAction
java:app/jboss-seam-booking.jar/AuthenticatorAction
java:module/AuthenticatorAction
c. component 要素の追加
ログの各 JNDI バインディング INFO メッセージに対して、一致する com ponent 要素を
com ponents.xm l ファイルに追加します。
<component class="org.jboss.seam.example.booking.AuthenticatorAction"
jndi-name="java:app/jboss-seam-booking.jar/AuthenticatorAction" />
移行の問題に関するデバッグや解決方法の詳細は 「移行の問題のデバッグと解決」 を参照してくだ
さい。
結果
Seam 2.2 アーカイブが JBoss Enterprise Application Platform 6 上にデプロイされ、正常に実行されま
す。
70
第3章 アプリケーションの移行
バグを報告する
3.2.10.2. Seam 2.2 アーカイブの移行の問題
Seam 2.2 Drools と Java 7 の互換性がない
Seam 2.2 Drools と Java 7 は互換性がなく、エラー org.drools.RuntimeDroolsException: value
'1.7' is not a valid language level が発生します。
Seam 2.2.5 の署名された cglib.jar によって Spring の例が動作しない
Enterprise Application Platform 5 の Seam 2.2.5 に含まれる署名された cglib.jar を使用して
Spring の例が実行されると、次のルート原因で実行に失敗します。
java.lang.SecurityException: class
"org.jboss.seam.example.spring.UserService$$EnhancerByCGLIB$$7d6c3d12"'s
signer information does not match signer information of other classes in
the same package
この問題を回避するには、次のように cglib.jar を無署名にします。
zip -d $SEAM_DIR/lib/cglib.jar MET A-INF/JBOSSCOD\*
Seambay の例が NotLoggedInException によって失敗する
SOAPRequestHandler のメッセージを処理する際に SOAP メッセージのヘッダーが null である
ため、conversation ID が設定されないことがこの問題の原因です。
この問題を回避するには、https://issues.jboss.org/browse/JBPAPP-8376 の記述通りに
org.jboss.seam .webservice.SOAPRequestHandler.handleOutbound を上書きしま
す。
Seambay の例が UnsupportedOperationException: no transaction によって失敗する
JBoss Enterprise Application Platform 6 における UserT ransaction の JNDI 名の変更がこのバグ
の原因です。
この問題を回避するには https://issues.jboss.org/browse/JBPAPP-8322 の記述通りに
org.jboss.seam .transaction.T ransaction.getUserT ransaction を上書きしま
す。
Seambay の例が NotLoggedInException によって失敗する
SOAPRequestHandler のメッセージを処理する際に SOAP メッセージのヘッダーが null である
ため、conversation ID が設定されないことがこの問題の原因です。
この問題を回避するには、https://issues.jboss.org/browse/JBPAPP-8376 の記述通りに
org.jboss.seam .webservice.SOAPRequestHandler.handleOutbound を上書きしま
す。
T asks の例が org.jboss.resteasy.spi.UnhandledException: Unable to unmarshall
request body をスローする
このバグの原因は Enterprise Application Platform 5.1.2 に含まれる seam-resteasy-2.2.5 と、
JBoss Enterprise Application Platform 6 に含まれる REST Easy 2.3.1.GA の互換性がないことで
す。
71
JBoss Enterprise Application Platform 6 移行ガイド
この問題を回避するには、https://issues.jboss.org/browse/JBPAPP-8315 の通り jbossdeploym ent-structure.xm l を使用してメインデプロイメントより resteasy-jaxrs、
resteasy-jettison-provider、resteasy-jaxb-provider を除外し、jboss-seam -tasks.war より
resteasy-jaxrs、resteasy-jettison-provider、resteasy-jaxb-provider、resteasy-yaml-provider を
除外します。その後、EAR に Seam 2.2 とバンドルされる REST Easy ライブラリが含まれるよ
うにする必要があります。
AJAX の要求中に org.jboss.seam .core.SynchronizationInterceptor とステートフル
コンポーネントインスタンスの EJB ロックがデッドロックする
「Caused by javax.servlet.ServletException with message: "javax.el.ELException: /main.xhtml
@36,71 value="#{hotelSearch.pageSize}": org.jboss.seam.core.LockT imeoutException: could
not acquire lock on @Synchronized component: hotelSearch」が含まれるエラーページまたは同
様のエラーメッセージが表示されます。
Seam 2 はステートフルセッション Bean (SFSB) ロックの外部で異なるスコープにて独自のロッ
キングを行うことが問題となります。そのため、同じトランザクションでスレッドが EJB へ 2
回アクセスすると、最初の呼び出しの後に seam ロックではなく SFSB ロックを取得します。そ
の後、2 つ目のスレッドは seam ロックを取得でき、EJB ロックをヒットし待機します。最初の
スレッドが 2 回目の呼び出しを実行しようとすると、seam 2 インターセプター上でブロック
し、デッドロックが発生します。Java EE 5 では平行アクセスが行われると即座に例外がスロー
されましたが、Java EE 6 ではこの挙動が変更されました。
この問題を回避するには EJB に @AccessT imeout(0) を追加します。これにより、この状態に
陥った時に即座に ConcurrentAccessException がスローされるようになります。
Dvdstore の例の注文作成が javax.ejb.EJBT ransactionRolledbackException によって
失敗する
dvdstore の例が次のエラーを表示します。
JBAS011437: Found extended persistence context in SFSB invocation call
stack but that cannot be used because the transaction already has a
transactional context associated with it. This can be avoided by changing
application code, either eliminate the extended persistence context or the
transactional context. See JPA spec 2.0 section 7.6.3.1.
この問題は JPA 仕様の変更が原因です。
この問題を修正するには、CheckoutAction クラスと ShowOrdersAction クラスの永続コ
ンテキストを transactional に変更し、エンティティーマネージャーのマージ操作を
cancelOrder および detailOrder メソッドで使用します。
JBoss Cache の Seam キャッシュプロバイダーを Enterprise Application Platform 6 で使用
できない
JBoss Cache は Enterprise Application Platform 6 ではサポートされていません。そのため、
JBoss Cache の Seam キャッシュプロバイダーは
java.lang.NoClassDefFoundError: org/jboss/util/xml/JBossEntityResolver
によりアプリケーションサーバーの Seam アプリケーションで失敗します。
Enterprise Application Platform 6 における JPA エンティティに対する Hibernate 3.3.x の自
72
第3章 アプリケーションの移行
動スキャンの問題
この問題を修正するには、すべてのエンティティークラスの一覧を手作業で persistence.xml
ファイルに追加します。例は次の通りです。
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="example_pu">
<description>Hibernate 3 Persistence Unit.</description>
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<properties>
<property name="jboss.as.jpa.providerModule" value="hibernate3bundled" />
</properties>
<class>com.acme.Foo</class>
<class>com.acme.Bar</class>
</persistence-unit>
</persistence>
バグを報告する
3.2.11. Spring アプリケーションの移行
3.2.11.1. Spring アプリケーションの移行
Spring アプリケーションの移行に関する情報は JBoss Web Framework Kit のドキュメントを参照してく
ださい。このドキュメントは http://access.redhat.com のカスタマーポータルよりダウンロード可能で
す。ナレッジ → 製品ドキュメント とクリックし、JBoss Enterprise Middleware より JBoss Web
Framework Kit のリンクをクリックします。
バグを報告する
3.2.12. 移行に影響するその他の変更
3.2.12.1. 移行に影響する可能性があるその他の変更について理解する
移行に影響を与える可能性がある JBoss Enterprise Application Platform 6 のその他の変更内容は次の通
りです。
「Maven プラグイン名の変更」
バグを報告する
3.2.12.2. Maven プラグイン名の変更
jboss-m aven-plugin は更新されておらず、 Enterprise Application Platform 6 では動作しませ
ん。org.jboss.as.plugins:jboss-as-m aven-plugin を使用して正しいディレクトリをデプロイ
する必要があります。
バグを報告する
3.2.12.3. クライアントアプリケーションの変更
JBoss Enterprise Application Platform 6 に接続するクライアントアプリケーションの移行を計画する場
合、クライアントライブラリをバンドルする JAR の名前と場所が変更になったことに注意してください。
この JAR の名前は jboss-client.jar に変更され、JBOSS_HOME/bin/client/ ディレクトリにあり
73
JBoss Enterprise Application Platform 6 移行ガイド
この JAR の名前は jboss-client.jar に変更され、JBOSS_HOME/bin/client/ ディレクトリにあり
ます。この JAR は JBOSS_HOME/client/jbossall-client.jar に置き換わるもので、リモートク
ライアントから Enterprise Application Platform 6 に接続するために必要なすべての依存関係が含まれてい
ます。
バグを報告する
74
第4章 ツールとヒント
第 4章 ツールとヒント
4.1. 移 行 に 役 立 つ リ ソ ー ス
4.1.1. 移行に役立つリソース
アプリケーションを JBoss Enterprise Application Platform 6 に移行する時に便利なリソースの一覧は次
の通りです。
ツール
設定変更の一部を自動化するのに役立つツールが複数あります。詳細は 「移行に便利なツールに
ついて理解する」 を参照してください。
デバッグのヒント
アプリケーションの移行時に発生する問題やエラーの最も一般的な原因と解決法については 「移
行の問題のデバッグと解決」を参照してください。
移行の例
JBoss Enterprise Application Platform 6 へ移行されたアプリケーションの例は 「アプリケー
ション例の移行の確認」を参照してください。
バグを報告する
4.1.2. 移行に便利なツールについて理解する
概要
移行に便利なツールは複数あります。これらのツールとその説明の一覧は次の通りです。
T attletale
モジュラークラスローディングの変更に伴い、アプリケーション依存関係を検索し、修正する必
要があります。T attletale は依存するモジュールの名前を特定し、アプリケーションに対して設
定 XML を生成する時に便利なツールです。
「T attletale を用いたアプリケーション依存関係の検索」
IronJacamar 移行ツール
JBoss Enterprise Application Platform 6 ではデータソースとリソースアダプターは個別のファイ
ルに設定されていません。データソースとリソースアダプターはサーバー設定ファイルに定義さ
れ、新しいスキーマを使用します。IronJacamar 移行ツールは以前の設定を JBoss Enterprise
Application Platform 6 が想定する形式に変換する時に便利です。
「IronJacamar ツールを使用してデータソースとリソースアダプターの設定を移行する」
バグを報告する
4.1.3. Tattletale を用いたアプリケーション依存関係の検索
75
JBoss Enterprise Application Platform 6 移行ガイド
概要
JBoss Enterprise Application Platform 6 のモジュラークラスローディングの変更に伴い、アプリケーショ
ンを移行する時に JBoss ログに ClassNotFoundException または ClassCastException トレース
が記録されることがあります。このエラーを解決するには、例外が指定するクラスが含まれる JAR を探す
必要があります。
T attletale はアプリケーションを再帰的にスキャンし、その内容の詳細レポートを提供する優れたサード
パーティーツールです。T attletale 1.2.0.Bata2 やそれ移行のバージョンには JBoss Enterprise Application
Platform 6 で使用される新しい JBoss Modules のクラスローディングに役立つ追加のサポートが含まれて
います。T attletale の 「JBoss EAP 6」レポートを使用して、自動的に依存するモジュール名を特定およ
び生成し、アプリケーションの jboss-deploym ent-structure.xm l ファイルが含まれるようにする
ことが可能です。
手順 4 .1 アプリケーション依存関係を検索するため T attletale をインストールし実行する
1. 「T attletale のダウンロードとインストール」
2. 「T attletale レポートの作成および確認」
注記
T attletale は JBoss Enterprise Application Platform 6 の一部としてはサポートされないサードパー
ティーのツールです。T attletale のインストール方法や使用方法に関する最新のドキュメントは、
T attletale の Web サイト http://www.jboss.org/tattletale をご覧ください。
バグを報告する
4.1.4. Tattletale のダウンロードとインストール
手順 4 .2
1. http://sourceforge.net/projects/jboss/files/JBoss%20T attletale より T attletale バージョン
1.2.0.Beta2 またはそれ以降のバージョンをダウンロードします。
2. 希望のディレクトリにファイルを展開します。
3. 次のように T AT T LET ALE_HOME/jboss-tattletale.properties ファイルを変更します。
a. ee6 と as7 を profiles プロパティーに追加します。
profiles=java5, java6, ee6, as7
b. scan と reports プロパティーをアンコメントします。
注記
T attletale は JBoss Enterprise Application Platform 6 の一部としてはサポートされないサードパー
ティーのツールです。T attletale のインストール方法や使用方法に関する最新のドキュメントは、
T attletale の Web サイト http://www.jboss.org/tattletale をご覧ください。
バグを報告する
76
第4章 ツールとヒント
手順 4 .3
1. 次のコマンドを実行して T attletale レポートを作成します。 java -jar
TATTLETALE_HOME/tattletale.jarAPPLICATION_ARCHIVEOUTPUT_DIRECTORY
For example: java -jar tattletale-1.2.0.Beta2/tattletale.jar
applications/jboss-seam -booking.ear output-results/
2. ブラウザーで OUTPUT_DIRECTORY/index.htm l ファイルを開き、「Reports」セクション下の
「JBoss EAP 6」をクリックします。
a. 左側の列にはアプリケーションによって使用されるアーカイブが一覧表示されま
す。ARCHIVE_NAME リンクをクリックし、場所やマニュフェスト情報、含まれるクラスなど
アーカイブの詳細を表示します。
b. 右側の列にある jboss-deploym ent-structure.xm l リンクは、左側の列に名前が表示
されているアーカイブのモジュール依存関係を指定する方法を表示します。このリンクをク
リックし、アーカイブのデプロイメント依存関係モジュール情報を定義する方法を確認しま
す。
注記
T attletale は EAP 6 の一部としてはサポートされないサードパーティーのツールです。T attletale
のインストール方法や使用方法に関する最新のドキュメントは、T attletale の Web サイト
http://www.jboss.org/tattletale をご覧ください。
バグを報告する
4.1.6. IronJacamar ツールを使用してデータソースとリソースアダプターの設定を
移行する
概要
以前のバージョンのアプリケーションサーバーでは、ファイル名が * -ds.xm l で終わるファイルを使用
してデータソースとリソースアダプターが設定されデプロイされました。IronJacamar 1.1 ディストリ
ビューションには、これらの設定ファイルを JBoss Enterprise Application Platform 6 が想定する形式に
変換できるツールが含まれています。このツールは以前のリリースよりソースの設定ファイルを解析し、
XML 設定を作成してファイルを新しい形式で出力します。この XML は JBoss Enterprise Application
Platform 6 のサーバー設定ファイルにある正しいサブシステム下にコピーしたり貼り付けすることができ
ます。このツールは最大限努力して以前の属性や要素を新しい形式に変換しますが、生成されたファイル
に変更を追加する必要がある場合があります。
手順 4 .4 IronJacamar 移行ツールのインストールと実行
1. 「IronJacamar 移行ツールのダウンロードとインストール」
2. 「IronJacamar 移行ツールを使用したデータソース設定ファイルの変換」
3. 「 IronJacamar 移行ツールを使用したリソースアダプター設定ファイルの変換」
77
JBoss Enterprise Application Platform 6 移行ガイド
注記
IronJacamar 移行ツールは JBoss Enterprise Application Platform 6 の一部としてはサポートされ
ないサードパーティーのツールです。IronJacamar に関する情報は
http://www.jboss.org/ironjacamar を参照してください。このツールのインストール方法や使用方法
についての最新のドキュメントは http://docs.jboss.org/ironjacamar/userguide/1.1/enUS/html/tools.html#tools_migration を参照してください。
バグを報告する
4.1.7. IronJacamar 移行ツールのダウンロードとインストール
注記
移行ツールは IronJacamar 1.1 およびそれ以降のバージョンでのみ使用可能です。
手順 4 .5
1. IronJacamar 1.1 またはそれ以降のディストリビューションを
http://www.jboss.org/ironjacamar/downloads/ よりダウンロードします。
2. 希望のディレクトリにダウンロードしたファイルを展開します。
3. IronJacamar ディストリビューションのコンバータースクリプト探します。
Linux のスクリプトは IRONJACAMAR_HOME/doc/as/converter.sh にあります。
Windows のバッチファイルは IRONJACAMAR_HOME/doc/as/converter.bat にあります。
注記
IronJacamar 移行ツールは JBoss Enterprise Application Platform 6 の一部としてはサポートされ
ないサードパーティーのツールです。IronJacamar に関する情報は
http://www.jboss.org/ironjacamar を参照してください。このツールのインストール方法や使用方法
についての最新のドキュメントは http://docs.jboss.org/ironjacamar/userguide/1.1/enUS/html/tools.html#tools_migration を参照してください。
バグを報告する
4.1.8. IronJacamar 移行ツールを使用したデータソース設定ファイルの変換
手順 4 .6
1. コマンドラインを開き、IRONJACAMAR_HOME/docs/as/ ディレクトリへ移動します。
2. 次のコマンドを入力してコンバータースクリプトを実行します。
Linux の場合: ./converter.sh -ds SOURCE_FILETARGET_FILE
Microsoft Windows の場合: ./converter.bat -ds SOURCE_FILETARGET_FILE
SOURCE_FILE は以前のリリースのデータソース -ds.xml ファイルです。TARGET_FILE に新しい設
定が含まれます。
例えば、カレントディレクトリにある jboss-seam -booking-ds.xm l データソース設定ファイ
ルを変換する場合は以下を入力します。
78
第4章 ツールとヒント
Linux の場合: ./converter.sh -ds jboss-seam -booking-ds.xm l new-datasourceconfig.xm l
Microsoft Windows の場合: ./converter.bat -ds jboss-seam -booking-ds.xm l newdatasource-config.xm l
データソース変換のパラメーターは -ds になります。
3. 目的のファイルより <datasource> 要素をコピーし、<subsystem
xm lns="urn:jboss:dom ain:datasources:1.0"><datasources> 要素下のサーバー設定
ファイルに貼り付けます。
管理ドメインで実行されている場合は、XML を
EAP_HOME/dom ain/configuration/dom ain.xm l ファイルへコピーします。
スタンドアロンサーバーとして実行されている場合は、XML を
EAP_HOME/standalone/configuration/standalone.xm l ファイルへコピーします。
4. 新しい設定ファイルに生成された XML の変更
JBoss Enterprise Application Platform 5.x に同梱される Seam 2.2 の Booking 例に対する jbossseam -booking-ds.xm l データソース設定ファイルの例は次の通りです。
<datasources>
<local-tx-datasource>
<jndi-name>bookingDatasource</jndi-name>
<connection-url>jdbc:hsqldb:.</connection-url>
<driver-class>org.hsqldb.jdbcDriver</driver-class>
<user-name>sa</user-name>
<password></password>
</local-tx-datasource>
</datasources>
以下はコンバータースクリプトを実行して生成された設定ファイルになります。生成されたファイ
ルには <driver-class> 要素が含まれます。JBoss Enterprise Application Platform 6 では
<driver> を使用してドライバークラスを定義する方法が推奨されます。 <driver-class> 要
素がコメントアウトされ、対応する <driver> 要素が追加された JBoss Enterprise Application
Platform 6 の設定ファイルにある XML は次のようになります。
79
JBoss Enterprise Application Platform 6 移行ガイド
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource enabled="true" jndiname="java:jboss/datasources/bookingDatasource" jta="true"
pool-name="bookingDatasource" use-ccm="true" use-javacontext="true">
<connection-url>jdbc:hsqldb:.</connection-url>
<!-- Comment out the following driver-class element
since it is not the preferred way to define this.
<driver-class>org.hsqldb.jdbcDriver</driver-class>
-->
<transaction-isolation>TRANSACTION_NONE</transaction-isolation>
<pool>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<user-name>sa</user-name>
<password/>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
</validation>
<timeout/>
<statement>
<track-statements>false</track-statements>
</statement>
</datasource>
<drivers>
<!-- The following driver element was not in the
XML target file. It was created manually. -->
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
注記
IronJacamar 移行ツールは JBoss Enterprise Application Platform 6 の一部としてはサポートされ
ないサードパーティーのツールです。IronJacamar に関する情報は
http://www.jboss.org/ironjacamar を参照してください。このツールのインストール方法や使用方法
についての最新のドキュメントは http://docs.jboss.org/ironjacamar/userguide/1.1/enUS/html/tools.html#tools_migration を参照してください。
バグを報告する
4.1.9. IronJacamar 移行ツールを使用したリソースアダプター設定ファイルの変換
手順 4 .7
1. コマンドラインを開き、IRONJACAMAR_HOME/docs/as/ ディレクトリへ移動します。
2. 次のコマンドを入力してコンバータースクリプトを実行します。
80
第4章 ツールとヒント
Linux の場合: ./converter.sh -ra SOURCE_FILETARGET_FILE
Microsoft Windows の場合: ./converter.bat -ra SOURCE_FILETARGET_FILE
SOURCE_FILE は以前のリリースのリソースアダプター -ds.xml ファイルです。\TARGET_FILE に新
しい設定が含まれます。
例えば、カレントディレクトリにある m ttestadapter-ds.xm l リソースアダプター設定ファイ
ルを変換する場合は以下を入力します。
Linux の場合: ./converter.sh -ra m ttestadapter-ds.xm l new-adapterconfig.xm l
Microsoft Windows の場合: ./converter.bat -ra m ttestadapter-ds.xm l newadapter-config.xm l
リソースアダプター変換のパラメーターは -ra になります。
3. 目的のファイルより <resource-adapters> 要素全体をコピーし、 <subsystem
xm lns="urn:jboss:dom ain:resource-adapters:1.0"> 要素下のサーバー設定ファイルに
貼り付けます。
管理ドメインで実行されている場合は、XML を
EAP_HOME/dom ain/configuration/dom ain.xm l ファイルへコピーします。
スタンドアロンサーバーとして実行されている場合は、XML を
EAP_HOME/standalone/configuration/standalone.xm l ファイルへコピーします。
4. 新しい設定ファイルに生成された XML の変更
以下は JBoss Enterprise Application Platform 5.x T estSuite からの m ttestadapter-ds.xm l リ
ソースアダプター設定ファイルの例になります。
81
JBoss Enterprise Application Platform 6 移行ガイド
<!-==================================================================== -->
<!-- ConnectionManager setup for jboss test adapter
->
<!-- Build jmx-api (build/build.sh all) and view for config documentation ->
<!-==================================================================== -->
<connection-factories>
<tx-connection-factory>
<jndi-name>JBossTestCF</jndi-name>
<xa-transaction/>
<rar-name>jbosstestadapter.rar</rar-name>
<connection-definition>javax.resource.cci.ConnectionFactory</connectiondefinition>
<config-property name="IntegerProperty"
type="java.lang.Integer">2</config-property>
<config-property name="BooleanProperty"
type="java.lang.Boolean">false</config-property>
<config-property name="DoubleProperty"
type="java.lang.Double">5.5</config-property>
<config-property name="UrlProperty"
type="java.net.URL">http://www.jboss.org</config-property>
<config-property name="sleepInStart" type="long">200</config-property>
<config-property name="sleepInStop" type="long">200</config-property>
</tx-connection-factory>
<tx-connection-factory>
<jndi-name>JBossTestCF2</jndi-name>
<xa-transaction/>
<rar-name>jbosstestadapter.rar</rar-name>
<connection-definition>javax.resource.cci.ConnectionFactory</connectiondefinition>
<config-property name="IntegerProperty"
type="java.lang.Integer">2</config-property>
<config-property name="BooleanProperty"
type="java.lang.Boolean">false</config-property>
<config-property name="DoubleProperty"
type="java.lang.Double">5.5</config-property>
<config-property name="UrlProperty"
type="java.net.URL">http://www.jboss.org</config-property>
<config-property name="sleepInStart" type="long">200</config-property>
<config-property name="sleepInStop" type="long">200</config-property>
</tx-connection-factory>
<tx-connection-factory>
<jndi-name>JBossTestCFByTx</jndi-name>
<xa-transaction/>
<track-connection-by-tx>true</track-connection-by-tx>
<rar-name>jbosstestadapter.rar</rar-name>
<connection-definition>javax.resource.cci.ConnectionFactory</connectiondefinition>
<config-property name="IntegerProperty"
type="java.lang.Integer">2</config-property>
<config-property name="BooleanProperty"
type="java.lang.Boolean">false</config-property>
<config-property name="DoubleProperty"
type="java.lang.Double">5.5</config-property>
<config-property name="UrlProperty"
type="java.net.URL">http://www.jboss.org</config-property>
<config-property name="sleepInStart" type="long">200</config-property>
<config-property name="sleepInStop" type="long">200</config-property>
82
第4章 ツールとヒント
</tx-connection-factory>
</connection-factories>
以下はコンバータースクリプトを実行して生成された設定ファイルになります。生成された XML に
ある class-name 属性値の "FIXME_MCF_CLASS_NAME" を、管理された接続ファクトリーの正し
いクラス名に置き換えます。この例では
"org.jboss.test.jca.adapter.T estManagedConnectionFactory" に置き換えます。<class-nam e> 要
素値へ変更が加えられた JBoss Enterprise Application Platform 6 設定ファイルの XML は次のよう
になります。
83
JBoss Enterprise Application Platform 6 移行ガイド
<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0">
<resource-adapters>
<resource-adapter>
<archive>jbosstestadapter.rar</archive>
<transaction-support>XATransaction</transaction-support>
<connection-definitions>
<!-- Replace the "FIXME_MCF_CLASS_NAME" class-name value with the correct
class name
<connection-definition class-name="FIXME_MCF_CLASS_NAME" enabled="true"
jndi-name="java:jboss/JBossTestCF" pool-name="JBossTestCF"
use-ccm="true" use-java-context="true"> -->
<connection-definition
class-name="org.jboss.test.jca.adapter.TestManagedConnectionFactory"
enabled="true"
jndi-name="java:jboss/JBossTestCF" pool-name="JBossTestCF"
use-ccm="true" use-java-context="true">
<config-property name="IntegerProperty">2</config-property>
<config-property name="sleepInStart">200</config-property>
<config-property name="sleepInStop">200</config-property>
<config-property name="BooleanProperty">false</config-property>
<config-property name="UrlProperty">http://www.jboss.org</configproperty>
<config-property name="DoubleProperty">5.5</config-property>
<pool>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<application/>
</security>
<timeout/>
<validation>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
</validation>
</connection-definition>
</connection-definitions>
</resource-adapter>
<resource-adapter>
<archive>jbosstestadapter.rar</archive>
<transaction-support>XATransaction</transaction-support>
<connection-definitions>
<!-- Replace the "FIXME_MCF_CLASS_NAME" class-name value with the correct
class name
<connection-definition class-name="FIXME_MCF_CLASS_NAME" enabled="true"
jndi-name="java:jboss/JBossTestCF2" pool-name="JBossTestCF2"
use-ccm="true" use-java-context="true"> -->
<connection-definition
class-name="org.jboss.test.jca.adapter.TestManagedConnectionFactory"
enabled="true"
jndi-name="java:jboss/JBossTestCF2" pool-name="JBossTestCF2"
use-ccm="true" use-java-context="true">
<config-property name="IntegerProperty">2</config-property>
<config-property name="sleepInStart">200</config-property>
<config-property name="sleepInStop">200</config-property>
<config-property name="BooleanProperty">false</config-property>
<config-property name="UrlProperty">http://www.jboss.org</configproperty>
<config-property name="DoubleProperty">5.5</config-property>
84
第4章 ツールとヒント
<pool>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<application/>
</security>
<timeout/>
<validation>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
</validation>
</connection-definition>
</connection-definitions>
</resource-adapter>
<resource-adapter>
<archive>jbosstestadapter.rar</archive>
<transaction-support>XATransaction</transaction-support>
<connection-definitions>
<!-- Replace the "FIXME_MCF_CLASS_NAME" class-name value with the correct
class name
<connection-definition class-name="FIXME_MCF_CLASS_NAME" enabled="true"
jndi-name="java:jboss/JBossTestCFByTx" pool-name="JBossTestCFByTx"
use-ccm="true" use-java-context="true"> -->
<connection-definition
class-name="org.jboss.test.jca.adapter.TestManagedConnectionFactory"
enabled="true"
jndi-name="java:jboss/JBossTestCFByTx" pool-name="JBossTestCFByTx"
use-ccm="true" use-java-context="true">
<config-property name="IntegerProperty">2</config-property>
<config-property name="sleepInStart">200</config-property>
<config-property name="sleepInStop">200</config-property>
<config-property name="BooleanProperty">false</config-property>
<config-property name="UrlProperty">http://www.jboss.org</configproperty>
<config-property name="DoubleProperty">5.5</config-property>
<pool>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<application/>
</security>
<timeout/>
<validation>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
</validation>
</connection-definition>
</connection-definitions>
</resource-adapter>
</resource-adapters>
</subsystem>
85
JBoss Enterprise Application Platform 6 移行ガイド
注記
IronJacamar 移行ツールは JBoss Enterprise Application Platform 6 の一部としてはサポートされ
ないサードパーティーのツールです。IronJacamar に関する情報は
http://www.jboss.org/ironjacamar を参照してください。このツールのインストール方法や使用方法
についての最新のドキュメントは http://docs.jboss.org/ironjacamar/userguide/1.1/enUS/html/tools.html#tools_migration を参照してください。
バグを報告する
4.2. 移 行 の 問 題 の デ バ ッ グ
4.2.1. 移行の問題のデバッグと解決
クラスローディングや JNDI ネーミングルール、アプリケーションのその他の変更に伴い、アプリケー
ションをそのままデプロイしようとすると例外やその他のエラーが発生することがあります。発生する可
能性のある一般的な例外やエラーの一部を解決する方法については以下を参照してください。
「ClassNotFoundExceptions および NoClassDefFoundErrors のデバッグと解決」
「ClassCastExceptions のデバッグと解決」
「DuplicateServiceExceptions のデバッグと解決」
「JBoss Seam のデバッグページエラーのデバッグと解決」
バグを報告する
4.2.2. ClassNotFoundExceptions および NoClassDefFoundErrors のデバッグと解
決
概要
通常、ClassNotFoundExceptions は未解決の依存関係が原因で発生します。そのため、他のモジュール上
で依存関係を明示的に定義するか、外部ソースより JAR をコピーする必要があります。
手順 4 .8
1. 最初に 「JBoss モジュール依存関係の検索」 の手順を実行します。
2. 見つからないクラスのモジュールがない場合は 「以前のインストールでの JAR の検索」 の通りに
JAR を探します。
バグを報告する
4.2.3. JBoss モジュール依存関係の検索
依存関係を解決するには、最初に EAP_HOME/m odules/ ディレクトリ内で
ClassNotFoundException によって指定されたクラスが含まれるモジュールを探します。クラスのモ
ジュールを見つけた場合は、マニフェストエントリーへの依存関係を追加する必要があります。
例えば、ログに次の ClassNotFoundException トレースが記録されているとします。
86
第4章 ツールとヒント
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
from [Module "deployment.TopicIndex.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:188)
この場合、次を実行してこのクラスが含まれる JBoss モジュールを探します。
手順 4 .9
1. 最初にクラスの明白なモジュールがあるかを判断します。
a. EAP_HOME/m odules/ ディレクトリへ移動し、ClassNotFoundException で名前付けさ
れたクラスと一致するモジュールパスを探します。
この例では、モジュール下に org/apache/com m ons/logging/ のモジュールパスがあり
ます。
b. EAP_HOME/m odules/org/apache/com m ons/logging/m ain/m odule.xm l ファイル
を開き、モジュール名を探します。この例では org.apache.commons.logging になります。
c. MANIFEST .MF ファイルの Dependencies にモジュール名を追加します。
Manifest-Version: 1.0
Dependencies: org.apache.commons.logging
2. クラスの明白なモジュールパスがない場合、依存関係を他の場所で探す必要があることがありま
す。
a. T attletale レポートで ClassNotFoundException によって名前付けされたクラスを探し
ます。
b. EAP_HOME/m odules ディレクトリで JAR が含まれているモジュールを探し、前の手順の通
りにモジュール名を探します。
バグを報告する
4.2.4. 以前のインストールでの JAR の検索
サーバーによって定義されたモジュールにパッケージ化された JAR にクラスがない場合は、EAP5_HOME
インストールまたは以前のサーバーの lib/ ディレクトリで JAR を探します。
例えば、ログに次の ClassNotFoundException トレースが記録されているとします。
Caused by: java.lang.NoClassDefFoundError: org/hibernate/validator/ClassValidator
at java.lang.Class.getDeclaredMethods0(Native Method)
この場合、次を実行してこのクラスが含まれる JAR を探します。
1. ターミナルを開き、EAP5_HOME/ ディレクトリへ移動します。
2. コマンドを実行します。
grep 'org.hibernate.validator.ClassValidator' `find . \-nam e '* .jar'`
3. 複数の結果が表示されることもあります。その場合、必要な JAR は次の通りです。
Binary file ./jboss-eap-5.1/seam/lib/hibernate-validator.jar matches
4. この JAR をアプリケーションの lib/ ディレクトリへコピーします。
多数の JAR が必要であることが判明した場合、クラスのモジュールを定義した方が簡単でしょう。
クラスのモジュールを定義する方法は、JBoss Enterprise Application Platform 6 開発ガイドの「ア
プリケーションの開発」の章に記載されているモジュールに関する説明を参照してください。
87
JBoss Enterprise Application Platform 6 移行ガイド
5. アプリケーションを再ビルドし、再デプロイします。
バグを報告する
4.2.5. ClassCastExceptions のデバッグと解決
ClassCastExceptions は、拡張するクラスではなく他のクラスによってクラスがロードされる時に発生す
ることが多くあります。また、同じクラスが複数の JAR に存在することが原因である場合もあります。
手順 4 .10
1. ClassNotFoundException によって名前付けされたクラスが含まれる JAR をすべて見つけるた
め、アプリケーションを検索します。クラスに対して定義されたモジュールがある場合、アプリ
ケーションの WAR や EAR より重複する JAR を探し、削除します。
2. クラスが含まれる JBoss モジュールを探し、MANIFEST .MF ファイルまたは jbossdeploym ent-structure.xm l ファイルに依存関係を明示的に定義します。詳細は、JBoss
Enterprise Application Platform 6 開発ガイドの「クラスローディングとモジュール」の章にある
「クラスローディングとサブデプロイメント」を参照してください。
3. 上記の手順に従っても解決されない場合、クラスローダーの情報をログに出力すると問題の原因を
判断できることがあります。例えば、次の ClassCastException がログに記録されているとし
ます。
java.lang.ClassCastException: com.example1.CustomClass1 cannot be cast to
com.example2.CustomClass2
a. コードで ClassCastException によって名前付けされたクラスに対するクラスローダーの
情報をログに出力します。例は次の通りです。
logger.info("Class loader for CustomClass1: " +
com.example1.CustomClass1.getClass().getClassLoader().toString());
logger.info("Class loader for CustomClass2: " +
com.example2.CustomClass2.getClass().getClassLoader().toString());
b. ログの情報にはどのモジュールがクラスをロードするかが記載されています。アプリケー
ションに基づき、競合する JAR を削除または移動する必要があります。
バグを報告する
4.2.6. DuplicateServiceExceptions のデバッグと解決
JAR のサブデプロイメントに対して DuplicateServiceException が発生したり、 JBoss Enterprise
Application Platform 6 に EAR をデプロイする時に WAR アプリケーションが既にインストールされてい
るというメッセージが表示された場合、JBossWS によるデプロイメントの処理方法が変更になったこと
が原因であることがあります。
JBossWS 3.3.0 リリースでは、T CK6 とのシームレスな互換性を実現するため、サーブレットベースのエ
ンドポイントに対して新しいコンテキストルートマッピングアルゴリズムが導入されました。アプリケー
ション EAR アーカイブに同じ名前の WAR や JAR が含まれている場合、 JBossWS が同じ名前の WAR
コンテキストや Web コンテキストを作成することがあります。Web コンテキストが WAR コンテキスト
と競合し、デプロイメントエラーが発生します。以下の方法の 1 つを用いてデプロイメントの問題を解
決します。
生成される Web コンテキストと WAR コンテキストが一意になるよう、JAR ファイルの名前を WAR
とは異なる名前に変更します。
<context-root> 要素を jboss-web.xm l ファイルに提供します。
88
第4章 ツールとヒント
<context-root> 要素を jboss-webservices.xm l ファイルに提供します。
WAR の <context-root> 要素を application.xm l ファイルでカスタマイズします。
バグを報告する
4.2.7. JBoss Seam のデバッグページエラーのデバッグと解決
アプリケーションを移行し、正常にデプロイした後、JBoss Seam デバッグページへリダイレクトされる
ランタイムエラーが発生することがあります。このページの URL は
http://localhost:8080/APPLICATION_CONTEXT/debug.seam です。このページでは、現在のログインセッ
ションに関連する Seam コンテキストで Seam コンポーネントを確認したり調査することができます。
図 4 .1 JBoss Seam デバッグページ
このページへリダイレクトされる原因は、アプリケーションコードで処理されなかった例外を Seam が
キャッチしたためであることがほとんどです。通常、「JBoss Seam デバッグページ」上のリンクで例外
の根本的な原因を見つけることができます。
手順 4 .11
1. このページの Com ponent セクションを拡大し、org.jboss.seam .caughtException コン
ポーネントを探します。
2. 原因とスタックトレースが欠落している依存関係を示しているはずです。
89
JBoss Enterprise Application Platform 6 移行ガイド
図 4 .2 コンポーネント org.jboss.seam .caughtException の情報
3. 「ClassNotFoundExceptions および NoClassDefFoundErrors のデバッグと解決」 に説明されてい
る手法を使用してモジュール依存関係を解決します。
上記の例では、org.slf4 j を MANIFEST .MF に追加するのが最も簡単な解決方法になります。
Manifest-Version: 1.0
Dependencies: org.slf4j
モジュールの依存関係を jboss-deploym ent-structure.xm l ファイルに追加して解決する方
法もあります。
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.slf4j" />
</dependencies>
</deployment>
</jboss-deployment-structure>
バグを報告する
90
第4章 ツールとヒント
4.3. ア プ リ ケ ー シ ョ ン 例 の 移 行 の 確 認
4.3.1. アプリケーション例の移行の確認
概要
JBoss Enterprise Application Platform 6 へ移行された JBoss Enterprise Application Platform 5.x のアプリ
ケーションの例は次の通りです。リンクをクリックすると、特定アプリケーションの変更内容の詳細を確
認できます。
「Seam 2.2. JPA 例の JBoss Enterprise Application Platform 6 への移行」
「Seam 2.2. Booking 例の JBoss Enterprise Application Platform 6 への移行」
「Seam 2.2 Booking アーカイブの JBoss Enterprise Application 6 への移行: 手順説明」
バグを報告する
4.3.2. Seam 2.2. JPA 例の JBoss Enterprise Application Platform 6 への移行
概要
下記のタスクリストには、Seam 2.2 JPA の例を JBoss Enterprise Application Platform 6 へ正常に移行す
るために必要な変更の概要が記載されています。このアプリケーション例は JBoss Enterprise Application
Platform 5.1 ディストリビューションの EAP5.1_HOME/jboss-eap-5.1/seam /exam ples/jpa/ 下に
あります。
重要
この例は、最初にアプリケーションを JBoss Enterprise Application Platform 6 上で実行できるよ
うにすることを目的としています。この設定はサポート対象ではなく、Hibernate 4 を使用するよ
う次の手順でアプリケーションをアップグレードする必要があります。
手順 4 .12 タスク
1. jboss-web.xml ファイルを削除します。
jboss-seam -jpa.war/WEB-INF/ ディレクトリより jboss-web.xm l ファイルを削除しま
す。jboss-web.xm l に定義されるクラスローディングがデフォルトの挙動になります。
2. persistence.xml ファイルの廃止されたプロパティーの削除
jboss-seam -jpa.war/WEB-INF/classes/MET A-INF/persistence.xm l ファイルの
hibernate.cache.provider_class プロパティーを削除またはコメントアウトします。
<!-- <property name="hibernate.cache.provider_class"
value="org.hibernate.cache.HashtableCacheProvider"/> -->
3. Seam 2.2 依存関係の追加
下記の JAR を Seam 2.2 ディストリビューションのライブラリである SEAM_HOME/lib/ から
jboss-seam -jpa.war/WEB-INF/lib/ ディレクトリへコピーします。
slf4j-api.jar
slf4j-log4j12.jar
hibernate-entitymanager.jar
hibernate-core.jar
91
JBoss Enterprise Application Platform 6 移行ガイド
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-validator.jar
4. 残りの依存関係を追加するため jboss-deployment-structure ファイルを作成する
次のデータが含まれる jboss-deploym ent-structure.xm l ファイルを jboss-seam jpa.war/WEB-INF/ フォルダーに作成します。
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="javax.faces.api" slot="main"/>
<module name="com.sun.jsf-impl" slot="main"/>
</exclusions>
<dependencies>
<module name="org.apache.log4j" />
<module name="org.dom4j" />
<module name="org.apache.commons.logging" />
<module name="org.apache.commons.collections" />
<module name="javax.faces.api" slot="1.2"/>
<module name="com.sun.jsf-impl" slot="1.2"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
結果
Seam 2.2 の JPA 例が JBoss Enterprise Application Platform 6 上にデプロイされ、正常に実行されます。
バグを報告する
4.3.3. Seam 2.2. Booking 例の JBoss Enterprise Application Platform 6 への移行
概要
Seam 2.2 Booking EAR の移行は Seam 2.2 JPA WAR 例の移行よりも複雑です。Seam 2.2 JPA WAR 例の
移行に関するドキュメントは 「Seam 2.2. JPA 例の JBoss Enterprise Application Platform 6 への移行」
を参照してください。アプリケーションを移行するには、以下を実行する必要があります。
1. デフォルトの JSF 2 ではなく JSF 1.2 を初期化する。
2. JBoss Enterprise Application Platform 6 に同梱される Hibernate JAR ではなく、古いバージョンの
Hibernate JAR をバンドルする。
3. 新しい Java EE 6 の移植可能な JNDI 構文を使用するよう JNDI バインディングを変更する。
最初の 2 つの手順は Seam 2.2 JPA WAR 例の移行で実行済みです。EAR に EJB が含まれるため、新しい
3 つ目の手順が必要となります。
重要
この例は、最初にアプリケーションを JBoss Enterprise Application Platform 6 上で実行できるよ
うにすることを目的としています。この設定はサポート対象ではなく、Hibernate 4 を使用するよ
う次の手順でアプリケーションをアップグレードする必要があります。
手順 4 .13 Seam 2.2 Booking 例の移行
92
第4章 ツールとヒント
1. jboss-deploym ent-structure.xm l ファイルの作成
jboss-seam -booking.ear/MET A-INF/ に jboss-deploym ent-structure.xm l という名
前の新しいファイルを作成し、次の内容を追加します。
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="org.apache.log4j" export="true"/>
<module name="org.dom4j" export="true"/>
<module name="org.apache.commons.logging" export="true"/>
<module name="org.apache.commons.collections" export="true"/>
<module name="javax.faces.api" slot="1.2" export="true"/>
<module name="com.sun.jsf-impl" slot="1.2" export="true"/>
</dependencies>
</deployment>
<sub-deployment name="booking-web.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
<module name="com.sun.jsf-impl" slot="main"/>
</exclusions>
<dependencies>
<module name="javax.faces.api" slot="1.2"/>
<module name="com.sun.jsf-impl" slot="1.2"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
2. キャッシュプロバイダークラスの hibernate プロパティーの削除
jboss-seam -booking.jar/MET A-INF/persistence.xm l ファイルのキャッシュプロバイ
ダークラスに対する hibernate プロパティーを削除またはコメントアウトします。
<!-- <property name="hibernate.cache.provider_class"
value="org.hibernate.cache.HashtableCacheProvider"/> -->
3. Seam 2.2 ディストリビューションより JAR をコピー
次の JAR を Seam 2.2 ディストリビューションの EAP5.x_HOME/jboss-eap5.x/seam /lib/ か
ら jboss-seam -booking.ear/lib ディレクトリへコピーします。
slf4j-api.jar
slf4j-log4j12.jar
hibernate-core.jar
hibernate-entitymanager.jar
hibernate-validator.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
4. JNDI ルックアップ名の変更
jboss-seam -booking.war/WEB-INF/com ponents.xm l ファイルの JNDI ルックアップ文字
列を変更します。新しい移植可能な JNDI のルールが導入されたため、JBoss Enterprise
Application Platform 6 は 移植可能な JNDI の構文ルールを使用して EJB をバインドします。JBoss
Enterprise Application Platform 5 で使用された単一の jndiPattern を使用することはできません。
JBoss Enterprise Application Platform 6 ではアプリケーションの EJB JNDI ルックアップ文字列を
次のように変更する必要があります。
93
JBoss Enterprise Application Platform 6 移行ガイド
java:global/seam-booking/bookingejb/HotelSearchingAction!org.jboss.seam.example.booking.HotelSearching
java:app/bookingejb/HotelSearchingAction!org.jboss.seam.example.booking.HotelSearching
java:module/HotelSearchingAction!org.jboss.seam.example.booking.HotelSearching
java:global/seam-booking/booking-ejb/HotelSearchingAction
java:app/booking-ejb/HotelSearchingAction
java:module/HotelSearchingAction
Seam 2.2 フレームワーク EJB の JNDI ルックアップ文字列は次のように変更する必要があります。
java:global/seam-booking/jbossseam/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchronizations
java:app/jbossseam/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchronizations
java:module/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchronizat
ions
java:global/seam-booking/jboss-seam/EjbSynchronizations
java:app/jboss-seam/EjbSynchronizations
java:module/EjbSynchronizations
次のいずれかの方法を実行します。
a. コンポーネント要素の追加
各 EJB に対する jndi-nam e を WEB-INF/com ponents.xm l に追加することができま
す。
<component class="org.jboss.seam.transaction.EjbSynchronizations" jndiname="java:app/jboss-seam/EjbSynchronizations"/>
<component class="org.jboss.seam.async.TimerServiceDispatcher" jndiname="java:app/jboss-seam/TimerServiceDispatcher"/>
<component class="org.jboss.seam.example.booking.AuthenticatorAction"
jndi-name="java:app/booking-ejb/AuthenticatorAction" />
<component class="org.jboss.seam.example.booking.BookingListAction"
jndi-name="java:app/booking-ejb/BookingListAction" />
<component class="org.jboss.seam.example.booking.RegisterAction" jndiname="java:app/booking-ejb/RegisterAction" />
<component class="org.jboss.seam.example.booking.HotelSearchingAction"
jndi-name="java:app/booking-ejb/HotelSearchingAction" />
<component class="org.jboss.seam.example.booking.HotelBookingAction"
jndi-name="java:app/booking-ejb/HotelBookingAction" />
<component class="org.jboss.seam.example.booking.ChangePasswordAction"
jndi-name="java:app/booking-ejb/ChangePasswordAction" />
b. JNDI パスを指定する @ JNDINam e(value="") アノテーションを追加してコードを変更す
ることができます。変更されたステートレスセッション Bean のコードは次の通りです。こ
の処理の詳細は Seam 2.2 の参考文献を参照してください。
@Stateless
@Name("authenticator")
@JndiName(value="java:app/booking-ejb/AuthenticatorAction")
public class AuthenticatorAction
implements Authenticator
{
...
}
結果
94
第4章 ツールとヒント
Seam 2.2 の Booking アプリケーションが JBoss Enterprise Application Platform 6 上にデプロイされ、正
常に実行されます。
バグを報告する
4.3.4. Seam 2.2 Booking アーカイブの JBoss Enterprise Application 6 への移行 :
手順説明
本書は Seam 2.2 Booking アプリケーションアーカイブを JBoss Enterprise Application Platform 5.1 から
JBoss Enterprise Application Platform 6 へ移植する方法について説明するステップバイステップガイドと
なります。アプリケーションの移行により適した方法が存在しますが、アプリケーションアーカイブをそ
のまま JBoss Enterprise Application Platform 6 のサーバーへデプロイし、どうなるか結果を見たいと
思っている開発者も多くいるはずです。本書の目的は、アプリケーションアーカイブをそのままデプロイ
すると発生する可能性のある問題やそのデバッグ方法および解決方法について解説することにあります。
この例ではアプリケーション EAR は EAP6_HOME/standalone/deploym ents ディレクトリにデプロ
イされ、変更はアーカイブの変更のみとなります。これにより、問題の発生や解決時にアーカイブ内にあ
る XML ファイルの変更が容易になります。
重要
この例は、最初にアプリケーションを JBoss Enterprise Application Platform 6 上で実行できるよ
うにすることを目的としています。この設定はサポート対象ではなく、Hibernate 4 を使用するよ
う次の手順でアプリケーションをアップグレードする必要があります。
手順 4 .14 アプリケーションの移行
1. 「JBoss Enterprise Application Platform 5.1 バージョンの Seam 2.2 Booking アプリケーションの
ビルドおよびデプロイ」 に従ってビルドおよびデプロイします。
2. 「Seam 2.2 Booking アーカイブのデプロイメントエラーや例外のデバッグおよび解決」 に従って
デプロイメントエラーや例外のデバッグおよび解決を行います。
3. 「Seam 2.2 Booking アーカイブのランタイムエラーや例外のデバッグおよび解決」 に従ってラン
タイムエラーや例外のデバッグおよび解決を行います。
この時点で URL http://localhost:8080/seam-booking/ をブラウザーで指定してアプリケーションにアクセ
スすることができます。demo/demo でログインすると Booking のウェルカムページが表示されます。
変更概要の確認
「Seam 2.2 Booking アプリケーションの移行時に加えられる変更概要の確認」 に従って変更の概要を確
認します。
バグを報告する
4.3.5. JBoss Enterprise Application Platform 5.1 バージョンの Seam 2.2 Booking
アプリケーションのビルドおよびデプロイ
このアプリケーションを移行する前に、JBoss Enterprise Application Platform 5.1 の Seam 2.2 Booking
アプリケーションをビルドし、アーカイブを展開してから JBoss Enterprise Application Platform 6 のデ
プロイメントフォルダーへコピーします。
手順 4 .15 EAR のビルドとデプロイ
95
JBoss Enterprise Application Platform 6 移行ガイド
1. EAR をビルドします。
$ cd /EAP5_HOME/jboss-eap5.1/seam/examples/booking
$ ANT_HOME/ant explode
2. EAR を EAP6_HOME デプロイメントディレクトリへコピーします。
$ cp -r EAP5_HOME/jboss-eap-5.1/seam/examples/booking/explodedarchives/jboss-seam-booking.ear EAP6_HOME/standalone/deployments/
$ cp -r EAP5_HOME/jboss-eap-5.1/seam/examples/booking/explodedarchives/jboss-seam-booking.war EAP6_HOME/standalone/deployments/jbossseam.ear
$ cp -r EAP5_HOME/jboss-eap-5.1/seam/examples/booking/explodedarchives/jboss-seam-booking.jar EAP6_HOME/standalone/deployments/jbossseam.ear
3. JBoss Enterprise Application Platform 6 サーバーを起動し、ログをチェックします。ログには以下
が記録されているはずです。
INFO [org.jboss.as.deployment] (DeploymentScanner-threads - 1) Found jbossseam-booking.ear in deployment directory.
To trigger deployment create a file called jboss-seambooking.ear.dodeploy
4. jboss-seam -booking.ear.dodeploy という名前の空のファイルを作成
し、EAP6_HOME/standalone/deploym ents ディレクトリへコピーします。本アプリケーショ
ンの移行中に、このファイルを複数回デプロイメントディレクトリへコピーする必要があるため、
簡単に見つかる場所へ保存するようにしてください。デプロイ中であることを示す次のメッセージ
がログに記録されるはずです。
INFO [org.jboss.as.server.deployment] (MSC
deployment of "jboss-seam-booking.ear"
INFO [org.jboss.as.server.deployment] (MSC
deployment of "jboss-seam-booking.jar"
INFO [org.jboss.as.server.deployment] (MSC
deployment of "jboss-seam.jar"
INFO [org.jboss.as.server.deployment] (MSC
deployment of "jboss-seam-booking.war"
service thread 1-1) Starting
service thread 1-3) Starting
service thread 1-6) Starting
service thread 1-2) Starting
この時点で最初のデプロイメントエラーが発生します。次の手順で各問題を確認し、デバッグおよ
び解決方法について説明します。
デプロイメントの問題をデバッグおよび解決する方法については 「Seam 2.2 Booking アーカイブ
のデプロイメントエラーや例外のデバッグおよび解決」 を参照してください。前のトピックに戻る
には 「Seam 2.2 Booking アーカイブの JBoss Enterprise Application 6 への移行: 手順説明」 をク
リックしてください。
バグを報告する
4.3.6. Seam 2.2 Booking アーカイブのデプロイメントエラーや例外のデバッグお
よび解決
前述の手順、「JBoss Enterprise Application Platform 5.1 バージョンの Seam 2.2 Booking アプリケー
ションのビルドおよびデプロイ」 では Enterprise Application Platform 5.1 の Seam 2.2 Booking アプリ
ケーション構築し、JBoss Enterprise Application Platform 6 のデプロイメントフォルダーにデプロイしま
した。この手順では発生したデプロイメントエラーをデバッグし解決します。
96
第4章 ツールとヒント
重要
この例は、最初にアプリケーションを JBoss Enterprise Application Platform 6 上で実行できるよ
うにすることを目的としています。この設定はサポート対象ではなく、Hibernate 4 を使用するよ
う次の手順でアプリケーションをアップグレードする必要があります。
手順 4 .16 デプロイメントエラーや例外のデバッグおよび解決
1. 問題 - java.lang.ClassNotFoundException: javax.faces.FacesException
アプリケーションをデプロイすると、ログに次のエラーが記録されます。
ERROR \[org.jboss.msc.service.fail\] (MSC service thread 1-1) MSC00001:
Failed to start service jboss.deployment.subunit."jboss-seambooking.ear"."jboss-seam-booking.war".POST_MODULE:
org.jboss.msc.service.StartException in service
jboss.deployment.subunit."jboss-seam-booking.ear"."jboss-seambooking.war".POST_MODULE:
Failed to process phase POST_MODULE of subdeployment "jboss-seam-booking.war"
of deployment "jboss-seam-booking.ear"
(.. additional logs removed ...)
Caused by: java.lang.ClassNotFoundException: javax.faces.FacesException from
\[Module "deployment.jboss-seam-booking.ear:main" from Service Module
Loader\]
at
org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
ログの解説
ClassNotFoundException は見つからない依存関係があることを示しています。この例では、クラ
ス javax.faces.FacesException が見つからないため、依存関係を明示的に追加する必要が
あります。
解決方法
見つからないクラスと一致するパスを探し、EAP6_HOME/modules ディレクトリ内でそのクラスの
モジュール名を見つけます。この例では、一致するモジュールが 2 つあります。
javax/faces/api/main
javax/faces/api/1.2
両モジュールのモジュール名は同じ javax.faces.api ですが、メインディレクトリにあるモ
ジュールは JSF 2.0 向けで、1.2 ディレクトリにあるものは JSF 1.2 向けです。一致するモジュール
が 1 つのみの場合、 MANIFEST .MF ファイルを作成し、モジュールの依存関係を追加します。こ
の例では、メインディレクトリにある 2.0 バージョンではなく JSF 1.2 バージョンを使用したいた
め、使用したい方を指定し、使用したくない方を除外します。それには、EAR の MET A-INF/ ディ
レクトリに次のデータが含まれる jboss-deploym ent-structure.xm l ファイルを作成しま
す。
97
JBoss Enterprise Application Platform 6 移行ガイド
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="javax.faces.api" slot="1.2" export="true"/>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
</exclusions>
<dependencies>
<module name="javax.faces.api" slot="1.2"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
deploym ent セクションに JSF 1.2 モジュールの javax.faces.api に対する依存関係を追加し
ます。また、JSF 1.2 モジュールに対する依存関係を WAR のサブデプロイメントセクションに追加
し、 JSF 2.0 のモジュールを除外します。
standalone/deploym ents/jboss-seam -booking.ear.failed ファイルを削除して同じ
ディレクトリに空の jboss-seam -booking.ear.dodeploy ファイルを作成し、アプリケー
ションを再デプロイします。
2. 問題 - java.lang.ClassNotFoundException: org.apache.commons.logging.Log
アプリケーションをデプロイすると、次のエラーがログに記録されます。
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC00001: Failed
to start service jboss.deployment.unit."jboss-seam-booking.ear".INSTALL:
org.jboss.msc.service.StartException in service jboss.deployment.unit."jbossseam-booking.ear".INSTALL:
Failed to process phase INSTALL of deployment "jboss-seam-booking.ear"
(.. additional logs removed ...)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
from [Module "deployment.jboss-seam-booking.ear.jboss-seam-booking.war:main"
from Service Module Loader]
ログの解説
ClassNotFoundException は見つからない依存関係があることを示しています。この例では、
クラスorg.apache.com m ons.logging.Log が見つからないため、依存関係を明示的に追加す
る必要があります。
解決方法
見つからないクラスと一致するパスを探し、EAP6_HOME/m odules/ ディレクトリ内でそのクラス
のモジュール名を見つけます。この例では、パス org/apache/com m ons/logging/ と一致す
るモジュールが 1 つあります。モジュール名は「org.apache.commons.logging」です。
jboss-deploym ent-structure.xm l ファイルを変更し、モジュールの依存関係をファイルの
デプロイメントセクションに追加します。
<module name="org.apache.commons.logging" export="true"/>
jboss-deployment-structure.xml は次のようになるはずです。
98
第4章 ツールとヒント
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="javax.faces.api" slot="1.2" export="true"/>
<module name="org.apache.commons.logging" export="true"/>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
</exclusions>
<dependencies>
<module name="javax.faces.api" slot="1.2"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
standalone/deploym ents/jboss-seam -booking.ear.failed ファイルを削除して同じ
ディレクトリに空の jboss-seam -booking.ear.dodeploy ファイルを作成し、アプリケー
ションを再デプロイします。
3. 問題 - java.lang.ClassNotFoundException: org.dom4j.DocumentException
アプリケーションをデプロイすると、次のエラーがログに記録されます。
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[defaulthost].[/seam-booking]] (MSC service thread 1-3) Exception sending context
initialized event to listener instance of class
org.jboss.seam.servlet.SeamListener: java.lang.NoClassDefFoundError:
org/dom4j/DocumentException
(... additional logs removed ...)
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException from
[Module "deployment.jboss-seam-booking.ear.jboss-seam.jar:main" from Service
Module Loader]
ログの解説
ClassNotFoundException は見つからない依存関係があることを示しています。この例では、
クラス org.dom 4 j.Docum entException が見つかりません。
解決方法
org/dom 4 j/Docum entException を探し、EAP6_HOME/m odules/ ディレクトリ内でモジュー
ル名を見つけます。モジュール名は 「org.dom4j」です。jboss-deploym ent-structure.xm l
ファイルを変更し、ファイルのデプロイメントセクションにモジュールの依存関係を追加します。
<module name="org.dom4j" export="true"/>
jboss-deployment-structure.xml ファイルは次のようになるはずです。
99
JBoss Enterprise Application Platform 6 移行ガイド
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="javax.faces.api" slot="1.2" export="true"/>
<module name="org.apache.commons.logging" export="true"/>
<module name="org.dom4j" export="true"/>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
</exclusions>
<dependencies>
<module name="javax.faces.api" slot="1.2"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
standalone/deploym ents/jboss-seam -booking.ear.failed ファイルを削除して同じ
ディレクトリに空の jboss-seam -booking.ear.dodeploy ファイルを作成し、アプリケー
ションを再デプロイします。
4. 問題 - java.lang.ClassNotFoundException: org.hibernate.validator.InvalidValue
アプリケーションをデプロイするとログに次のエラーが記録されます。
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[defaulthost].[/seam-booking]] (MSC service thread 1-6) Exception sending context
initialized event to listener instance of class
org.jboss.seam.servlet.SeamListener: java.lang.RuntimeException: Could not
create Component: org.jboss.seam.international.statusMessages
(... additional logs removed ...)
Caused by: java.lang.ClassNotFoundException:
org.hibernate.validator.InvalidValue from [Module "deployment.jboss-seambooking.ear.jboss-seam.jar:main" from Service Module Loader]
ログの解説
ClassNotFoundException は見つからない依存関係があることを示しています。この例では、
クラス org.hibernate.validator.InvalidValue が見つかりません。
解決方法
モジュール「org.hibernate.validator」は存在しますが JAR に
org.hibernate.validator.InvalidValue クラスが含まれていないため、モジュールの依
存関係を追加してもこの問題は解決しません。この例では、クラスが含まれる JAR は JBoss
Enterprise Application Platform 5.1 デプロイメントの一部になります。 EAP5_HOME/jboss-eap5.1/seam /lib/ ディレクトリに見つからないクラスが含まれている JAR を探します。これを実
行するには、コンソールを開いて以下を入力します。
$ cd EAP5_HOME/jboss-eap-5.1/seam/lib
$ grep 'org.hibernate.validator.InvalidValue' `find . -name '*.jar'
結果は次のようになります。
$ Binary file ./hibernate-validator.jar matches
$ Binary file ./test/hibernate-all.jar matches
100
第4章 ツールとヒント
この場合、hibernate-validator.jar を jboss-seam -booking.ear/lib/ ディレクトリ
にコピーします。
$ cp EAP5_HOME/jboss-eap-5.1/seam/lib/hibernate-validator.jar jboss-seambooking.ear/lib
standalone/deploym ents/jboss-seam -booking.ear.failed ファイルを削除して同じ
ディレクトリに空の jboss-seam -booking.ear.dodeploy ファイルを作成し、アプリケー
ションを再デプロイします。
5. 問題 - java.lang.InstantiationException: org.jboss.seam.jsf.SeamApplicationFactory
アプリケーションをデプロイすると、次のエラーがログに記録されます。
INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread
1-7) Unsanitized stacktrace from failed start...:
com.sun.faces.config.ConfigurationException: Factory
'javax.faces.application.ApplicationFactory' was not configured properly.
at
com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(Fac
toryConfigProcessor.java:296) [jsf-impl-2.0.4-b09-jbossorg-4.jar:2.0.4-b09jbossorg-4]
(... additional logs removed ...)
Caused by: javax.faces.FacesException:
org.jboss.seam.jsf.SeamApplicationFactory
at
javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:606)
[jsf-api-1.2_13.jar:1.2_13-b01-FCS]
(... additional logs removed ...)
at
com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(Fac
toryConfigProcessor.java:294) [jsf-impl-2.0.4-b09-jbossorg-4.jar:2.0.4-b09jbossorg-4]
... 11 more
Caused by: java.lang.InstantiationException:
org.jboss.seam.jsf.SeamApplicationFactory
at java.lang.Class.newInstance0(Class.java:340) [:1.6.0_25]
at java.lang.Class.newInstance(Class.java:308) [:1.6.0_25]
at
javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:604)
[jsf-api-1.2_13.jar:1.2_13-b01-FCS]
... 16 more
ログの解説
com .sun.faces.config.ConfigurationException と
java.lang.InstantiationException は依存関係の問題があることを示しています。この例
では、原因は明らかではありません。
解決方法
com .sun.faces クラスが含まれるモジュールを探す必要があります。com .sun.faces モ
ジュールは存在しませんが、com .sun.jsf-im pl モジュールが 2 つあります。1.2 ディレクトリ
の jsf-im pl-1.2_13.jar を簡単にチェックすると、com .sun.faces クラスが含まれている
ことが分かります。javax.faces.FacesExceptionClassNotFoundException の例と同
様、メインディレクトリの JSF 2.0 バージョンではなく JFS 1.2 バージョンを使用したいため、使
用したい方を指定し、使用したくない方を除外します。jboss-deploym ent-structure.xm l
を変更し、ファイルのデプロイメントセクションにモジュールの依存関係を追加する必要がありま
101
JBoss Enterprise Application Platform 6 移行ガイド
す。また、WAR のサブデプロイメントに追加し、JSF 2.0 モジュールを除外する必要もあります。
ファイルは次のようになるはずです。
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="javax.faces.api" slot="1.2" export="true"/>
<module name="com.sun.jsf-impl" slot="1.2" export="true"/>
<module name="org.apache.commons.logging" export="true"/>
<module name="org.dom4j" export="true"/>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
<module name="com.sun.jsf-impl" slot="main"/>
</exclusions>
<dependencies>
<module name="javax.faces.api" slot="1.2"/>
<module name="com.sun.jsf-impl" slot="1.2"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
standalone/deploym ents/jboss-seam -booking.ear.failed ファイルを削除して同じ
ディレクトリに空の jboss-seam -booking.ear.dodeploy ファイルを作成し、アプリケー
ションを再デプロイします。
6. 問題 - java.lang.ClassNotFoundException: org.apache.commons.collections.ArrayStack
アプリケーションをデプロイすると、次のエラーがログに記録されます。
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[defaulthost].[/seam-booking]] (MSC service thread 1-1) Exception sending context
initialized event to listener instance of class
com.sun.faces.config.ConfigureListener: java.lang.RuntimeException:
com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED!
org.apache.commons.collections.ArrayStack from [Module "deployment.jbossseam-booking.ear:main" from Service Module Loader]
(... additional logs removed ...)
Caused by: java.lang.ClassNotFoundException:
org.apache.commons.collections.ArrayStack from [Module "deployment.jbossseam-booking.ear:main" from Service Module Loader]
ログの解説
ClassNotFoundException は見つからない依存関係があることを示しています。この例では、
クラス org.apache.com m ons.collections.ArrayStack が見つかりません。
解決方法
org/apache/com m ons/collections のパスを探し、EAP6_HOME/m odules/ ディレクトリ内
でモジュール名を見つけます。モジュール名は 「org.apache.commons.collections」です。jbossdeployment-structure.xml を変更し、ファイルのデプロイメントセクションにモジュールの依存関
係を追加します。
<module name="org.apache.commons.collections" export="true"/>
jboss-deployment-structure.xml ファイルは次のようになるはずです。
102
第4章 ツールとヒント
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="javax.faces.api" slot="1.2" export="true"/>
<module name="com.sun.jsf-impl" slot="1.2" export="true"/>
<module name="org.apache.commons.logging" export="true"/>
<module name="org.dom4j" export="true"/>
<module name="org.apache.commons.collections" export="true"/>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
<module name="com.sun.jsf-impl" slot="main"/>
</exclusions>
<dependencies>
<module name="javax.faces.api" slot="1.2"/>
<module name="com.sun.jsf-impl" slot="1.2"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
standalone/deploym ents/jboss-seam -booking.ear.failed ファイルを削除して同じ
ディレクトリに空の jboss-seam -booking.ear.dodeploy ファイルを作成し、アプリケー
ションを再デプロイします。
7. 問題 - Services with missing/unavailable dependencies
アプリケーションをデプロイすると、次のエラーがログに記録されます。
ERROR [org.jboss.as.deployment] (DeploymentScanner-threads - 2) {"Composite
operation failed and was rolled back. Steps that failed:" => {"Operation
step-2" => {"Services with missing/unavailable dependencies" =>
["jboss.deployment.subunit.\"jboss-seam-booking.ear\".\"jboss-seambooking.jar\".component.AuthenticatorAction.START missing [
jboss.naming.context.java.comp.jboss-seam-booking.\"jboss-seambooking.jar\".AuthenticatorAction.\"env/org.jboss.seam.example.booking.Authent
icatorAction/em\" ]","jboss.deployment.subunit.\"jboss-seambooking.ear\".\"jboss-seam-booking.jar\".component.HotelSearchingAction.START
missing [ jboss.naming.context.java.comp.jboss-seam-booking.\"jboss-seambooking.jar\".HotelSearchingAction.\"env/org.jboss.seam.example.booking.HotelS
earchingAction/em\" ]","
(... additional logs removed ...)
"jboss.deployment.subunit.\"jboss-seam-booking.ear\".\"jboss-seambooking.jar\".component.BookingListAction.START missing [
jboss.naming.context.java.comp.jboss-seam-booking.\"jboss-seambooking.jar\".BookingListAction.\"env/org.jboss.seam.example.booking.BookingLi
stAction/em\" ]","jboss.persistenceunit.\"jboss-seam-booking.ear/jboss-seambooking.jar#bookingDatabase\" missing [
jboss.naming.context.java.bookingDatasource ]"]}}}
ログの解説
「Services with missing/unavailable dependencies」(見つからない/使用できない依存関係を持つ
サービス) のエラーが発生したら、「missing」の後の括弧内にある文字を確認してください。この
場合では次のようになります。
103
JBoss Enterprise Application Platform 6 移行ガイド
missing [ jboss.naming.context.java.comp.jboss-seam-booking.\"jboss-seambooking.jar\".AuthenticatorAction.\"env/org.jboss.seam.example.booking.Authent
icatorAction/em\" ]
「/em」はエンティティーマネージャーとデータソースの問題であることを示しています。
解決方法
JBoss Enterprise Application Platform 6 ではデータソースの設定が変更になったた
め、standalone/configuration/standalone.xm l ファイルに定義する必要があります。
JBoss Enterprise Application Platform 6 には、既に standalone.xm l ファイルに定義されている
データベースの例が含まれているため、 このアプリケーションでデータベースの例を使用するよう
persistence.xm l ファイルを変更します。standalone.xm l ファイルを見るとデータベース
の例の jndi-nam e は java:jboss/datasources/Exam pleDS であることが分かりま
す。jboss-seam -booking.jar/MET A-INF/persistence.xm l ファイルを変更して既存の
jta-data-source 要素をコメントアウトし、以下のように置き換えます。
<!-- <jta-data-source>java:/bookingDatasource</jta-data-source> -->
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
standalone/deploym ents/jboss-seam -booking.ear.failed ファイルを削除して同じ
ディレクトリに空の jboss-seam -booking.ear.dodeploy ファイルを作成し、アプリケー
ションを再デプロイします。
8. 問題 - java.lang.ClassNotFoundException: org.hibernate.cache.HashtableCacheProvider
アプリケーションをデプロイすると、ログに次のエラーが記録されます。
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed
to start service jboss.persistenceunit."jboss-seam-booking.ear/jboss-seambooking.jar#bookingDatabase": org.jboss.msc.service.StartException in service
jboss.persistenceunit."jboss-seam-booking.ear/jboss-seambooking.jar#bookingDatabase": Failed to start service
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerIm
pl.java:1786)
(... log messages removed ...)
Caused by: java.lang.ClassNotFoundException:
org.hibernate.cache.HashtableCacheProvider from [Module "org.hibernate:main"
from local module loader @12a3793 (roots:
/home/sgilda/tools/jboss7/modules)]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
(... log messages removed ...)
ログの解説
ClassNotFoundException は見つからない依存関係があることを示しています。この例では、
クラス org.hibernate.cache.HashtableCacheProvider が見つかりません。
解決方法
org.hibernate.cache のモジュールはありません。この例では、クラスが含まれる JAR は JBoss
Enterprise Application Platform 5.1 デプロイメントの一部になります。EAP5_HOME/jboss-eap5.1/seam /lib/ ディレクトリに見つからないクラスが含まれている JAR を探します。これを実
行するには、コンソールを開いて以下を入力します。
104
第4章 ツールとヒント
$ cd EAP5_HOME/jboss-eap-5.1/seam/lib
$ grep 'org.hibernate.validator.InvalidValue' `find . -name '*.jar'`
結果は次のようになります。
Binary file ./hibernate-core.jar matches
Binary file ./test/hibernate-all.jar matches
この場合、hibernate-core.jar を jboss-seam -booking.ear/lib/ ディレクトリにコ
ピーします。
cp EAP5_HOME/jboss-eap-5.1/seam/lib/hibernate-core.jar jboss-seambooking.ear/lib
standalone/deploym ents/jboss-seam -booking.ear.failed ファイルを削除して同じ
ディレクトリに空の jboss-seam -booking.ear.dodeploy ファイルを作成し、アプリケー
ションを再デプロイします。
9. 問題 - java.lang.ClassCastException: org.hibernate.cache.HashtableCacheProvider
アプリケーションをデプロイすると、次のエラーがログに記録されます。
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed
to start service jboss.persistenceunit."jboss-seam-booking.ear/jboss-seambooking.jar#bookingDatabase": org.jboss.msc.service.StartException in service
jboss.persistenceunit."jboss-seam-booking.ear/jboss-seambooking.jar#bookingDatabase": Failed to start service
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerIm
pl.java:1786)
(... log messages removed ...)
Caused by: java.lang.ClassCastException:
org.hibernate.cache.HashtableCacheProvider cannot be cast to
org.hibernate.cache.spi.CacheProvider
at
org.hibernate.cache.internal.bridge.RegionFactoryCacheProviderBridge.init(Reg
ionFactoryCacheProviderBridge.java:65)
... 20 more
ログの解説
ClassCastException は複数の問題が原因で発生する可能性があります。ログでこの例外を見て
みると、クラス org.hibernate.cache.HashtableCacheProvider が
org.hibernate.cache.spi.CacheProvider を拡張し、拡張するクラス以外のクラスロー
ダーによってロードされたように見受けられま
す。org.hibernate.cache.HashtableCacheProvider クラスは hibernate-core.jar
にあり、アプリケーションクラスローダーによってロードされます。このクラスを拡張するクラス
である org.hibernate.cache.spi.CacheProvider は
org/hibernate/m ain/hibernate-core-4 .0.0.Beta1.jar にあり、モジュールによって
暗黙的にロードされます。これはあからさまではありませんが Hibernate 4 の変更が原因で、この
問題は HashtableCacheProvider クラスを他のパッケージへ移動したことによる後方互換性の
問題が原因となっています。このクラスは org.hibernate.cache パッケージから
org.hibernate.cache.internal パッケージに移動されました。persistence.xm l ファイ
ルより hibernate.cache.provider_class プロパティーを削除しないと、Seam アプリケー
ションが以前の Hibernate ライブラリをバンドルするよう強制されるた
め、ClassCastExceptions が発生します。JBoss Enterprise Application Platform 6 では
105
JBoss Enterprise Application Platform 6 移行ガイド
HashtableCacheProvider を使用せずに Infinispan を使用するようにしてください。
解決方法
JBoss Enterprise Application Platform 6 では、jboss-seam -booking.jar/MET AINF/persistence.xm l ファイルの hibernate.cache.provider_class property を次
のようにコメントアウトします。
<!-- <property name="hibernate.cache.provider_class"
value="org.hibernate.cache.HashtableCacheProvider"/> -->
standalone/deploym ents/jboss-seam -booking.ear.failed ファイルを削除して同じ
ディレクトリに空の jboss-seam -booking.ear.dodeploy ファイルを作成し、アプリケー
ションを再デプロイします。
10. この時点で、アプリケーションはエラーを引き起こさずにデプロイされますが、ブラウザーで URL
http://localhost:8080/seam-booking/ へアクセスし、アカウントへログインしようとするとランタイ
ムエラー 「T he page isn't redirecting properly」(ページが正しくリダイレクトしません) が発生し
ます。次の手順でランタイムエラーのデバッグおよび解決方法について学びましょう。
ランタイムの問題をデバッグおよび解決する方法については 「Seam 2.2 Booking アーカイブのラ
ンタイムエラーや例外のデバッグおよび解決」 を参照してください。前のトピックに戻るには
「Seam 2.2 Booking アーカイブの JBoss Enterprise Application 6 への移行: 手順説明」 をクリッ
クしてください。
バグを報告する
4.3.7. Seam 2.2 Booking アーカイブのランタイムエラーや例外のデバッグおよび
解決
前述の手順、「Seam 2.2 Booking アーカイブのデプロイメントエラーや例外のデバッグおよび解決」 で
はデプロイメントエラーのデバッグ方法について説明しました。この手順では発生したランタイムエラー
をデバッグし解決します。
重要
この例は、最初にアプリケーションを JBoss Enterprise Application Platform 6 上で実行できるよ
うにすることを目的としています。この設定はサポート対象ではなく、Hibernate 4 を使用するよ
う次の手順でアプリケーションをアップグレードする必要があります。
手順 4 .17 ランタイムエラーや例外のデバッグおよび解決
この時点では、アプリケーションをデプロイしてもログにエラーは記録されていませんが、アプリケー
ション の URL にアクセスするとエラーがログに記録されます。
1. 問題 - javax.naming.NameNotFoundException: Name 'jboss-seam-booking' not found in context ''
ブラウザーで URL http://localhost:8080/seam-booking/ にアクセスすると 「T he page isn't
redirecting properly」と表示され、ログに次のエラーが記録されます。
106
第4章 ツールとヒント
SEVERE [org.jboss.seam.jsf.SeamPhaseListener] (http--127.0.0.1-8080-1)
swallowing exception: java.lang.IllegalStateException: Could not start
transaction
at org.jboss.seam.jsf.SeamPhaseListener.begin(SeamPhaseListener.java:598)
[jboss-seam.jar:]
(... log messages removed ...)
Caused by: org.jboss.seam.InstantiationException: Could not instantiate Seam
component: org.jboss.seam.transaction.synchronizations
at org.jboss.seam.Component.newInstance(Component.java:2170) [jbossseam.jar:]
(... log messages removed ...)
Caused by: javax.naming.NameNotFoundException: Name 'jboss-seam-booking' not
found in context ''
at
org.jboss.as.naming.util.NamingUtils.nameNotFoundException(NamingUtils.java:109
)
(... log messages removed ...)
ログの解説
Nam eNotFoundException は JNDI の命名の問題であることを示しています。JBoss Enterprise
Application Platform 6 では JNDI の命名ルールが変更になったため、新しいルールに従ってルック
アップ名を変更する必要があります。
解決方法
この問題をデバッグするには、サーバーログを追跡し、問題発生前に使用された JNDI バインディ
ングを確認します。サーバーログには以下が記録されているはずです。
15:01:16,138 INFO
[org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcesso
r] (MSC service thread 1-1) JNDI bindings for session bean named
RegisterAction in deployment unit subdeployment "jboss-seam-booking.jar" of
deployment "jboss-seam-booking.ear" are as follows:
java:global/jboss-seam-booking/jboss-seambooking.jar/RegisterAction!org.jboss.seam.example.booking.Register
java:app/jboss-seambooking.jar/RegisterAction!org.jboss.seam.example.booking.Register
java:module/RegisterAction!org.jboss.seam.example.booking.Register
java:global/jboss-seam-booking/jboss-seam-booking.jar/RegisterAction
java:app/jboss-seam-booking.jar/RegisterAction
java:module/RegisterAction
[JNDI bindings continue ...]
セッション Bean ごとに 1つとなる合計 8 つの INFO JNDI バインディング (RegisterAction、
BookingListAction, HotelBookingAction、 AuthenticatorAction、 ChangePasswordAction、
HotelSearchingAction、 EjbSynchronizations、 T imerServiceDispatcher) がログに記録されていま
す。新しい JNDI バインディングを使用するよう、WAR の lib/com ponents.xm l ファイルを変
更する必要があります。ログの EJB JNDI バインディングはすべて「java:app/jboss-seambooking.jar」で始まることに注意してください。 次のように core:init 要素を置き換えます。
<!-<core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local"
debug="true" distributable="false"/> -->
<core:init jndi-pattern="java:app/jboss-seam-booking.jar/#{ejbName}"
debug="true" distributable="false"/>
次に、EjbSynchronizations と T imerServiceDispatcher JNDI バインディングを追加する必要があり
107
JBoss Enterprise Application Platform 6 移行ガイド
ます。ファイルに次のコンポーネント要素を追加します。
<component class="org.jboss.seam.transaction.EjbSynchronizations" jndiname="java:app/jboss-seam/EjbSynchronizations"/>
<component class="org.jboss.seam.async.TimerServiceDispatcher" jndiname="java:app/jboss-seam/TimerServiceDispatcher"/>
components.xml ファイルは次のようになるはずです。
<components xmlns="http://jboss.com/products/seam/components"
xmlns:core="http://jboss.com/products/seam/core"
xmlns:security="http://jboss.com/products/seam/security"
xmlns:transaction="http://jboss.com/products/seam/transaction"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://jboss.com/products/seam/core http://jboss.com/products/seam/core2.2.xsd
http://jboss.com/products/seam/transaction
http://jboss.com/products/seam/transaction-2.2.xsd
http://jboss.com/products/seam/security
http://jboss.com/products/seam/security-2.2.xsd
http://jboss.com/products/seam/components
http://jboss.com/products/seam/components-2.2.xsd">
<!-- <core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local"
debug="true" distributable="false"/> -->
<core:init jndi-pattern="java:app/jboss-seam-booking.jar/#{ejbName}"
debug="true" distributable="false"/>
<core:manager conversation-timeout="120000"
concurrent-request-timeout="500"
conversation-id-parameter="cid"/>
<transaction:ejb-transaction/>
<security:identity authenticate-method="#{authenticator.authenticate}"/>
<component class="org.jboss.seam.transaction.EjbSynchronizations"
jndi-name="java:app/jboss-seam/EjbSynchronizations"/>
<component class="org.jboss.seam.async.TimerServiceDispatcher"
jndi-name="java:app/jboss-seam/TimerServiceDispatcher"/>
</components>
standalone/deploym ents/jboss-seam -booking.ear.failed ファイルを削除して同じ
ディレクトリに空の jboss-seam -booking.ear.dodeploy ファイルを作成し、アプリケー
ションを再デプロイします。
2. ランタイムエラーの解決
この時点で、アプリケーションはエラーを引き起こさずにデプロイされ実行されます。ブラウザー
で URL http://localhost:8080/seam-booking/ にアクセスすると正常にログインすることができま
す。
前のトピックに戻るには 「Seam 2.2 Booking アーカイブの JBoss Enterprise Application 6 への移
行: 手順説明」 をクリックしてください。
バグを報告する
4.3.8. Seam 2.2 Booking アプリケーションの移行時に加えられる変更概要の確認
事前に依存関係を判断し、暗黙的な依存関係を一度に追加した方が効率的ですが、この例では問題がどの
ようにログに表示されるか説明し、デバッグや解決方法に関する情報を提供します。JBoss Enterprise
Application Platform 6 へ移行する時にアプリケーションに加えられる変更の概要は次の通りです。
108
第4章 ツールとヒント
重要
この例は、最初にアプリケーションを JBoss Enterprise Application Platform 6 上で実行できるよ
うにすることを目的としています。この設定はサポート対象ではなく、Hibernate 4 を使用するよ
う次の手順でアプリケーションをアップグレードする必要があります。
1. EAR の MET A-INF/ ディレクトリに jboss-deploym ent-structure.xm l ファイルを作成しま
した。ClassNotFoundExceptions を解決するため、<dependencies> と <exclusions>
を追加しました。このファイルには次のデータが含まれています。
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="javax.faces.api" slot="1.2" export="true"/>
<module name="com.sun.jsf-impl" slot="1.2" export="true"/>
<module name="org.apache.commons.logging" export="true"/>
<module name="org.dom4j" export="true"/>
<module name="org.apache.commons.collections" export="true"/>
</dependencies>
</deployment>
<sub-deployment name="jboss-seam-booking.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
<module name="com.sun.jsf-impl" slot="main"/>
</exclusions>
<dependencies>
<module name="javax.faces.api" slot="1.2"/>
<module name="com.sun.jsf-impl" slot="1.2"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
2. ClassNotFoundExceptions を解決するため、次の JAR を EAP5_HOME/jboss-eap5.1/seam /lib/ ディレクトリから jboss-seam -booking.ear/lib/ ディレクトリへコピー
しました。
hibernate-core.jar
hibernate-validator.jar
3. 次のように jboss-seam -booking.jar/MET A-INF/persistence.xm l ファイルを変更しま
した。
a. JBoss Enterprise Application Platform 6 に同梱されるデータベースの例を使用するよう
jta-data-source 要素を変更しました。
<!-- <jta-data-source>java:/bookingDatasource</jta-data-source> -->
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
b. hibernate.cache.provider_class プロパティーをコメントアウトしました。
<!-- <property name="hibernate.cache.provider_class"
value="org.hibernate.cache.HashtableCacheProvider"/> -->
4. 新しい JNDI バインディングを使用するよう、WAR の lib/com ponents.xm l ファイルを変更し
ました。
109
JBoss Enterprise Application Platform 6 移行ガイド
a. core:init 既存要素を次のように置き換えました。
<!-- <core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local"
debug="true" distributable="false"/> -->
<core:init jndi-pattern="java:app/jboss-seam-booking.jar/#{ejbName}"
debug="true" distributable="false"/>
b. "EjbSynchronizations" および "T imerServiceDispatcher" JNDI バインディングのコンポーネ
ント要素を追加しました。
<component class="org.jboss.seam.transaction.EjbSynchronizations" jndiname="java:app/jboss-seam/EjbSynchronizations"/>
<component class="org.jboss.seam.async.TimerServiceDispatcher" jndiname="java:app/jboss-seam/TimerServiceDispatcher"/>
バグを報告する
110
第5章 Compiler Output
第 5章 Compiler Output
T opic ID 4 613, Revision 83970
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: JAX-RS, REST Easy T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low
Priority T opic Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle: Written
T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 887, Revision 72536
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage
IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Application Development Concerns:
Application or Service Deployment T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5616, Revision 84 302
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta T opic
T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority Concerns: Getting Started T opic
Lifecycle: IA Proposed Concerns: Application Development Concerns: Application or Service
Deployment T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 611, Revision 83968
INFO: Assigned Writer: dmison Common Names: Application Server, Classloading, Migration from
Previous Versions Content Warnings: Spelling Error Release: EAP 6 Alpha, EAP 6 Beta
T echnologies: JBoss Modules T opic T ypes: Concept IA Priority: IA Low Priority T opic Lifecycle: IA
Proposed Concerns: Application Development Concerns: Application or Service Deployment T opic
Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 888, Revision 704 85
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage
IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Application Development T opic
Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 618, Revision 83973
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
111
JBoss Enterprise Application Platform 6 移行ガイド
T echnologies: JBoss Modules T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority
T opic Lifecycle: IA Proposed Concerns: Application Development Concerns: T roubleshooting T opic
Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 7669, Revision 110276
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Concerns: Migration Release: EAP 6.0 T opic T ypes: T ask T opic
Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Application
Development T opic Lifecycle: Assigned T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 524 7, Revision 84 154
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: JBoss Modules T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority
Concerns: Getting Started T opic Lifecycle: IA Proposed Concerns: Administration Concerns:
Application Development Concerns: Application or Service Deployment Concerns: T roubleshooting
T opic Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 7668, Revision 157979
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5
Concerns: Migration Content Warnings: Grammar Errors, Spelling Error Release: EAP 6.0.0 GA T opic
T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed
Concerns: Application Development T opic Lifecycle: Assigned T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 7671, Revision 150222
INFO: Assigned Writer: sgilda Common Names: Java Database Connectivity (JDBC), Java
Persistence API (JPA), Migration from Enterprise Application Platform 5 Concerns: Migration Release:
EAP 6.0 T echnologies: Hibernate, Hibernate Validator T opic T ypes: T ask T opic Lifecycle: IA T riage
IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Application Development T opic
Lifecycle: Assigned T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 7670, Revision 133996
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Concerns: Migration Content Warnings: Grammar
Errors, Spelling Error Release: EAP 6.0 T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA
Low Priority T opic Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle:
Assigned T opic Lifecycle: Written
INFO: T opic URL
112
第5章 Compiler Output
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 7667, Revision 110273
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5
Concerns: Migration Release: EAP 6.0 T opic T ypes: Overview T opic Lifecycle: IA T riage IA Priority: IA
Low Priority T opic Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle:
Assigned T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 1014 4 , Revision 162981
INFO: Assigned Writer: sgilda Common Names: Application Server, EJB, Migration from Enterprise
Application Platform 5, Migration from Previous Versions Concerns: Migration Release: EAP 6.0.1
T echnologies: JBoss EJB3 T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority
T opic Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle: Assigned T opic
Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 524 1, Revision 66321
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions, Security Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle:
IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns:
Application Development Concerns: Application or Service Deployment T opic Lifecycle: Assigned
T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 7880, Revision 75352
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5
Concerns: Migration Release: EAP 6 Beta T echnologies: Hibernate T opic T ypes: T ask T opic
Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Application
Development Concerns: T roubleshooting T opic Lifecycle: Assigned T opic Lifecycle: Written T opic
Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5615, Revision 76982
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage
IA Priority: IA Low Priority Concerns: Getting Started T opic Lifecycle: IA Proposed Concerns:
Configuration Concerns: Application Development Concerns: Application or Service Deployment
T opic Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 7673, Revision 162834
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
113
JBoss Enterprise Application Platform 6 移行ガイド
Migration from Previous Versions Concerns: Migration Release: EAP 6.0.0 GA T opic T ypes: T ask
T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns:
Application Development T opic Lifecycle: Assigned T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 9374 , Revision 153089
INFO: Assigned Writer: sgilda Common Names: Java Messaging Service (JMS), Migration from
Enterprise Application Platform 5, Migration from Previous Versions Concerns: Migration Content
Warnings: Spelling Error Release: EAP 6.0.0 GA, EAP 6.0.1 T echnologies: HornetQ T opic T ypes:
T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns:
Configuration Concerns: Administration Concerns: Application Development T opic Lifecycle: Assigned
T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 7672, Revision 162834
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Concerns: Migration Release: EAP 6.0.0 GA T opic T ypes: T ask
T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns:
Application Development T opic Lifecycle: Assigned T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5235, Revision 84 14 9
INFO: Assigned Writer: sgilda Common Names: Java Persistence API (JPA), Migration from
Enterprise Application Platform 5, Migration from Previous Versions Content Warnings: Spelling Error
Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic
Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle: Written T opic Lifecycle:
QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5718, Revision 84 354
INFO: Assigned Writer: sgilda Common Names: Java Database Connectivity (JDBC), Migration from
Enterprise Application Platform 5, Migration from Previous Versions Content Warnings: Grammar
Errors, Spelling Error Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA
Low Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Datasources Concerns:
Application Development T opic Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 8831, Revision 77374
INFO: Assigned Writer: sgilda Common Names: Java Persistence API (JPA), Migration from
Enterprise Application Platform 5, Migration from Previous Versions Concerns: Migration Release:
EAP 6.0 T echnologies: Hibernate T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low
Priority T opic Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle: Assigned
T opic Lifecycle: Written
114
第5章 Compiler Output
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5719, Revision 84 355
INFO: Assigned Writer: dmison Common Names: EJB Content Warnings: Spelling Error Release: EAP
6 Alpha T echnologies: JBoss EJB3 T opic T ypes: T ask IA Priority: IA Low Priority T opic Lifecycle: IA
Proposed Concerns: Application Development T opic Lifecycle: Written T opic Lifecycle: QE Fail
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 370, Revision 83887
INFO: Assigned Writer: dryan, sgilda Common Names: Java Messaging Service (JMS), Migration from
Enterprise Application Platform 5, Migration from Previous Versions Content Warnings: Spelling Error
Release: EAP 6 Alpha, EAP 6 Beta T echnologies: HornetQ T opic T ypes: T ask T opic Lifecycle: IA
Proposed Concerns: Administration T opic Lifecycle: Approved T opic Lifecycle: Assigned T opic
Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 11567, Revision 299164
INFO: Assigned Writer: sgilda Common Names: Application Server, Classloading, Migration from
Enterprise Application Platform 5, Migration from Previous Versions, Remoting Concerns: Migration
Release: EAP 6.0.1 T echnologies: JBoss Modules T opic T ypes: T ask T opic Lifecycle: IA T riage IA
Priority: IA Low Priority Concerns: Application Development T opic Lifecycle: Assigned T opic Lifecycle:
Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 64 2, Revision 4 0178
INFO: Assigned Writer: sgilda Common Names: Java Naming and Directory Interface (JNDI),
Migration, Migration from Enterprise Application Platform 5 Release: EAP 6 Beta T opic T ypes: T ask
T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns:
Application Development T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 914 , Revision 84 04 3
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: JBoss Modules T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority
T opic Lifecycle: IA Proposed Concerns: Application Development Concerns: T roubleshooting T opic
Lifecycle: Written T opic Lifecycle: Edited T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 64 1, Revision 4 0178
INFO: Assigned Writer: sgilda Common Names: Java Naming and Directory Interface (JNDI),
Migration, Migration from Enterprise Application Platform 5 Release: EAP 6 Beta T opic T ypes: T ask
115
JBoss Enterprise Application Platform 6 移行ガイド
T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns:
Application Development T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 64 0, Revision 83980
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Grammar Errors, Spelling Error Release: EAP 6
Beta T echnologies: Hibernate T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority
T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Datasources Concerns: Application
Development T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5327, Revision 66277
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage
IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Application
Development Concerns: Application or Service Deployment T opic Lifecycle: Assigned T opic Lifecycle:
Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 909, Revision 84 038
INFO: Assigned Writer: sgilda Common Names: Java Persistence API (JPA), Migration from
Enterprise Application Platform 5, Migration from Previous Versions Content Warnings: Spelling Error
Release: EAP 6 Beta T echnologies: Hibernate T opic T ypes: T ask T opic Lifecycle: IA T riage IA
Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Application
Development T opic Lifecycle: Written T opic Lifecycle: Edited T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 910, Revision 84 039
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: JAX-WS T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic
Lifecycle: IA Proposed Concerns: Application Development Concerns: Application or Service
Deployment Concerns: T roubleshooting T opic Lifecycle: Assigned T opic Lifecycle: Written T opic
Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 9154 , Revision 152955
INFO: Assigned Writer: sgilda Common Names: Application Server, High Availability (HA) Clustering,
Migration from Enterprise Application Platform 5, Migration from Previous Versions Content Warnings:
Spelling Error Release: EAP 6.0.1 T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low
Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Administration Concerns:
Application Development T opic Lifecycle: Assigned T opic Lifecycle: Written
116
第5章 Compiler Output
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5578, Revision 80036
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage
IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Application Development T opic
Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5576, Revision 84 290
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Grammar Errors, Spelling Error Release: EAP 6
Beta T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA
Proposed Concerns: Application Development T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5577, Revision 84 291
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta T opic
T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed
Concerns: Application Development T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 9039, Revision 152924
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Concerns: Migration Content Warnings: Spelling Error Release:
EAP 6.0.0 GA T echnologies: Hibernate T opic T ypes: Reference T opic Lifecycle: IA T riage IA Priority:
IA Low Priority Concerns: Application Development Concerns: T roubleshooting T opic Lifecycle:
Assigned T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 94 4 , Revision 84 057
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: Hibernate T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority
T opic Lifecycle: IA Proposed Concerns: Application Development Concerns: Application or Service
Deployment T opic Lifecycle: Written T opic Lifecycle: Edited T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 94 5, Revision 84 058
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions, Security Content Warnings: Spelling Error Release: EAP 6 Beta
117
JBoss Enterprise Application Platform 6 移行ガイド
T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed
Concerns: Application Development T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 601, Revision 299164
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6.0.0
Beta T echnologies: JBoss Modules T opic T ypes: T ask T opic Lifecycle: IA T riage Concerns: Getting
Started T opic Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle: Written
T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 600, Revision 299164
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6.0.0
Beta T opic T ypes: T ask T opic Lifecycle: IA T riage T opic Lifecycle: IA Proposed Concerns: Application
Development T opic Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: Edited T opic
Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 94 8, Revision 84 061
INFO: Assigned Writer: sgilda Common Names: High Availability (HA) Clustering, Migration from
Enterprise Application Platform 5, Migration from Previous Versions Content Warnings: Spelling Error
Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic
Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle: Written T opic Lifecycle:
Edited T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 602, Revision 74 630
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Release: EAP 6 Beta T echnologies: JBoss Modules T opic T ypes:
T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns:
Application Development Concerns: T roubleshooting T opic Lifecycle: Written T opic Lifecycle: QE
Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 94 9, Revision 78375
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage
IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Application Development Concerns:
Application or Service Deployment T opic Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle:
Edited T opic Lifecycle: QE Pass
INFO: T opic URL
118
第5章 Compiler Output
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 8323, Revision 85677
INFO: Assigned Writer: sgilda Common Names: Java Persistence API (JPA), Migration from
Enterprise Application Platform 5 Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: Hibernate T opic T ypes: Reference T opic Lifecycle: IA T riage IA Priority: IA Low Priority
T opic Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle: Assigned T opic
Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 952, Revision 84 064
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta T opic
T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed
Concerns: Application Development T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 953, Revision 4 0178
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration, Migration from Enterprise
Application Platform 5 Release: EAP 6 Beta T echnologies: JBoss Modules T opic T ypes: T ask T opic
Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Configuration
Concerns: Application Development Concerns: T roubleshooting T opic Lifecycle: Assigned T opic
Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 958, Revision 84 068
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Grammar Errors, Spelling Error Release: EAP 6
Beta T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA
Proposed Concerns: Application Development T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 593, Revision 83957
INFO: Assigned Writer: sgilda Common Names: Logging, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: JBoss Logging T opic T ypes: T ask T opic Lifecycle: IA T riage T opic Lifecycle: IA
Proposed Concerns: Application Development Concerns: Application or Service Deployment T opic
Lifecycle: Written T opic Lifecycle: Edited T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 592, Revision 83956
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Grammar Errors, Spelling Error Release: EAP 6
119
JBoss Enterprise Application Platform 6 移行ガイド
Beta T opic T ypes: T ask T opic Lifecycle: IA T riage T opic Lifecycle: IA Proposed Concerns: Web
Development Concerns: Application Development Concerns: Application or Service Deployment T opic
Lifecycle: Written T opic Lifecycle: Edited T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 595, Revision 83958
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed
Concerns: Configuration Concerns: Application Development T opic Lifecycle: Written T opic Lifecycle:
QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 957, Revision 76999
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage
IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Application Development T opic
Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 594 , Revision 66283
INFO: Assigned Writer: sgilda Common Names: Logging, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Release: EAP 6 Beta T opic T ypes: T ask T opic
Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Application
Development T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 588, Revision 299164
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Release: EAP 6.0.0 Beta T echnologies: JBoss Modules
T opic T ypes: T ask T opic Lifecycle: IA T riage T opic Lifecycle: IA Proposed Concerns: Application
Development Concerns: Application or Service Deployment T opic Lifecycle: Written T opic Lifecycle:
QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 589, Revision 66264
INFO: Assigned Writer: sgilda Common Names: Java Naming and Directory Interface (JNDI), Migration
from Enterprise Application Platform 5, Migration from Previous Versions Release: EAP 6 Beta T opic
T ypes: T ask T opic Lifecycle: IA T riage T opic Lifecycle: IA Proposed Concerns: Application
Development Concerns: Application or Service Deployment T opic Lifecycle: Written T opic Lifecycle:
QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
120
第5章 Compiler Output
T opic ID 54 19, Revision 84 237
INFO: Assigned Writer: sgilda Common Names: Java Naming and Directory Interface (JNDI), Migration
from Enterprise Application Platform 5, Migration from Previous Versions Content Warnings: Spelling
Error Release: EAP 6 Beta T opic T ypes: Reference T opic Lifecycle: IA T riage IA Priority: IA Low
Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Application Development
Concerns: Application or Service Deployment T opic Lifecycle: Assigned T opic Lifecycle: Written T opic
Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 590, Revision 83954
INFO: Assigned Writer: sgilda Common Names: Logging, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: JBoss Logging T opic T ypes: T ask T opic Lifecycle: IA T riage T opic Lifecycle: IA
Proposed Concerns: Application Development Concerns: Application or Service Deployment T opic
Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 591, Revision 83955
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: Hibernate T opic T ypes: T ask T opic Lifecycle: IA T riage T opic Lifecycle: IA Proposed
Concerns: Application Development Concerns: Application or Service Deployment T opic Lifecycle:
Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 587, Revision 83953
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta T opic
T ypes: T ask T opic Lifecycle: IA T riage T opic Lifecycle: IA Proposed Concerns: Configuration
Concerns: Datasources Concerns: Application Development Concerns: Application or Service
Deployment T opic Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: Edited T opic Lifecycle:
QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 54 09, Revision 84 232
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta T opic
T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed
Concerns: Configuration Concerns: Application Development Concerns: Application or Service
Deployment T opic Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: Edited T opic Lifecycle:
QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
121
JBoss Enterprise Application Platform 6 移行ガイド
T opic ID 54 08, Revision 4 0178
INFO: Assigned Writer: sgilda Common Names: Migration, Migration from Enterprise Application
Platform 5 Release: EAP 6 Beta T echnologies: Iron Jacamar T opic T ypes: T ask T opic Lifecycle: IA
T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns:
Datasources Concerns: Application Development Concerns: Application or Service Deployment T opic
Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 54 11, Revision 4 0178
INFO: Assigned Writer: sgilda Common Names: Migration, Migration from Enterprise Application
Platform 5 Release: EAP 6 Beta T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low
Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Application Development
Concerns: Application or Service Deployment T opic Lifecycle: Assigned T opic Lifecycle: Written T opic
Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 54 10, Revision 84 233
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta T opic
T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed
Concerns: Configuration Concerns: Application Development Concerns: Application or Service
Deployment T opic Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 54 12, Revision 75220
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Release: EAP 6 Beta T opic T ypes: T ask T opic
Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Configuration
Concerns: Application Development Concerns: Application or Service Deployment T opic Lifecycle:
Assigned T opic Lifecycle: Written T opic Lifecycle: Edited T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 94 1, Revision 30874 7
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6.0.0
Beta T echnologies: JBoss Modules T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low
Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Application Development
Concerns: Application or Service Deployment T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5250, Revision 84 156
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
122
第5章 Compiler Output
T echnologies: JBoss Modules, JBoss Web T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority:
IA Low Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Application
Development Concerns: Application or Service Deployment Concerns: T roubleshooting T opic
Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5131, Revision 84 103
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: Hibernate T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority
T opic Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle: Written T opic
Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5251, Revision 84 157
INFO: Assigned Writer: sgilda Common Names: Classloading, Migration from Enterprise Application
Platform 5, Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: JBoss Modules T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority
T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Application Development Concerns:
Application or Service Deployment Concerns: T roubleshooting T opic Lifecycle: Assigned T opic
Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5130, Revision 84 102
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: Hibernate T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority
T opic Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle: Written T opic
Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 5132, Revision 66318
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Release: EAP 6 Beta T echnologies: Hibernate T opic T ypes: T ask
T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns:
Application Development T opic Lifecycle: Written T opic Lifecycle: Edited T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 594 6, Revision 327997
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Concerns: Migration Content Warnings: Spelling Error Release:
EAP 6.0.0 Beta T opic T ypes: Overview T opic Lifecycle: IA T riage IA Priority: IA Low Priority Concerns:
Getting Started T opic Lifecycle: IA Proposed Concerns: Application Development T opic Lifecycle:
Written T opic Lifecycle: QE Pass
123
JBoss Enterprise Application Platform 6 移行ガイド
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 9104 , Revision 138514
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Concerns: Migration Release: EAP 6.0 T opic T ypes: T ask T opic
Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA Proposed Concerns: Application
Development T opic Lifecycle: Assigned T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 961, Revision 84 072
INFO: Assigned Writer: sgilda Common Names: Java Naming and Directory Interface (JNDI), Migration
from Enterprise Application Platform 5, Migration from Previous Versions Content Warnings: Spelling
Error Release: EAP 6 Beta T opic T ypes: Reference T opic Lifecycle: IA T riage IA Priority: IA Low
Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Application Development
T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 4 4 22, Revision 83894
INFO: Assigned Writer: sgilda Common Names: Migration from Enterprise Application Platform 5,
Migration from Previous Versions Content Warnings: Spelling Error Release: EAP 6 Beta
T echnologies: Hibernate Validator T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low
Priority Concerns: Getting Started Concerns: Configuration Concerns: Application Development T opic
Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 74 4 9, Revision 85304
INFO: Assigned Writer: twells Common Names: Java Persistence API (JPA) Content Warnings:
Spelling Error Release: EAP 6.0 T echnologies: Hibernate T opic T ypes: Reference IA Priority: IA Low
Priority T opic Lifecycle: IA Proposed Concerns: Configuration Concerns: Application Development
T opic Lifecycle: Approved T opic Lifecycle: Assigned T opic Lifecycle: Written T opic Lifecycle: QE Pass
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 114 89, Revision 299164
INFO: Assigned Writer: sgilda Common Names: Application Server, Classloading, Migration from
Enterprise Application Platform 5, Migration from Previous Versions Concerns: Migration, User
Administration Release: EAP 6.0.0 Beta, EAP 6.0.0 GA, EAP 6.0.1, EAP 6.1.0 T echnologies: JBoss
Modules T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA
Proposed Concerns: Configuration Concerns: Application Development Concerns: Application or
Service Deployment T opic Lifecycle: Assigned T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
T opic ID 114 90, Revision 299164
124
Compiler Glossary
INFO: Assigned Writer: sgilda Common Names: Application Server, Classloading, Migration from
Enterprise Application Platform 5, Migration from Previous Versions Concerns: Migration, User
Administration Release: EAP 6.0.0 Beta, EAP 6.0.0 GA, EAP 6.0.1, EAP 6.1.0 T echnologies: JBoss
Modules T opic T ypes: T ask T opic Lifecycle: IA T riage IA Priority: IA Low Priority T opic Lifecycle: IA
Proposed Concerns: Configuration Concerns: Web Development Concerns: Application Development
Concerns: Application or Service Deployment T opic Lifecycle: Written
INFO: T opic URL
WARNING: T his topic's translated content is older than the specfied topic's content.
Compiler Glossary
"T his topic contains an invalid element that can't be converted into a DOM Element."
T he topic XML contains invalid elements that cannot be successfully converted in DOM
elements.
T o fix this error please remove or correct any invalid XML elements or entities. Note: HT ML
Entities aren't classified as valid XML Entities.
"T his topic contains strings that are marked as "fuzzy"."
T he topic hasn't finished being translated by the T ranslator(s) yet, as such the topic will be
displayed using translated content that may not be 100% correct.
T o fix this warning, please contact the T ranslator(s) responsible for translating the topics in
this locale.
"T his topic doesn't have well-formed xml."
T he topic XML is not well-formed XML and maybe missing opening or closing element
statements.
T o fix this error please ensure that all XML elements having an opening and closing
statement and all XML reserved characters are represented as XML entities.
"T his topic has invalid Docbook XML."
T he topic XML is not valid against the Docbook 4.5 DT D.
T o fix this error please ensure that all XML elements are valid Docbook elements . Also
check to ensure all XML sub elements are valid for the root XML element.
"T his topic has invalid Injection Points."
T he topic XML contains Injection Points that cannot be resolved into links.
T o fix this error please ensure that all the topics referred to by Injection Points are included
in the build and/or have adequate relationships.
"T his topic has no XML data"
T he topic doesn't have any XML Content to display.
T o fix this warning, open the topic URL and add some content.
125
JBoss Enterprise Application Platform 6 移行ガイド
"T his topic hasn't been fully translated."
T he topic hasn't finished being translated by the T ranslator(s) yet, as such the topic will be
displayed using incomplete translated content.
T o fix this warning, please contact the T ranslator(s) responsible for translating the topics in
this locale.
"T his topic hasn't been pushed for translation."
T he topic hasn't been pushed for translation yet, as such the topic will be displayed using
the original topic's content.
T o fix this warning, please send a request to the User responsible for pushing T ranslations
to Z anata and request that the topic be pushed for translation.
"T his topic is an untranslated topic."
T he topic hasn't been translated yet by the T ranslator(s), as such the topic will be displayed
using the untranslated content.
T o fix this warning, please contact the T ranslator(s) responsible for translating the topics in
this locale.
"T his topic's translated content is older than the specfied topic's content."
A previous revision of this topic has been pushed to Z anata, and has been translated. T his
previous revision has been included in the book, but will display content that is older than
what was defined by the Content Specification.
T o fix this warning, please send a request to the User responsible for pushing T ranslations
to Z anata and request that the topic be pushed for translation. In most cases the existing
translations will be able to be reused when the topic is pushed to Z anata.
"T his untranslated topic uses content that is older than the specfied topic's content."
A previous revision of this topic has been pushed to Z anata, and has not yet been
translated.T his previous revision has been included in the book, but will display content that
is older than what was defined by the Content Specification.
T o fix this warning, please send a request to the User responsible for pushing T ranslations
to Z anata and request that the topic be pushed for translation.
126
改訂履歴
改訂履歴
改訂 0.1-1.4 00
2013-10-31
Landmann Rüdiger [FAMILY
Given]
Rebuild with publican 4.0.0
改訂 0.1-1
T ue Dec 18 2012
Wells T om [FAMILY Given]
JBoss Enterprise Application Platform 6.0.1 Migration Guide, Japanese translation.
改訂 0.0-2
Wed Nov 21 2012
Wells T om [FAMILY Given]
Second build - Japanese translation of the JBoss Enterprise Application Platform 6 Migration Guide.
改訂 0.0-1
Wed Nov 14 2012
Wells T om [FAMILY Given]
First build - Japanese translation of the JBoss Enterprise Application Platform 6 Migration Guide.
127
Fly UP