第4章 ツールおよびヒント
4.1. 移行に役立つリソース
4.1.1. 移行に役立つリソース
- ツール
- 設定変更の一部を自動化するツールがいくつかあります。詳細は、 「移行に役立つツールに慣れる」 を参照してください。
- デバッグのヒント
- アプリケーションの移行時に表示される可能性のある問題およびエラーの最も一般的な原因と解決策の一覧は、 「移行の問題のデバッグおよび解決」 を参照してください。
- 移行の例
- JBoss EAP 6 に移行したアプリケーションの例は、 「サンプルアプリケーションの移行の確認」 を参照してください。
4.1.2. 移行に役立つツールに慣れる
概要
移行作業に役立つツールがいくつかあります。以下は、これらのツールの一覧と、そのツールの動作を示しています。
- Tattletale
- モジュラークラスローディングの変更に伴い、アプリケーションの依存関係を見つけ、修正する必要があります。Tattletale は、依存するモジュール名を特定し、アプリケーションの設定 XML を生成するのに役立ちます。
- IronJacamar Migration Tool
- JBoss EAP 6 では、データソースとリソースアダプターは個別のファイルで設定されなくなりました。サーバー設定ファイルで定義され、新しいスキーマを使用するようになりました。IronJacamar Migration Tool は、以前の設定を JBoss EAP 6 によって想定される形式に変換できます。
4.1.3. Tattletale を使用したアプリケーション依存関係の検索
概要
JBoss EAP 6 のモジュラークラスローディングの変更により、アプリケーションの移行時に JBoss ログに ClassNotFoundException
または ClassCastException
トレースが表示されることがあります。これらのエラーを解決するには、例外によって指定されたクラスが含まれる JAR を見つける必要があります。
jboss-deployment-structure.xml
ファイルを組み込むため、依存するモジュール名を自動的に特定および生成することができます。
手順4.1 Tattletale をインストールして実行し、アプリケーションの依存関係を検索します。
4.1.4. Tattletale のダウンロードおよびインストール
手順4.2 Tattletale のダウンロードおよびインストール
- Tattletale バージョン 1.2.0.Beta2 以降を から http://sourceforge.net/projects/jboss/files/JBoss%20Tattletale ダウンロードします。
- 任意のディレクトリーに展開します。
- 以下を実行して
TATTLETALE_HOME/jboss-tattletale.properties
ファイルを変更します。ee6
およびas7
をprofiles
プロパティーに追加します。profiles=java5, java6, ee6, as7
scan
およびreports
プロパティーのコメントを解除します。
4.1.5. Tattletale レポートの作成およびレビュー
- 以下のコマンドを実行して Tattletale レポートを作成します。 java -jar
TATTLETALE_HOME/tattletale.jar
APPLICATION_ARCHIVE
OUTPUT_DIRECTORY
例: java -jar tattletale-1.2.0.Beta2/tattletale.jar ~/applications/jboss-seam-booking.ear ~/output-results/ - ブラウザーで
OUTPUT_DIRECTORY/index.html
ファイルを開き、「Reports」セクションの「JBoss AS 7」をクリックします。- 左側の列には、アプリケーションが使用するアーカイブが一覧表示されます。ARCHIVE_NAME リンクをクリックして、その場所、マニフェスト情報、含まれるクラスなどのアーカイブの詳細を表示します。
- 右側の列の
jboss-deployment-structure.xml
リンクは、左側の列で名前が付けられたアーカイブのモジュール依存関係を指定する方法を示しています。このリンクをクリックして、このアーカイブのデプロイメント依存関係モジュール情報を定義する方法を確認します。
4.1.6. IronJacamar Tool を使用したデータソースおよびリソースアダプター設定の移行
概要
以前のバージョンのアプリケーションサーバーでは、*-ds.xml
の接尾辞が付いたファイルを使用してデータソースとリソースアダプターが設定され、デプロイされていました。IronJacamar 1.1 ディストリビューションには、これらの設定ファイルを JBoss EAP 6 が期待する形式に変換するために使用できる移行ツールが含まれています。ツールは以前のリリースのソース設定ファイルを解析し、XML 設定を作成し、新しい形式で出力ファイルに書き込みます。この XML は、JBoss EAP 6 サーバー設定ファイルの正しいサブシステムの下にコピーおよび貼り付けることができます。このツールは、古い属性と要素を新しい形式に変換するベスト作業を行いますが、生成されたファイルに追加の変更が必要になる場合があります。
手順4.3 IronJacamar Migration ツールのインストールおよび実行
4.1.7. IronJacamar Migration Tool のダウンロードおよびインストール
- IronJacamar の最新のディストリビューションを からダウンロードします。 http://www.ironjacamar.org/download.html
- ダウンロードしたファイルを任意のディレクトリーに展開します。
- IronJacamar ディストリビューションでコンバータースクリプトを見つけます。
- Linux スクリプトは、
IRONJACAMAR_HOME/doc/as/converter.sh
にあります。 - Windows バッチファイルは
IRONJACAMAR_HOME/doc/as/converter.bat
にあります。
4.1.8. IronJacamar Migration Tool を使用したデータソース設定ファイルへの変換
手順4.4 データソース設定ファイルの変換
- コマンドラインを開き、
IRONJACAMAR_HOME/doc/as/
ディレクトリーに移動します。 - 以下のコマンドを入力してコンバータースクリプトを実行します。
- For Linux: ./converter.sh -ds
SOURCE_FILE
TARGET_FILE
- Microsoft Windows の場合: ./converter.bat -ds
SOURCE_FILE
TARGET_FILE
SOURCE_FILE
は以前のリリースのデータソース -ds.xml ファイルです。TARGET_FILE
には新しい設定が含まれます。たとえば、現在のディレクトリーにあるjboss-seam-booking-ds.xml
データソース設定ファイルを変換するには、以下を入力します。- For Linux: ./converter.sh -ds
jboss-seam-booking-ds.xml
new-datasource-config.xml
- Microsoft Windows の場合: ./converter.bat -ds
jboss-seam-booking-ds.xml
new-datasource-config.xml
データソース変換のパラメーターは-ds
であることに注意してください。 - ターゲットファイルから
<datasource>
要素をコピーし、それを<subsystem xmlns="urn:jboss:domain:datasources:1.1">
<datasources>
要素の下のサーバー設定ファイルに貼り付けます。重要サーバーの再起動後に変更が維持されるようにするには、サーバーを停止してからサーバー設定ファイルを編集する必要があります。- 管理対象ドメインで実行している場合は、XML を
EAP_HOME/domain/configuration/domain.xml
ファイルにコピーします。 - スタンドアロンサーバーとして実行している場合は、XML を
EAP_HOME/standalone/configuration/standalone.xml
ファイルにコピーします。
- 新しい設定ファイルで生成された XML を変更します。以下は、JBoss EAP 5.x に同梱される Seam 2.2 Booking サンプルの
jboss-seam-booking-ds.xml
データソース設定ファイルの例です。<?xml version="1.0" encoding="UTF-8"?> <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>
以下は、Converter スクリプトを実行して生成された設定ファイルです。生成されたファイルには<driver-class>
要素が含まれます。JBoss EAP 6 でドライバークラスを定義するのに推奨される方法は、<driver>
要素を使用することです。以下は、JBoss EAP 6 設定ファイルの結果として生成される XML で、<driver-class>
要素をコメントアウトし、対応する<driver>
要素を追加します。<subsystem xmlns="urn:jboss:domain:datasources:1.1"> <datasources> <datasource enabled="true" jndi-name="java:jboss/datasources/bookingDatasource" jta="true" pool-name="bookingDatasource" use-ccm="true" use-java-context="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> --> <!-- Specify the driver, which is defined later in the datasource --> <driver>h2<driver> <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>
4.1.9. IronJacamar Migration Tool を使用したリソースアダプター設定ファイルへの変換
- コマンドラインを開き、
IRONJACAMAR_HOME/docs/as/
ディレクトリーに移動します。 - 以下のコマンドを入力してコンバータースクリプトを実行します。
- For Linux: ./converter.sh -ra
SOURCE_FILE
TARGET_FILE
- Microsoft Windows の場合: ./converter.bat -ra
SOURCE_FILE
TARGET_FILE
SOURCE_FILE
は以前のリリースのリソースアダプター -ds.xml ファイルです。TARGET_FILE
には新しい設定が含まれます。たとえば、現在のディレクトリーにあるmttestadapter-ds.xml
リソースアダプター設定ファイルを変換するには、以下を入力します。- For Linux: ./converter.sh -ra
mttestadapter-ds.xml
new-adapter-config.xml
- Microsoft Windows の場合: ./converter.bat -ra
mttestadapter-ds.xml
new-adapter-config.xml
リソースアダプター変換のパラメーターは-ra
であることに注意してください。 - ターゲットファイルから
<resource-adapters>
要素全体をコピーし、サーバー設定ファイルに<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
要素の下に貼り付けます。重要サーバーの再起動後に変更が維持されるようにするには、サーバーを停止してからサーバー設定ファイルを編集する必要があります。- 管理対象ドメインで実行している場合は、XML を
EAP_HOME/domain/configuration/domain.xml
ファイルにコピーします。 - スタンドアロンサーバーとして実行している場合は、XML を
EAP_HOME/standalone/configuration/standalone.xml
ファイルにコピーします。
- 新しい設定ファイルで生成された XML を変更します。以下は、JBoss EAP 5.x TestSuite からの
mttestadapter-ds.xml
リソースアダプター設定ファイルの例です。<?xml version="1.0" encoding="UTF-8"?> <!-- ==================================================================== --> <!-- 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</connection-definition> <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</connection-definition> <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</connection-definition> <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> </connection-factories>
以下は、Converter スクリプトを実行して生成された設定ファイルです。生成された XML の class-name 属性値 "FIXME_MCF_CLASS_NAME" を、管理接続ファクトリーの正しいクラス名に置き換えます(この場合は "org.jboss.test.jca.adapter.TestManagedConnectionFactory")。以下は、JBoss EAP 6 設定ファイルの生成される XML で<class-name>
要素の値を変更します。<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1"> <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</config-property> <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</config-property> <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/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</config-property> <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>