wsenhancer コマンド

Java™ Persistence API (JPA) アプリケーション用のエンティティー・エンハンサー・ツールは、バイトコードをエンティティー・クラス・ファイルに挿入します。これにより、JPA プロバイダーはエンティティーの状態を管理できるようになります。このコマンド・ライン・ツールを使用すると、WebSphere® Application Server 用の Java™ Persistence API (JPA) 2.0 仕様プロバイダー WSJPA/OpenJPA におけるエンティティーを拡張できます。

すべてのエンティティー・クラスの状態を管理したい場合、アプリケーション・サーバーとともに JPA を使用するためには、すべてのエンティティー・クラスを機能拡張する必要があります。 コンテナー管理の環境では、自動的機能拡張はコンテナーによって提供されます。 しかし、Java SE 環境では、パーシスタンスを管理するコンテナーがなく、アプリケーション・ファイルをテストのためにパッケージ化する前に、このコマンドを頻繁に使用する場合があります。 JPA エンティティーを作成すると、Java アーカイブ (JAR) ファイルをアプリケーションのエンタープライズ・アーカイブ (EAR) ファイルにパッケージする前に、wsenhancer ツールを実行してバイトコードをエンティティーに注入することができます。

構文

このコマンドを実行する前に、クラスパスに persistence.xml ファイルのコピーを配置するか、または -p [path_to_persistence.xml] 引数内でこのファイルをプロパティー・ファイルとして指定する必要があります。このコマンドは、profile_root ディレクトリーの bin サブディレクトリーから実行します。

コマンド構文は次のようになります。

[AIX][HP-UX][Linux][Solaris][z/OS]
wsenhancer.sh [parameters][arguments]
[IBM i]
wsenhancer [parameters][arguments]
[Windows]
wsenhancer.bat [parameters][arguments]

パラメーター

エンハンサーは、構成フレームワークで定義されたコマンド行引数の標準セットを以下と一緒に受け入れます。
  • -directory/-d <output directory>: 出力ディレクトリーへのパスを指定します。

    ディレクトリーが拡張クラスのパッケージと一致しない場合、パッケージ構造はディレクトリーの下に作成されます。デフォルトでは、エンハンサーは元の .class ファイルを上書きします。

  • -enforcePropertyRestrictions/-epr <true/t | false/f>: プロパティー・アクセスに課された制限にプロパティー・アクセス・エンティティーが従っていない場合に、例外を生成するかどうかを指定します。

    デフォルトでは、false に設定されます。

  • -addDefaultConstructor/-adc <true/t | false/f>: すべてのパーシスタント・クラスが引数のないコンストラクターを定義するように指定します。このフラグは、コンストラクターがまだ存在していないパーシスタント・クラスに、引数のない保護されたコンストラクターを追加することをエンハンサーに通知します。
  • -tmpClassLoader/-tcl <true/t | false/f>: エンハンサーがパーシスタント・クラスを一時クラス・ローダーにロードするかどうかを指定します。

    この機能により、後から他のコードでクラスの拡張バージョンを同じ Java 仮想マシン (JVM) にロードできるようになります。デフォルトでは true に設定されています。

    トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): エンハンサーを実行しているときにクラス・ロードの問題が発生する場合は、デバッグ・ステップとして、このフラグを false に設定することができます。gotcha
  • クラス名には、以下のいずれかを指定します。
    • クラスのフルネーム。
    • クラスの .java 名。
    • クラスの .class ファイル。
エンハンサーに引数を指定しない場合、エンハンサーは、パーシスタント・クラス・リストにあるクラス上で実行されます。

使用法

wsenhancer ツールを使用するには、エンティティーを JPA 仕様に定義し、そのエンティティーをコンパイルする必要があります。エンティティーを JAR ファイルにパッケージ化する前に、wsenhancer ツールをエンティティーに対して実行してください。 エンティティーが既にパッケージされている場合は、エンティティー・クラス・ファイルを抽出し、エンハンサーを実行し、JAR ファイルを再作成します。

エンティティーを機能拡張するには、以下のようにします。
  • エンティティーがクラスパス内にあることを確認します。クラスパス内にない場合は、追加します。
  • wsenhancer コマンドを実行します。 これは profile_root/bin ディレクトリーにあります。
ログの設定で指定されているように、メッセージとエラーは管理コンソールに記録されます。wsenhancer コマンドを開始した後、ファイルを機能拡張します。

クラスパス上のすべてのエンティティーを機能拡張するには、以下のようにします。

[AIX][HP-UX][Linux][Solaris][z/OS]
$ cd build /home/user/myproject/build $ ${profile_root}/bin/wsenhancer.sh
[IBM i]
$ cd build
/home/user/myproject/build $ ${profile_root}/bin/wsenhancer
[Windows]
C:¥myproject¥cd build
C:\myproject\build>%profile_root%\bin\wsenhancer.bat 

myproject 内のすべてのエンティティーが機能拡張されます。

ソース・ファイルを保有している場合に、特定のエンティティーを機能拡張するには、以下のようにします。

[AIX][HP-UX][Linux][Solaris][z/OS]
$ cd build /home/user/myproject/build $ ${profile_root}/bin/wsenhancer.sh Magazine.java
[IBM i]
$ cd build
/home/user/myproject/build $ ${profile_root}/bin/wsenhancer Magazine.java
[Windows]
C:¥myproject¥cd build
C:\myproject\build>%profile_root%\bin\wsenhancer.bat Magazine.java

コンパイル済みクラス・ファイルを保有している場合に、特定のエンティティーを機能拡張するには、以下のようにします。

[AIX][HP-UX][Linux][Solaris][z/OS]
$ export CLASSPATH=target/classes
$ ${profile_root}/bin/wsenhancer.sh /bin/wsenhancer.sh target/classes/jpa/example/MyEntity.class
[IBM i]
$ export CLASSPATH=target/classes
$ ${profile_root}/bin/wsenhancer target/classes/jpa/example/MyEntity.class
[Windows]
C:> cd build
C:¥build> SET CLASSPATH=target¥classes
C:\build>%profile_root%\bin\wsenhancer.bat \bin\wsenhancer.bat target\classes\jpa\example\Magazine.class

プロジェクトにあるエンティティー Magazine.java が機能拡張されます。

追加情報

機能拡張ツールについて詳しくは、Apache OpenJPA 資料のパーシスタント・クラスに関するセクションを参照してください。


トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rejb_wsenhancer
ファイル名:rejb_wsenhancer.html