WebLogic エンタープライズ JavaBeans プログラマーズ ガイド
WebLogic Server の EJB ツール
BEA では、EJB の作成とコンフィグレーションを支援するツールを提供しています。それぞれについて以下の節で説明します。
EJBGen
EJBGen は、エンタープライズ JavaBean 2.0 のコード ジェネレータです。Bean クラスファイルに javadoc タグで注釈を付けた後、EJBGen を使用して EJB アプリケーションのリモートクラス、ホーム クラス、および、デプロイメント記述子ファイルを生成することができるので、編集および管理すべき EJB ファイルの数を 1 つに減らせます。
デプロイメント記述子の生成には、EJBGen の使用をお勧めします。これは、EJB の維持を容易化および簡略化できる、BEA のベスト プラクティスです。EJBGen を使用する場合、記述して注釈を付ける必要がある Bean クラスは 1 つだけです。そのため、記述、デバッグ、および維持が簡略化されます。さらに、開発環境として WebLogic Workshop を使用すると、EJBGen タグが自動挿入されます。
BEA WebLogic 8.1 のサンプルをインストール済みであれば、WL_HOME¥samples¥server¥examples¥src¥examples¥ejb20¥ejbgen の場所にEJBGen を使用した「Bands」という名前のサンプル アプリケーションがあります。
EJBGen 構文
javadoc -docletpath weblogic.jar -doclet weblogic.tools.ejbgen.EJBGen (YourBean).java
クラスパス内に weblogic.jar がない場合は、次のように weblogic.jar にパスを追加します。
javadoc -docletpath <path_to_weblogic.jar> weblogic.jar -doclet weblogic.tools.ejbgen.EJBGen (YourBean).java
他の EJB との関係がある EJB に対して EJBGen を呼び出す場合は、次のように EJB の後に、関係する EJB を指定してその EJB を呼び出します。
javadoc -docletpath weblogic.jar -doclet weblogic.tools.ejbgen.EJBGen (YourBean).java (RelatedBean).java
EJBGen では次のオプションを使用します。
オプション
|
定義
|
-d [directory]
|
このディレクトリの下にすべてのファイルが作成される。
|
-descriptorDir [directory]
|
このディレクトリの下にすべての記述子ファイルが作成される。
|
-ignorePackage
|
このフラグを設定すると、EJBGen は生成した Java ファイルのパッケージ名を無視し、-d フラグで指定された出力ディレクトリにファイルを作成する (-d フラグが指定されていない場合は、カレント ディレクトリ)。
|
-pfd1
|
このフラグを設定すると、EJBGenは EJB 2.0 の最終草案 バージョン 1 と互換したデプロイメント記述子を生成する。Weblogic 6.1 より前のバージョンを使用する場合には、このフラグを必ず使用する。
|
-ejbPrefix [string] (default: "")
|
EJB クラス生成時に使用するプレフィックス。
|
-ejbSuffix [string] (default: "Bean" or "EJB")
|
EJB クラス生成時に使用するサフィックス。
|
-localHomePrefix [string] (default: "")
|
ローカル EJB クラス生成時に使用するプレフィックス。
|
-localHomeSuffix [string] (default: "LocalHome")
|
ローカル EJB クラス生成時に使用するサフィックス。
|
-remoteHomePrefix [string] (default: "")
|
リモート EJB ホーム クラス生成時に使用するプレフィックス。
|
-remoteHomeSuffix [string] (default: "Home")
|
リモート EJB ホーム クラス生成時に使用するサフィックス。
|
-remotePrefix [string] (default: "")
|
リモート EJB クラス生成時に使用するプレフィックス。
|
-remoteSuffix [string] (default: "")
|
リモート EJB クラス生成時に使用するサフィックス。
|
-localPrefix [string] (default: "")
|
ローカル EJB クラス生成時に使用するプレフィックス。
|
-localSuffix [string] (default: "Local")
|
ローカル EJB クラス生成時に使用するサフィックス。
|
-valueObjectPrefix [string] (default: "")
|
Value オブジェクト クラス生成時に使用するプレフィックス。
|
-valueObjectSuffix [string] (default: "Value")
|
Value オブジェクト クラス生成時に使用するサフィックス。
|
-jndiPrefix [string] (default: "")
|
@remote-jndi-name と @local-jndi-name で使用するプレフィックス。
|
-jndiSuffix [string] (default: "")
|
@remote-jndi-name と @local-jndi-name で使用するサフィックス。
|
-checkTags
|
このオプションで起動した場合、EJBGen はどのクラスも生成しないが、コマンドラインで指定したクラスに対して有効でない EJBGen タグを見つける。
|
-docTags
|
EJBGen によって把握された、すべてのタグを出力する。注意点として、このオプションでどのソースファイルも必要ないにもかかわらず、コマンドラインで既存の .java クラスを指定しなくてはならない。 これをしないと、このフラグを認識したにもかかわらず、Javadoc はエラーメッセージを返す。
|
-docTag tagName
|
これを指定すると、EJBGen は把握されているすべての属性など、このタグの詳細な説明を出力する。注意点として、このオプションでどのソースファイルも必要ないにもかかわらず、コマンドラインで既存の .java クラスを指定しなくてはならない。 これをしないと、このフラグを認識したにもかかわらず、Javadoc はエラーメッセージを返す。
|
-docTagsHtml
|
-docTags と同じであるが、HTML 文書を生成する。
|
-propertyFile [fileName]
|
EJBGen が置換変数を定義するのに読み込む、プロパティ ファイルの名前。「プロパティ ファイル」を参照。
|
-noValueClasses
|
これを指定すると、Value クラスは生成されなくなる。
|
-noRemoteInterfaces
|
これを指定すると、リモート インタフェースは生成されない。
|
-noLocalInterfaces
|
これを指定すると、ローカル インタフェースは生成されない。
|
-wls7
|
このフラグは EJBGen が WebLogic Server 7.0 のデプロイメント記述子を生成することを指定するのに使用する。
|
-toStringForPrimitivesOnly
|
これを指定すると、値オブジェクトの toString() メソッドはプリミティブであるコンテナ管理による永続性フィールドのみを表示する。このフラグは、値オブジェクト間での循環的な参照の問題 (AValue.toString() が BValue.toString() を呼び出し、それがさらに AValue.toString() を呼び出すなど) を解消する。
|
EJBGen の例
注釈を付けた Bean ファイルを次に示しますが、これを基に EJBGen はリモート インタフェース、ホーム インタフェース、デプロイメント記述子ファイルを生成します。AccountBean.java がメインの Bean クラスです。これはCMP EJB 2.0 エンティティ Bean です。
/**
* @ejbgen:entity
* ejb-name = AccountEJB-OneToMany
* data-source-name = examples-dataSource-demoPool
* table-name = Accounts
* prim-key-class = java.lang.String
*
* @ejbgen:jndi-name
* local = one2many.AccountHome
* @ejbgen:finder
* signature = "Account findAccount(double balanceEqual)"
* ejb-ql = "WHERE balance = ?1"
*
* @ejbgen:finder
* signature = "Collection findBigAccounts(double balanceGreaterThan)"
* ejb-ql = "WHERE balance > ?1"
*
* @ejbgen:relation
* name = Customer-Account
* target-ejb = CustomerEJB-OneToMany
* multiplicity = many
* cmr-field = customer
*
*/
abstract public class AccountBean implements EntityBean {
/**
* @ejbgen:cmp-field column = acct_id
* @ejbgen:primkey-field
* @ejbgen:remote-method transaction-attribute = Required
*/
abstract public String getAccountId();
abstract public void setAccountId(String val);
// ....
}
この例でも見られるように、タグには、それが使用できる場所に応じてクラス タグとメソッド タグの 2 種類があります。
ファイルの編集を終えたら、次の Javadoc コマンドを通して EJBGen を起動します。
javadoc -docletpath weblogic.jar -doclet weblogic.tools.ejbgen.EJBGen AccountBean.java
Javadoc コマンドは、次のファイルを生成します。
- Account.java
- AccountHome.java
- ejb-jar.xml
- weblogic-ejb-jar.xml
- weblog-cmp-rdbms-jar.xml
EJBGen タグ
次のタグを使って Bean クラス ファイルに注釈を付けます。
@ejbgen:automatic-key-generation
使用場所 :クラス
適用対象 :エンティティ Bean
属性
|
説明
|
必須
|
cache-size
|
主要キャッシュのサイズ。
|
必須
|
name
|
ジェネレータの名前。
|
必須
|
type
|
ジェネレータのタイプ。
|
必須
|
@ejbgen:cmp-field
使用場所 : メソッド
適用対象 :エンティティ Bean
属性
|
説明
|
必須
|
column
|
CMP フィールドがマップされるカラム。「複数テーブルへのエンティティ Bean のマッピング」を参照。
|
必須
|
column-type
|
このカラムのタイプ (OracleClob | OracleBlob)。
|
省略可能
|
ordering-number (0..n)
|
このフィールドがシグネチャおよびコンストラクタ内に置かれるべき順番。この順序付けを有効にするためには、すべての cmr および cmp フィールドでこの属性に異なる数値を設定する必要がある。
|
省略可能
|
exclude-from-value-object
|
True であれば、このフィールドは値オブジェクトにおいて生成されない (True | False)。
|
省略可能
|
group-names
|
このフィールドが属するグループ名をカンマで区切ったもの。
|
省略可能
|
primkey-field
|
このフィールドが複合主キーの一部であるかどうか (True | False)。
|
省略可能
|
table-name
|
このフィールドがマップされるテーブル。 「複数テーブルへのエンティティ Bean のマッピング」.
|
省略可能
|
@ejbgen:cmr-field
使用場所 : メソッド
適用対象 :エンティティ Bean
属性
|
説明
|
必須
|
ordering-number (0..n)
|
このフィールドがシグネチャおよびコンストラクタ内に置かれるべき順番。この順序付けを有効にするためには、すべての cmr および cmp フィールドがこの属性で異なる数値を持つ必要がある。
|
省略可能
|
exclude-from-value-object
|
True であれば、このフィールドは値オブジェクトにおいて生成されない (True | False)。
|
省略可能
|
group-names
|
このフィールドが属するグループ名をカンマで区切ったもの。
|
省略可能
|
@ejbgen:create-default-rdbms-tables
使用場所 :クラス
適用対象 :エンティティ Bean
属性
|
説明
|
必須
|
value
|
(CreateOnly | Disabled | DropAndCreate | DropAndCreateAlways | AlterOrCreate)
|
省略可能
|
@ejbgen:ejb-client-jar
使用場所 :クラス
適用対象 :すべての Bean タイプ
属性
|
説明
|
必須
|
file-name
|
生成するクライアント JAR の名前。複数の EJB にこのタグがあった場合、指定された JAR ファイルのうち1 つだけがデプロイメント記述子に含められる。
|
必須
|
@ejbgen:ejb-local-ref
使用場所 :クラス
適用対象 :セッションおよびエンティティ Bean
属性
|
説明
|
必須
|
home
|
Bean のローカル クラス
|
省略可能
|
jndi-name
|
参照の JNDI 名。
|
省略可能
|
link
|
Bean へのリンク。
|
省略可能
|
local
|
Bean のホーム クラス。
|
省略可能
|
name
|
参照の名前。
|
省略可能
|
type
|
(Entity | Session)
|
省略可能
|
@ejbgen:ejb-ref
使用場所 :クラス
適用対象 :すべての Bean タイプ
属性
|
説明
|
必須
|
home
|
Bean のリモート クラス。
|
省略可能
|
jndi-name
|
参照の JNDI 名。
|
省略可能
|
link
|
Bean のリンク。
|
省略可能
|
name
|
参照の名前。
|
省略可能
|
remote
|
Bean のホーム クラス。
|
省略可能
|
type
|
(Entity | Session)
|
省略可能
|
@ejbgen:entity
使用場所 :クラス
適用対象 :エンティティ Bean
属性
|
説明
|
必須
|
ejb-name
|
エンティティ Bean の名前。
|
必須
|
prim-key-class
|
null
|
必須
|
abstract-schema-name
|
この EJB の抽象スキーマ名。指定されない場合、ejb-name の値が使用される。
|
省略可能
|
cache-between-transactions
|
エンティティ Bean の永続データをトランザクション間でキャッシュするかどうか (True | False)。
|
省略可能
|
check-exists-on-method
|
コンテナが各メソッド呼び出しについて Bean の有無をチェックするかどうか (True | False)。
|
省略可能
|
concurrency-strategy
|
この Bean の同時方式を定義する (Optimistic | ReadOnly | Exclusive | Database)。
|
省略可能
|
data-source-name
|
データソース名 (config.xml ファイルで宣言したのと同じ)。
|
省略可能
|
database-type
|
データベースのタイプ。
|
|
db-is-shared
|
(True | False)
|
省略可能
|
default-transaction
|
詳細なトランザクション属性を設定しない、すべてのメソッドに適用されるトランザクション属性。
|
省略可能
|
delay-database-insert-until
|
(ejbCreate | ejbPostCreate)
|
省略可能
|
delay-updates-until-end-of-tx
|
トランザクション コミット後に更新が送信されるかどうか (True | False)。
|
省略可能
|
dispatch-policy
|
この Bean の JMS ディスパッチ ポリシー キュー
|
省略可能
|
enable-call-by-reference
|
コンテナがこの EJB を参照で呼び出すかどうか (True | False)。
|
省略可能
|
enable-dynamic-queries
|
動的クエリが有効化されているかどうか (True | False)。
|
省略可能
|
finders-load-bean
|
これを True に設定した場合、Bean はファインダによってすぐにキャッシュにロードされる (True | False)。
|
省略可能
|
home-call-router-class-name
|
ホーム メソッド呼び出しのルーティングに使用するクラス。
|
省略可能
|
home-is-clusterable
|
この Bean をクラスタ内の複数のサーバにデプロイできるかどうか (True | False)。
|
省略可能
|
home-load-algorithm
|
このホームのレプリカ間でロード バランシングを行うためのアルゴリズム (RoundRobin | Random | WeightBased)。
|
省略可能
|
idle-timeout-seconds
|
ある EJB がキャッシュ内に置かれる最長の時間。
|
省略可能
|
invalidation-target
|
コンテナ管理による永続性 エンティティ EJB が変更された場合に無効とすべき、読み込み専用エンティティ Bean の ejb-name。
|
省略可能
|
max-beans-in-cache
|
キャッシュ内の Bean の最大数。
|
省略可能
|
optimistic-column
|
オプティミスティックな同時実行性のためのタイムスタンプを保持するカラム。
|
省略可能
|
persistence-type
|
この Bean の永続性がコンテナ管理によるものであるか Bean 管理によるものであるか (CMP | BMP)。
|
省略可能
|
prim-key-class-nogen
|
(True | False)。このキーワードを指定した場合、EJBGen は (各自が提供するものと仮定して) 主キー クラスを生成しなくなる。
|
省略可能
|
read-timeout-seconds
|
読み込み専用エンティティ Bean に ejbLoad() を呼び出す間隔の秒数。
|
省略可能
|
reentrant
|
(True | False)
|
省略可能
|
run-as
|
この EJB の role-name を指定する。
|
省略可能
|
run-as-identity-principal
|
ロールを複数プリンシパルにマップする場合のプリンシパル名を指定する。
|
省略可能
|
table-name
|
主キーの Java クラス。複合主キーの場合、このクラスは EJBGen によって生成される。
|
省略可能
|
trans-timeout-seconds
|
トランザクション タイムアウトの秒数。
|
省略可能
|
use-caller-identity
|
この EJB が呼び出し側の ID を使用するかどうか (True | False)。
|
省略可能
|
use-select-for-update
|
データベースから Bean がロードされるときに SELECT ... FOR UPDATE 句が使用される (True | False)。
|
省略可能
|
validate-db-schema-with
|
EJB コンテナによって作成されるテーブルの検証に使用されるメソッド (MetaData | TableQuery)。
|
省略可能
|
verify-columns
|
オプティミスティックな同時実行性が、トランザクション中に修正対象となるカラムが修正されていないことを確認する方法 (Read|Modified | Version | Timestamp)。
|
省略可能
|
@ejbgen:entity-cache-ref
使用場所 :クラス
適用対象 :エンティティ Bean
属性
|
説明
|
必須
|
cache-between-transactions
|
エンティティ Bean の永続データをトランザクション間でキャッシュするかどうか (True | False)。
|
省略可能
|
concurrency-strategy
|
この Bean の同時方式を定義する (Optimistic|ReadOnly | Exclusive | Database)。
|
省略可能
|
name
|
キャッシュの名前。
|
省略可能
|
estimated-bean-size
|
エンティティ Bean のインスタンスの推定平均サイズ (バイト単位)。
|
省略可能
|
@ejbgen:env-entry
使用場所 : クラス
適用対象 :すべての Bean タイプ
属性
|
説明
|
必須
|
name
|
この環境エントリの名前。
|
必須
|
type
|
この環境エントリの Java タイプ (java.lang であっても完全修飾しなければならない)。
|
必須
|
value
|
この環境エントリの値。
|
必須
|
@ejbgen:file-generation
使用場所 : クラス
適用対象 :すべての Bean タイプ
属性
|
説明
|
必須
|
local-class
|
この EJB のローカル インタフェースを生成するかどうか (True | False)。
|
省略可能
|
local-home
|
この EJB のローカル ホーム インタフェースを生成するかどうか (True | False)。
|
省略可能
|
pk-class
|
この EJB の主キー クラスを生成するかどうか (True | False)。
|
省略可能
|
remote-class
|
この EJB のリモート インタフェースを生成するかどうか (True | False)。
|
省略可能
|
remote-home
|
この EJB のリモート ホーム インタフェースを生成するかどうか (True | False)。
|
省略可能
|
value-class
|
この EJB の値クラスを生成するかどうか (True | False)。
|
省略可能
|
@ejbgen:finder
使用場所 :クラス
適用対象 :エンティティ Bean
属性
|
説明
|
必須
|
caching-name
|
期待されるリレーションシップ キャッシングの名前。
|
省略可能
|
comment
|
生成されたファインダ Java メソッドの上に再現されるコメント。
|
省略可能
|
ejb-ql
|
デプロイメント記述子に含まれるものと同じ、EJB QL リクエスト。
|
省略可能
|
generate-on
|
このファインダの生成場所となるホーム (Local | Remote)。指定がなければ両方。
|
省略可能
|
group-name
|
WebLogic クエリのグループの名前。
|
省略可能
|
include-updates
|
現在のトランザクション中の更新を必ずクエリの結果に反映するかどうか (True | False)。
|
省略可能
|
isolation-level
|
このメソッドのトランザクション アイソレーションのタイプ。
|
省略可能
|
max-elements
|
多値クエリによって返される要素の最大数。
|
省略可能
|
signature
|
ホーム クラスに生成したいシグネチャと正確に一致させなければならない。EJBGen は適合例外を追加するが、各パラメータについて、java.lang であっても完全修飾したタイプを必ず指定する。
|
省略可能
|
sql-select-distinct
|
生成された SQL 'SELECT' に 'DISTINCT' 修飾子が含まれるかどうか (True | False)。
|
省略可能
|
transaction-attribute
|
このローカル メソッドのトランザクション属性 (NotSupported | Supports | Required | RequiresNew | Mandatory | Never)。指定されない場合、デフォルトのトランザクション属性が使用される。このタグを付けたメソッドが、ローカル クラス上に生成される。
|
省略可能
|
weblogic-ejb-ql
|
デプロイメント記述子のものと同じ、Weblogic EJB クエリ言語 (QL) リクエスト。注意 :このリスエストが必要になる場合、EJB QL と WebLogic EJB QL を二重引用符で囲む必要がある。
|
省略可能
|
@ejbgen:foreign-jms-provider
使用場所 : クラス
適用対象 : メッセージ駆動型 Bean
属性
|
説明
|
必須
|
provider-url
|
外部 JMS プロバイダの URL。
|
必須
|
connection-factory-jndi-name
|
接続ファクトリの JNDI 名。
|
省略可能
|
initial-context-factory
|
初期 JNDI コンテキスト ファクトリ。
|
省略可能
|
@ejbgen:jndi-name
使用場所 :クラス
適用対象 :すべての Bean タイプ
属性
|
説明
|
必須
|
local
|
この EJB のローカル JNDI 名。指定されない場合、いずれのローカル インタフェースも生成されない。
|
省略可能
|
remote
|
この EJB のリモート JNDI 名。指定されない場合、いずれのリモート インタフェースも生成されない。
|
省略可能
|
@ejbgen:local-home-method
使用場所 :メソッド
適用対象 :エンティティ Bean、セッション Bean
属性
|
説明
|
必須
|
roles
|
このメソッドを呼び出すことを許可されているロールのカンマ区切りのリスト。
|
省略可能
|
transaction-attribute
|
このローカル メソッドのトランザクション属性。指定されない場合、デフォルトのトランザクション属性が使用される。このタグを付けたメソッドが、ローカル クラス上に生成される。
|
省略可能
|
@ejbgen:local-method
使用場所 :メソッド
適用対象 :エンティティ Bean、セッション Bean
属性
|
説明
|
必須
|
is-idempotent
|
このメソッドが多重呼び出し不変かどうか (True | False)。
|
省略可能
|
isolation-level
|
このメソッドのトランザクション アイソレーションのタイプ。
|
省略可能
|
ordering-number
|
このメソッドが生成されたクラス内に置かれるべき順番 (0..n)。
|
省略可能
|
roles
|
このメソッドを呼び出すことを許可されているロールのカンマ区切りのリスト。
|
省略可能
|
transaction-attribute
|
このローカル メソッドのトランザクション属性 (NotSupported | Supports | Required | RequiresNew | Mandatory | Never)。指定されない場合、デフォルトのトランザクション属性が使用される。このタグを付けたメソッドが、ローカル クラス上に生成される。
|
省略可能
|
@ejbgen:message-driven
使用場所 :クラス
適用対象 :メッセージ駆動型 Bean
属性
|
説明
|
必須
|
destination-jndi-name
|
送り先の JNDI 名。
|
必須
|
destination-type
|
JMS 送り先タイプ (javax.jms.Queue | javax.jms.Topic)。
|
必須
|
ejb-name
|
このメッセージ駆動型 Bean の名前。
|
必須
|
acknowledge-mode
|
確認応答モード (auto-acknowledge | dups-ok-acknowledge)。
|
省略可能
|
default-transaction
|
詳細なトランザクション属性を設定しない、すべてのメソッドに適用されるトランザクション属性。
|
省略可能
|
durable
|
destination-type が Topic の場合、この属性を True に設定するとサブスクリプションが恒久になる (True | False)。
|
省略可能
|
enable-call-by-reference
|
コンテナがこの EJB を参照で呼び出すかどうか (True | False)。
|
省略可能
|
initial-beans-in-free-pool
|
フリー プール内の Bean の初期数。
|
省略可能
|
max-beans-in-free-pool
|
フリー プール内の Bean の最大数。
|
省略可能
|
message-selector
|
JMS メッセージ セレクタ。
|
省略可能
|
run-as
|
この EJB のロール名を指定する。
|
省略可能
|
run-as-identity-principal
|
ロールを複数プリンシパルにマップする場合のプリンシパル名を指定する。
|
省略可能
|
trans-timeout-seconds
|
トランザクションのタイムアウト (秒数)。
|
省略可能
|
use-caller-identity
|
この EJB が呼び出し側の ID を使用するかどうか (True | False)。
|
省略可能
|
@ejbgen:method-isolation-level-pattern
使用場所 :クラス
適用対象 :すべての Bean
属性
|
説明
|
必須
|
isolation-level
|
パターン タグで指定されるメソッドのアイソレーション レベル。
|
必須
|
pattern
|
このアイソレーション レベルを受け取るすべてのメソッドに一致するパターン ("*" など)。
|
必須
|
@ejbgen:method-permission-pattern
使用場所 :クラス
適用対象 :すべての Bean
属性
|
説明
|
必須
|
pattern
|
このアイソレーション レベルを受け取るすべてのメソッドに一致するパターン ("*" など)。
|
必須
|
roles
|
パターン タグで指定されたメソッドのロールのカンマ区切りのリスト。
|
必須
|
interface
|
このパーミッション パターンが適用されるインタフェース (Home | Remote | LocalHome | Local)。
|
省略可能
|
@ejbgen:relation
使用場所 :クラス
適用対象 :エンティティ Bean
属性
|
説明
|
必須
|
multiplicity
|
(One | Many)
|
必須
|
name
|
関係の名前。ロールの関係の両端で同じ名前を使用するようにする (一方向でもこの制約が同様に適用される)。
|
必須
|
cascade-delete
|
(True | False)
|
省略可能
|
cmr-field
|
この関係を格納する cmr フィールド。このフィールドは省略可能である。これを指定しない場合、関係は一方向となる。これを指定する場合には、fk-column 属性も合わせて指定する。
|
省略可能
|
db-cascade-delete
|
カスケード削除で、基盤の DBMS に組み込みのカスケード削除機能を使用するかどうか (True | False)。
|
省略可能
|
fk-column
|
少なくとも 1 つの一方向関係のある場合のみ必要になる。一方向以外の EJB では、相手の主キーを保持するカラムを宣言しなければならない。
|
省略可能
|
foreign-key-table
|
foreign-key を含む DBMS テーブルの名前。
|
省略可能
|
joint-table
|
多対多関係のみで必要になる。この関係を含む結合テーブルを格納するのに使用する既存テーブルの名前にすること。複合主キーを使用する場合、これに関わる一連の外部キーをカンマで区切って指定する必要がある。
|
省略可能
|
primary-key-table
|
primary-key を含む DBMS テーブルの名前。
|
省略可能
|
role-name
|
このロールの名前 (たとえば、ParentHasChildren)。指定されない場合、EJBGen が代わりにこれを生成する。関係を継続的に使用しようとする場合には、role-name を指定する必要がある。
|
省略可能
|
target-ejb
|
この関係のターゲット EJB 名。
|
必須
|
@ejbgen:relationship-caching-element
使用場所 :メソッド
適用対象 :エンティティ Bean
属性
|
説明
|
必須
|
caching-name
|
期待されるリレーションシップ キャッシングの名前。
|
必須
|
cmr-field
|
CMR フィールド名のカンマ区切りのリスト。
|
必須
|
group-name
|
CMR フィールドに対してロードされるグループ名。
|
省略可能
|
id
|
子がこの要素を親として使用することを許可する ID。「リレーションシップ キャッシング」を参照。
|
省略可能
|
parent-id
|
この要素の親 ID。
|
省略可能
|
@ejbgen:remote-home-method
使用場所 :メソッド
適用対象 :エンティティ Bean、セッション Bean
属性
|
説明
|
必須
|
roles
|
このメソッドを呼び出すことを許可されているロールのカンマ区切りのリスト。
|
省略可能
|
transaction-attribute
|
このリモート メソッドのトランザクション属性。指定されない場合、デフォルトのトランザクション属性が使用される。このタグを付けたメソッドが、リモート クラス上に生成される。
|
省略可能
|
@ejbgen:remote-method
使用場所 :メソッド
適用対象 :エンティティ Bean、セッション Bean
属性
|
説明
|
必須
|
is-idempotent
|
このメソッドが多重呼び出し不変かどうか (True | False)。
|
省略可能
|
isolation-level
|
このメソッドのトランザクション アイソレーションのタイプ。
|
省略可能
|
ordering-number
|
このメソッドが生成されたクラス内に置かれるべき順番 (0..n)。
|
省略可能
|
roles
|
このメソッドを呼び出すことを許可されているロールのカンマ区切りのリスト。
|
省略可能
|
transaction-attribute
|
このローカル メソッドのトランザクション属性 (NotSupported | Supports | Required | RequiresNew | Mandatory | Never)。指定されない場合、デフォルトのトランザクション属性が使用される。このタグを付けたメソッドが、ローカル クラス上に生成される。
|
省略可能
|
@ejbgen:resource-env-ref
使用場所 :クラス
適用対象 :すべての Bean タイプ
属性
|
説明
|
必須
|
name
|
リソース環境参照の名前。
|
必須
|
type
|
リソース環境参照のタイプ (javax.jms.Queue など)
|
必須
|
jndi-name
|
リソースの JNDI 名。
|
省略可能
|
@ejbgen:resource-ref
使用場所 :クラス
適用対象 :すべての Bean タイプ
l
属性
|
説明
|
必須
|
auth
|
(Application | Container)
|
必須
|
jndi-name
|
リソースの JNDI 名。
|
必須
|
name
|
リソース名。
|
必須
|
type
|
リソースのタイプ (javax.sql.DataSource など)。
|
必須
|
sharing-scope
|
(Shareable | Unshareable)
|
省略可能
|
@ejbgen:role-mapping
使用場所 :クラス
適用対象 :すべての Bean タイプ
属性
|
説明
|
必須
|
global-role
|
このロールがグローバルの場合は True (True | False)。
|
省略可能
|
principals
|
このロールのプリンシパル名 (カンマで区切る)。
|
省略可能
|
role-name
|
ロール名。
|
必須
|
@ejbgen:security-role-ref
使用場所 :メソッド
適用対象 :エンティティ Bean、セッション Bean
属性
|
説明
|
必須
|
role-name
|
セキュリティ ロール名。
|
必須
|
role-link
|
定義されたセキュリティ ロールへの参照。
|
省略可能
|
@ejbgen:select
使用場所 :メソッド
適用対象 :エンティティ Bean
属性
|
説明
|
必須
|
caching-name
|
期待されるリレーションシップ キャッシングの名前。
|
省略可能
|
ejb-ql
|
この選択メソッドを定義する EJB-QL。
メソッド名を ejbSelect から始めること。
|
必須
|
group-name
|
クエリのグループの名前。
|
省略可能
|
include-updates
|
現在のトランザクション中の更新を必ずクエリの結果に反映するかどうか (True | False)。
|
省略可能
|
max-elements
|
多値クエリによって返される要素の最大数。
|
省略可能
|
ordering-number
|
このメソッドが生成されたクラス内に置かれるべき順番 (0..n)。
|
省略可能
|
result-type-mapping
|
返されたオブジェクトを EJBLocalObject または EJBObject にマップするかどうか (Remote | Local)。
|
省略可能
|
weblogic-ejb-ql
|
デプロイメント記述子のものと同じ、Weblogic EJB QL リクエスト。
注意: このリスエストが必要になる場合、EJB QL と WebLogic EJB QL を二重引用符で囲む必要がある。
|
省略可能
|
@ejbgen:session
使用場所 :クラス
適用対象 : セッション Bean
属性
|
説明
|
必須
|
allow-concurrent-calls
|
この EJB に対し同時呼び出しを許可するかどうか (True | False)。
|
省略可能
|
bean-load-algorithm
|
この Bean のレプリカ間でロード バランシングを行うためのアルゴリズム。
|
省略可能
|
ejb-name
|
このセッション Bean の名前。
|
必須
|
call-router-class-name
|
ホーム メソッド呼び出しのルーティングに使用するクラス名。
|
省略可能
|
default-transaction
|
詳細なトランザクション属性を設定しない、すべてのメソッドに適用されるトランザクション属性。
|
省略可能
|
dispatch-policy
|
Bean の JMS ディスパッチ ポリシー キュー
|
省略可能
|
enable-call-by-reference
|
コンテナがこの EJB を参照で呼び出すかどうか (True | False)。
|
省略可能
|
home-call-router-class-name
|
ホーム メソッド呼び出しのルーティングに使用するクラス。
|
省略可能
|
home-is-clusterable
|
この Bean をクラスタ内の複数のサーバにデプロイできるかどうか (True | False)。
|
省略可能
|
home-load-algorithm
|
このホームのレプリカ間でロード バランシングを行うためのアルゴリズム (RoundRobin | Random | WeightBased)。
|
省略可能
|
idle-timeout-seconds
|
ある EJB がキャッシュ内に置かれる最長の時間。
|
省略可能
|
initial-beans-in-free-pool
|
フリー プール内の Bean の初期数。
|
省略可能
|
is-clusterable
|
この Bean がクラスタ対応かどうか (True | False)。
|
省略可能
|
load-algorithm
|
このホームのレプリカ間でバランシングを行うためのアルゴリズム (RoundRobin|Random | WeightBased)。
|
省略可能
|
max-beans-in-cache
|
キャッシュ内の Bean の最大数。
|
省略可能
|
max-beans-in-free-pool
|
フリー プール内の Bean の最大数。
|
省略可能
|
methods-are-idempotent
|
このステートレス セッション Bean のメソッドが多重呼び出し不変であるかどうか (True | False)。
|
省略可能
|
persistent-store-dir
|
パッシベーションされた Bean が格納されるディレクトリ。
|
省略可能
|
replication-type
|
クラスタ内でステートフル セッション Bean をレプリケートする方法 (InMemory | None)。
|
省略可能
|
run-as
|
この EJB の role-name を指定する。
|
省略可能
|
run-as-identity-principal
|
ロールを複数プリンシパルにマップする場合のプリンシパル名を指定する。
|
省略可能
|
trans-timeout-seconds
|
トランザクション タイムアウトの秒数。
|
省略可能
|
transaction-type
|
この EJB のトランザクションが Bean 管理であるかコンテナ管理であるか (Bean | Container)。
|
省略可能
|
type
|
セッション Bean のタイプ (Stateless | Stateful)。この属性が指定されない場合、EJBGen は各自のクラスの ejbCreate() メソッドを調べることによってこのタイプを正確に推測する。
|
省略可能
|
use-caller-identity
|
この EJB が呼び出し側の ID を使用するかどうか (True | False)。
|
省略可能
|
@ejbgen:value-object
使用場所 :クラス
適用対象 :すべての Bean タイプ
属性
|
説明
|
必須
|
reference
|
他の EJB のクラスにアクセスする時に、Value オブジェクト クラスがどのオブジェクトを参照すべきかを指定する (Local | Value)。
|
必須
|
ファイル生成の制御
デフォルトでは、EJBGen は次のファイルを生成します。
- リモート Bean およびホーム インタフェース (@ejbgen:jndi-name が「remote」で指定された場合)
- ローカル Bean およびホーム インタフェース (@ejbgen:jndi-name が「local」で指定された場合)
- 値オブジェクト クラス
- 主キー クラス (該当する場合)
これらのファイルの生成は、@ejbgen:file-generation を使用して選択的に無効化できます。これは、Bean ごとに実行できます。次のコード サンプルでは、値クラスが生成されないようにしています。
/**
* @ejbgen:file-generation
* value-class = False
*/
注意: コマンドライン オプション -noValueClasses、 -noRemoteInterfaces、または -noLocalInterfaces は、Bean で見つかったすべてのタグをオーバーライドします。
未コンパイルの値タイプ クラスによる Javadoc 警告
EJBGen クラスに、未コンパイルの Java クラスである値タイプ (パラメータ値、戻り値など) が含まれる場合、Javadoc は図 10-1 に示すように javac コンパイル エラーのようなものを出力します。
図10-1 値タイプ クラスが未コンパイルの場合の Javadoc 出力サンプル
[javadoc]
C:¥toddk¥dev¥issues¥cr100528¥src¥test¥po¥PurchaseOrderBean.java:29: cannot resolve symbol [javadoc] symbol : class PurchaseOrder [javadoc] location: class test.po.PurchaseOrderBean [javadoc] public boolean submitPO(PurchaseOrder po) throws SubmitException {
[javadoc]
[javadoc] C:¥toddk¥dev¥issues¥cr100528¥src¥test¥po¥PurchaseOrderBean.java:29: cannot resolve symbol [javadoc] symbol : class SubmitException [javadoc] location: class test.po.PurchaseOrderBean [javadoc] public boolean submitPO(PurchaseOrder po) throws SubmitException {
これらは、Javadoc 警告であって、エラーではありません。エラー メッセージと javac コンパイラ エラーが似通っているため、エラーとして誤って解釈しやすくなっています。Javadoc は、正常に実行されたことを示す終了ステータスと共に返るので、Ant EJBGen タスクが構築失敗の原因となることはありません。
複数テーブルへのエンティティ Bean のマッピング
デフォルトでは、エンティティ Bean はタグ @ejbgen:entity に属性 table-name を指定して 1 つのテーブルにマップされます。エンティティ Bean を複数のテーブルにマップする場合には、個々の @ejbgen:cmp-fields で table-name 属性を使用できます。table-name 属性のないコンテナ管理による永続性フィールドはすべて、@ejbgen:entity で指定したテーブルを使用します (したがって、これを「デフォルト」テーブルと考えることができます)。
エンティティ Bean を複数のテーブルにマップする場合、table-name 属性において (およびカラム上で) カンマ区切りのテーブル リストを指定する必要があります。次に例を示します。
テーブル数とカラム数が一致しており、カラムが対応するテーブル内に存在することを確認してください。
プロパティ ファイル
EJBGen は、この節で説明するように、プロパティ ファイルから生成のための情報を収集できます。
EJBGen にプロパティ ファイルの解析を指示するには、-propertyFile オプションを使用します。図 10-2 は、サンプルのプロパティ ファイルを示します。
図10-2 EJBGen プロパティ ファイルのサンプル
# property-file
#
remote-jndi-name = Account
-propertyFile オプションを指定して EJBGen を呼び出すには、次の構文を使用します。
javadoc -docletpath ejbgen.jar -doclet EJBGen -propertyFile property-file AccountBean.java
EJBGen は、プロパティ ファイル内にユーザ変数およびあらかじめ定義された変数という、2 種類の変数を認識します。
ユーザ変数
EJBGen タグでは、文字列の代わりに変数を使用できます。これらの変数は図 10-3 に示すように、"${" と "}" で囲む必要があります。
図10-3 文字列の代わりのユーザ変数
@ejbgen:jndi-name
remote = ${remote-jndi-name}
変数は、EJBGen タグの後であればどこででも使用できます。したがって、図 10-4 に示すようにタグ定義全体を含めることができます。
図10-4 タグ定義全体としてのユーザ変数
@ejbgen:jndi-name
${jndi-name-tag}
#
#
# property-file
#
jndi-name-tag = remote = RemoteAccount local = LocalAccount
あらかじめ定義された変数
EJBGen は、いくつかのあらかじめ定義された変数を認識します。これらの変数はタグでは使用しないことになっていますが、EJBGen ではロールに応じてさまざまな場所で使用します。以下に、認識される変数を示します。
- remote.baseClass
これを指定すると、この変数の値は生成されたすべてのリモート クラスの基本クラスとして使用されます。
- home.baseClass
これを指定すると、この変数の値は生成されたすべてのリモート ホーム クラスの基本クラスとして使用されます。
- local.baseClass
これを指定すると、この変数の値は生成されたすべてのローカル クラスの基本クラスとして使用されます。
- localHome.baseClass
これを指定すると、この変数の値は生成されたすべてのローカル ホーム クラスの基本クラスとして使用されます。
- value.baseClass
これを指定すると、この変数の値は生成されたすべての値クラスの基本クラスとして使用されます。
- value.package
これを指定すると、この変数の値は生成されたすべての値クラスのパッケージとして使用されます。
- value.interfaces
これを指定すると、この変数の値は値クラスが実装すべきインタフェースとして使用されます。この変数は、カンマで区切ったインタフェースのリストにもできます。
これらの変数は、EJBName をプレフィックスとすることでより特定的にできます。たとえば、次のようなプロパティ ファイルの場合を考えます。
#
# property-file
#
Account.home.baseClass = BaseAccountHome
home.baseClass = BaseHome
value.package = value
containerManaged.value.package=valuePackageForContainerManaged
- EJBGen によって生成されたホームはすべて、クラス BaseHome を拡張します。ただし、EJB 「Account」 のホームは例外で、BaseAccountHome を拡張します。
リレーションシップ キャッシング
@ejbgen:relationship-caching タグを使用して、リレーションシップ キャッシング要素を指定できます。この XML 要素は、ネストできます (再帰的)。つまり、キャッシュしたいリレーションシップ要素をすべて表す、ツリーを指定できます。
このツリー構造をサポートするため、@ejbgen:relationship-caching には id および parent-id という 2 つの属性があります。これらの属性はどの XML にも対応しません。単に、これらを使うとツリー構造が指定できるというだけです。
たとえば、キャッシング要素 A に子要素 B および C が必要な場合、A のための id (たとえば「root0」) と、その名前に等しい B および C の parent-id を指定するだけですみます。
図 10-5 で、リレーションシップ キャッシングの指定を説明します。
図10-5 リレーションシップ キャッシングの指定
* @ejbgen:relationship-caching-element
* caching-name = cacheMoreBeans
* cmr-field = employee
* group-name = emp-group
* id = A
*
* @ejbgen:relationship-caching-element
* caching-name = cacheMoreBeans
* cmr-field = employee_ssn
* group-name = emp-group
* parent-id = A
*
* @ejbgen:relationship-caching-element
* caching-name = cacheMoreBeans
* cmr-field = employee_zip
* group-name = emp-group
* parent-id = A
関係
一方向の関係は、関係タグの最初の 2 つのパラメータのみ (CMR_field や joint table はなし) を指定することで実現します。
多対多の関係では、少なくとも 2 つのカラムを含む、追加のテーブル (パラメータ「joint table」) を指定する必要があります。これらのカラムの名前は、結合される 2 つの Bean の外部キーを含むカラムの名前に一致している必要があります。
ローカル インタフェースを使用するように関係を更新する
PFD2 より前に公開された EJB 2.0 仕様のバージョンに基づく EJB を使用している場合は、更新が必要です。PFD2 では、関係はリモート インタフェースではなく、ローカル インタフェースに基づいている必要があります。EJB のアップグレードを行うために必要な手順は次のとおりです。
- ローカル ホーム インタフェースの JNDI 名を追加します。
@ejbgen:jndi-name
remote = AccountHome
local = AccountLocalHome
- ローカル ホーム インタフェース上に置きたいすべてのメソッドに @ejbgen:local-method タグを追加します。1 つのメソッドが @ejbgen:local-method と @ejbgen:remote-method の両方を持つことが可能です。
- コンテナ管理の関係 (CMR) アクセス メソッドの戻り値の型を、EJB オブジェクトの戻り値の型に変更します(複数の値を持つ CMR フィールドは集合なので、これは単一の値を持つ CMR フィールドのみに適用されます。これらの集合にローカル EJB オブジェクトが含まれることに留意してください)。
/**
* @ejbgen:cmr-field
*
* @ejbgen:remote-method
* @ejbgen:local-method
*/
abstract public LocalCustomer getCustomer();
タグの継承
EJBGen 2.0 の主要な機能の 1 つに、タグの継承があります。EJBGen の注釈は、Java での場合と同じようにして継承されます。たとえば、図 10-6 に示すように基本クラス BaseAccount の AccountEJB という名前が付けられた EJB があるとします。
図10-6 タグの継承
/**
* @ejbgen:jndi-name
* remote="BaseRemote"
*/
public class BaseAccount implements EntityBean {
// ...
}
ここで、EJB クラスを定義します。
/**
* @ejbgen:entity
* ejb-name = containerManaged
* table-name = ejbAccounts
* data-source-name = examples-dataSource-demoPool
*
* Note that we inherit the JNDI name defined in BaseAccount
*/
public class AccountEJB extends BaseAccount {
// ...
属性の継承
属性も継承できます。これは、多くの用途が考えられる、極めて強力な機能です。たとえば、図 10-7 で示すように、すべての EJB に max-beans-in-cache などの共通の設定を定義できます。
図10-7 属性の継承
\
/**
* @ejbgen:entity
* max-beans-in-cache = 300
*/
public class BaseAccount implements EntityBean {
// ...
}
この後、次のようにエンティティ Bean を定義します。
/**
* @ejbgen:entity
* ejb-name = containerManaged
* table-name = ejbAccounts
* data-source-name = examples-dataSource-demoPool
*
* // 属性 max-beans-in-cache = 300 を自動的に継承
*/
public class AccountEJB extends BaseAccount {
// ...
もちろん、継承した値を修正することも可能です。たとえば、特定の Bean について、max-beans-in-cache のデフォルト値を 300 から 400 に変更できます。
/**
* @ejbgen:entity
* ejb-name = containerManaged
* table-name = ejbAccounts
* data-source-name = examples-dataSource-demoPool
* max-beans-in-cache = 400
*
* // 上の設定で基本クラスの定義内容がオーバーライドされる
*/
public class AccountEJB extends BaseAccount {
// ...
Ant タスク
スケルトン デプロイメント記述子を作成するときに、WebLogic Ant ユーティリティを使用できます。Ant ユーティリティは WebLogic Server 配布キットと共に出荷されている Java クラスです。Ant タスクによって、EJB を含むディレクトリが調べられ、そこに置かれているファイルを基にデプロイメント記述子が作成されます。Ant ユーティリティは、個別の EJB に必要なコンフィグレーションやマッピングに関する情報をすべて備えているわけではないので、Ant ユーティリティによって作成されるスケルトン デプロイメント記述子は不完全なものです。Ant ユーティリティでスケルトン デプロイメント記述子を作成した後で、テキスト エディタ、XML エディタ、または Administration Console を使ってデプロイメント記述子を編集し、EJB のコンフィグレーションを完全なものにしてください。
Ant ユーティリティを使用してのデプロイメント記述子の作成については、『WebLogic Server アプリケーションのデプロイメント』の「デプロイ用ツール」を参照してください。
appc
appc コンパイラは、EJB および JSP を WebLogic Server にデプロイするのに必要なクラスを生成し、コンパイルします。また、個別のモジュール レベルとアプリケーション レベルの両方で、現在の仕様に準拠しているかどうかデプロイメント記述子を検証します。アプリケーション レベルのチェックでは、個別のモジュールに対するアプリケーション レベルのデプロイメント記述子のチェックと、モジュール全体の検証チェックが行われます。
appc の構文
appc の実行には、次の構文を使用します。
prompt>java weblogic.appc [options] <ear, jar, or war file or directory>
appc Options
利用できる appc オプションは次のとおりです。
オプション
|
説明
|
-print
|
標準の使い方メッセージを出力する。
|
-version
|
appc のバージョン情報を出力する。
|
-output <file>
|
代替的な出力アーカイブまたはディレクトリを指定する。これが設定されていないと、出力はソース アーカイブまたはディレクトリに置かれる。
|
-forceGeneration
|
EJB および JSP クラスを強制的に生成する。このフラグを使用しない場合、クラスが再生成されないことがある (必要ないと判断された場合)。
|
-lineNumbers
|
生成されたクラス ファイルに行番号を追加し、デバッグを支援する。
|
-basicClientJar
|
EJB 用に生成されたクライアント JAR のデプロイメント記述子を含まない。
|
-idl
|
EJB リモート インタフェース用の IDL を生成する。
|
-idlOverwrite
|
既存の IDL ファイルを常に上書きする。
|
-idlVerbose
|
IDL 生成についての詳細な情報を表示する。
|
-idlNoValueTypes
|
値タイプ、およびそれを含むメソッドと属性を生成しない。
|
-idlNoAbstractInterfaces
|
抽象インタフェース、およびそれを含むメソッドと属性を生成しない。
|
-idlFactories
|
値タイプ用にファクトリ メソッドを生成する。
|
-idlVisibroker
|
Visibroker 4.5 C++ と多少の互換性を持つ IDL を生成する。
|
-idlOrbix
|
Orbix 2000 2.0 C++ と多少の互換性を持つ IDL を生成する。
|
-idlDirectory <dir>
|
IDL ファイルを作成するディレクトリを指定する (デフォルトでは、対象ディレクトリまたは JAR)。
|
-idlMethodSignatures <>
|
IDL コードを生成するトリガとして使用されるメソッド シグネチャを指定する。
|
-iiop
|
EJB 用に CORBA のスタブを生成する。
|
-iiopDirectory <dir>
|
IIOP のスタブ ファイルを記述するディレクトリを指定する (デフォルトでは、対象ディレクトリまたは JAR)。
|
-keepgenerated
|
生成された .java ファイルを保持する。
|
-compiler <javac>
|
使用する Java コンパイラを選択する。
|
-g
|
デバッグ情報をクラス ファイルにコンパイルする。
|
-O
|
最適化を有効にしてコンパイルする。
|
-nowarn
|
警告なしでコンパイルする。
|
-verbose
|
冗長情報を出力してコンパイルする。
|
-deprecation
|
非推奨となった呼び出しについて警告する。
|
-normi
|
Symantec の sj にフラグを渡す。
|
-J<option>
|
Java 実行時にフラグを渡す。
|
-classpath <path>
|
コンパイル中に使用するクラスパスを選択する。
|
-advanced
|
高度な使用オプションを出力する。
|
-convertDD
|
デプロイメント記述子を最新バージョンに更新しようとする。
|
wlappc Ant タスク
appc コンパイラの呼び出しには、次の Ant タスクを使用できます。
<taskdef name="wlappc" classname="weblogic.ant.taskdefs.j2ee.Appc"/>
appc および EJB
weblogic.appc は、以下の EJB 関連機能を実行します。
- EJB 用の WebLogic Server コンテナ クラスを生成します。
- すべての EJB クラスおよびインタフェースが EJB 仕様に準拠しているかどうかをチェックします。
- 潜在的なコンフィグレーション上の問題がないかデプロイメント記述子をチェックします。たとえば、ejb-jar.xml で cmp フィールドが宣言されていれば、appc は、カラムが weblogic-cmp-rdbms.xml デプロイメント記述子にマップされているかどうかを検証します。
- RMI コンパイラを使用して各 EJB コンテナ クラスを実行し、スタブとスケルトンを動的に生成するのに必要な RMI 記述子を作成します。
appc は、デフォルトで javac をコンパイラとして使用します。パフォーマンスを向上させるには、コマンドライン -compiler フラグまたは Administration Console を使用して別のコンパイラ (Symantec の sj など) を指定します。「[コンパイラ オプション] のコンフィグレーション」を参照してください。
weblogic-ejb-jar.xml のパブリック バージョンの場所については、「weblogic-ejb-jar.xml デプロイメント記述子」を参照してください。weblogic-cmp-rdbms-jar.xml のパブリック バージョンの場所については、「weblogic-cmp-rdbms-jar.xml デプロイメント記述子」を参照してください。
appc の利点
appc ツールの利点は以下のとおりです。
- 個々のモジュールを別々にコンパイルして、事後に EAR として結合するのではなく、アプリケーション全体をコンパイルできる柔軟性。
- EAR コンパイル中に WebLogic Server がすべてのモジュールにアクセスできることによる、すべてのモジュールにわたる検証チェック、およびさまざまなモジュールに対するアプリケーションレベルのデプロイメント記述子検証。
これまでは、.ear ファイル内のすべてのモジュールをコンパイルする場合、ユーザは .ear の個々のコンポーネントを抽出し、適切なコンパイラ (jspc または ejbc) を手動で実行して、デプロイメント用モジュールを準備しなければなりませんでした。appc はこのプロセスを自動化し、従来はできなかった追加の検証チェックをデプロイメント前に実行します。
- appc のエラーを簡単に特定して修正できる。
コマンド ラインで appc を実行中にエラーが発生すると、エラー メッセージが表示され、appc が終了します。
それに対して、コンパイルをデプロイメント時に行うことにした場合、コンパイル エラーが発生すると、サーバはデプロイメントが失敗しても作業を続けます。デプロイメントの失敗の原因を特定するには、サーバ出力を調べ、問題を修正し、再デプロイする必要があります。
- デプロイメントの前に appc を実行すると、Bean のコンパイル時間を短縮できる。
たとえば、.jar ファイルを 3 つのサーバのクラスタにデプロイする場合、.jar ファイルが各サーバにコピーされてデプロイされます。.jar ファイルがコンパイルされていない場合、各サーバは、デプロイメント時にファイルをコンパイルする必要があります。
Builder
WebLogic Builder は、J2EE アプリケーション モジュールを作成し、そのデプロイメント記述子を作成および編集して、それを WebLogic Server インスタンスにデプロイするためのグラフィカル ツールです。
WebLogic Builder には、アプリケーションのデプロイメント記述子 XML ファイルを編集するためのビジュアル編集環境が用意されています。WebLogic Builder では、これらの XML ファイルをビジュアルに編集しながら参照できるので、テキストによる編集は必要ありません。
WebLogic Builder では、次の開発タスクを行うことができます。
- J2EE モジュール用のデプロイメント記述子ファイルの生成
- モジュールのデプロイメント記述子ファイルの編集
- デプロイメント記述子ファイルのコンパイルおよび検証
- J2EE モジュールのサーバへのデプロイ
WebLogic Builder は、WebLogic Builder のマニュアルで詳細に説明されています。特に「EJB の処理」という節が有用でしょう。
DDConverter
DDConverter は、以前のバージョンの EJB デプロイメント記述子を本バージョンの WebLogic Server に準拠した EJB デプロイメント記述子に変換するコマンド ライン ツールです。WebLogic Server EJB コンテナは、EJB 1.1 および EJB 2.0 文書型定義 (DTD) を含む EJB 1.1 および EJB 2.0 仕様をサポートしています。各 WebLogic Server EJB デプロイメントには、以下のファイルの標準デプロイメント記述子が含まれています。
- ejb-jar.xml
J2EE 固有のEJB デプロイメント記述子を含む XML ファイル。
- weblogic-ejb-jar-.xml
WebLogic 固有のEJB デプロイメント記述子を含む XML ファイル。
- weblogic-cmp-rdbms-jar.xml
WebLogic 固有のコンテナ管理による永続性 (CMP) デプロイメント記述子を含む XML ファイル。
DDConverter の変換オプション
DDConverter コマンドライン ツールには、次の変換オプションがあります。
- 以前のバージョンの WebLogic Server の Bean を変換します。
- 以前のバージョンの EJB 仕様の CMP および CMP 以外の Bean を変換します。
次の表は、DDconverter ツールの各種変換オプションのリストです。
表10-1
DDConverter ツールの変換オプション
|
WebLogic Server
|
CMP 以外のEJB
|
EJB CMP
|
変換前 変換後
|
変換前 変換後
|
変換前 変換後
|
WebLogic Server 4.5 - WebLogic Server 8.1
|
注意 1 参照
|
EJB CMP 1.0 - EJB CMP 1.1
注意: EJB CMP 1.0 を EJB CMP 1.1 に変換する際には、DDConverter のコマンドライン オプション -EJBVer を使用します。このオプションの内容については、「DDConverter のオプション」を参照してください。
|
WebLogic Server 4.5 - WebLogic Server 8.1
|
EJB 1.1 - EJB 2.0
|
EJB CMP 1.0 - EJB CMP 2.0
|
WebLogic Server 5.x - WebLogic Server 8.1
|
EJB 1.1 - EJB 2.0
|
注意: WebLogic Server 5.x CMP 1.1 Bean と WebLogic Server 8.1 CMP 1.1 Bean は異なるものですが、WebLogic Server 5.1 CMP 1.1 Bean はソースコードを変更することなく WebLogic Server 8.1 上で動きます。
|
WebLogic Server 6.x - WebLogic Server 8.1
|
EJB 1.1 - EJB 2.0
|
EJB CMP 1.1 - EJB CMP 2.0
|
WebLogic Server 7.0 - WebLogic Server 8.1
|
EJB 1.1 - EJB 2.0
|
EJB CMP 1.1 - EJB CMP 2.0
|
注意: EJB 1.0 の非 CMP を EJB 1.1 の非 CMP に変換する必要はありません。 非CMP EJB 1.1 のデプロイメント記述子は、非 CMP EJB 2.0 のデプロイメント記述子と同じだからです。
DDConverter を使用した後は必ず Bean を再コンパイルします。weblogic.ejbc を使用し、改めて生成した JAR ファイルをデプロイすることをお勧めします。Bean を再コンパイルすることにより、そのコードが確実に EJB 仕様に準拠するようになり、また、サーバ起動時の再コンパイル処理を省略できるので時間を短縮できます。
- WebLogic Server 4.5 EJB 1.0 Bean を WebLogic Server 8.1 EJB 1.1 Bean に変換する場合、DDConverter への入力は WebLogic 4.5 デプロイメント記述子のテキストです。WebLogic 8.1 デプロイメント記述子だけを含む JAR ファイルが出力されます。weblogic-appc を起動してソースコードに何らかの変更を加える必要があるかどうかを確かめ、「DDConverter による EJB の変換」の手順に従います。DDConverter ツールの変換オプションの表の最初の行を参照してください。
- WebLogic Server 4.5 EJB 1.1 Bean を WebLogic Server 8.1 EJB 2.0 Bean に変換する場合、DDConverter への入力は WebLogic Server 4.5 デプロイメント記述子のテキストです。WebLogic 8.1 デプロイメント記述子だけを含む JAR ファイルが出力されます。weblogic-appc を起動してソースコードに何らかの変更を加える必要があるかどうかを確かめ、「DDConverter による EJB の変換」の手順に従います。DDConverter ツールの変換オプションの表の 2 行目を参照してください。
- WebLogic Server 8.1 の下位互換性により、ソースコードを変更することなく WebLogic Server 5.x EJB 1.1 Bean を WebLogic Server 8.1 にデプロイできます。WebLogic Server 8.1 は、以前のバージョンの WebLogic Server のBean を検出し、再コンパイルし、デプロイします。ただし、WebLogic Server 5.x EJB 1.1 Bean を WebLogic Server 8.1 EJB 2.0 Bean にアップグレードする場合は、DDConverter の使用をお勧めします。
WebLogic Server 5.x EJB 1.1 Bean を WebLogic Server 8.1 EJB 2.0 Bean に変換する場合、DDConverter への入力は WebLogic Server 5.1 JAR ファイルです。このファイルには、デプロイメント記述子ファイルとクラス ファイルが含まれます。ここでは、WebLogic 8.1 デプロイメント記述子ファイルと必要なクラス ファイルすべてが含まれた1 つの JAR ファイルに出力が格納されます。DDConverter ツールの変換オプションの表の 3 行目を参照してください。
ソースコードをほとんど、または、まったく変更せずに、CMP 以外の Bean を EJB 2.0 Bean に変換することができます。これを行うためには、output.jar ファイルに対し weblogic.appc を実行し、生成された JAR ファイルをデプロイします。CMP Bean の場合、「DDConverter による EJB の変換」の手順に従い、ソースコードに変更を加える必要があります。
DDConverter による EJB の変換
WebLogic Server で使用するために以前のバージョンの EJB を変換するには、次の手順に従います。
- 「DDConverter の構文」に示したコマンド ライン形式に従って、EJB のデプロイメント記述子を DDConverter に入力します。
JAR ファイルが出力されます。
- その JAR ファイルから XML デプロイメント記述子を抽出します。
- JavaSoft EJB 仕様に従って、ソースコードを変更します。
- weblogic.appc を使用して JAR ファイルを作成し、抽出した XML デプロイメント記述子とともに変更済みの Java ファイルをコンパイルします。
- JAR ファイルをデプロイします。
DDConverter の構文
prompt> java weblogic.ejb20.utils.DDConverter [options] file1 [file2...]
DDConverter の引数
DDConverter は、file1 [file2...] といった引数をとります。このファイルは次のどちらかになります。
- EJB 1.0 準拠のデプロイメント記述子を含むテキスト ファイル
- EJB 1.1 準拠のデプロイメント記述子を含む JAR ファイル
DDConverter は、テキスト デプロイメント記述子の EJB の beanHomeName プロパティを使用して、新規の ejb-name 要素を出力される ejb-jar.xml ファイルで定義します。
DDConverter のオプション
次の表は、DDConverter のコマンドライン オプションのリストです。
オプション
|
説明
|
-d destDir
|
JAR ファイルが出力される送り先ディレクトリを指定する。
このオプションは必須。
|
-c jar name
|
ソース ファイルのすべての Bean を組み合わせる JAR ファイルを指定する。
|
-EJBVer output EJB version
|
2.0 または 1.1 などの出力 EJB バージョン番号を指定する。デフォルトは 2.0。
|
-log log file
|
ddconverter.log の代わりにログ情報の格納先となるファイルを指定する。
|
-verboseLog
|
変換に関して ddconverter.log に格納する補足情報を指定する。
|
-help
|
DDConverter ツールで使用可能なすべてのオプションのリストを出力する。
|
DDConverter の例
次の例では、WebLogic Server 5.x EJB 1.1 Bean を WebLogic Server 8.1 EJB 2.0 Bean に変換します。(サブディレクトリ destDir に JAR ファイルが作成されます)。
prompt> java weblogic.ejb20.utils.DDConverter -d destDir Employee.jar
ここでは、Employee Bean が WebLogic Server 5.x EJB 1.1 JAR ファイルです。
DDInit
DDInit は、ステージング ディレクトリのコンテンツをテストし、EJB クラスに基づいて標準 J2EE と WebLogic 固有のデプロイメント記述子を生成します。
DDInit Ant タスク
weblogic.ant.taskdefs.ejb20.DDInit は、エンタープライズ JavaBean 2.0 のデプロイメント記述子を作成します。
weblogic.ant.taskdefs.ejb.DDInit は、エンタープライズ JavaBean 1.1 のデプロイメント記述子を作成します。
Deployer
weblogic.Deployer コマンドライン ツールは、WebLogic Server デプロイメント API にコマンドライン インタフェースを提供する、Java ベースの開発ツールです。このツールは、コマンドライン、シェル スクリプト、または Java 以外の自動化された環境からデプロイメントを開始する必要がある管理者および開発者向けに開発されました。
weblogic.Deployer の使い方とコマンド リストについては、「Deploying Using weblogic.Deployer」を参照してください。
ejbc
注意: ejbc は非推奨です。代わりに appc を使用してください。「appc」を参照してください。
EJB コンテナ クラスの生成とコンパイルには、weblogic.ejbc ツールを使用します。EJB コンテナにデプロイするために JAR ファイルをコンパイルする場合は、weblogic.ejbc を使用して、コンテナ クラスを生成する必要があります。
weblogic.ejbc では次の処理を実行します。
- 指定した JAR ファイルに EJB クラス、インタフェース、および XML デプロイメント記述子を配置します。
- すべての EJB クラスおよびインタフェースが EJB 仕様に準拠しているかどうかをチェックします。
- EJB 用の WebLogic Server コンテナ クラスを生成します。
- RMI コンパイラを使用して各 EJB コンテナ クラスを実行して、クライアントサイドの動的プロキシとサーバサイド バイト コードを作成します。
注意: ejbc は、JAR ファイルおよび展開ディレクトリの両方を入力として受け付けます。
出力 JAR ファイルを指定すると、ejbc は、生成するファイルをすべて JAR ファイルに入れます。
ejbc は、デフォルトで javac をコンパイラとして使用します。パフォーマンスを向上させるには、-compiler フラグまたは Administration Console を使用して別のコンパイラ (Symantec の sj など) を指定します。「[コンパイラ オプション] のコンフィグレーション」を参照してください。
WebLogic 固有の XML デプロイメント記述子ファイルの複数バージョンが Web サイト上で公開され利用可能ですが、weblogic.ejbc で使用される内部バージョンは製品に同梱されています。
weblogic-ejb-jar.xml および weblogic-cmp-rdbms-jar.xml のパブリック バージョンの場所については、「文書型定義および DOCTYPE ヘッダ情報」を参照してください。
ejbc の利点
ejbc ツールの利点は以下のとおりです。
- ejbc のエラーを簡単に特定して修正できる。
コマンド ラインで ejbc を実行中にエラーが発生すると、エラー メッセージが表示され、ejbc が終了します。
それに対して、コンパイルをデプロイメント時に行うことにした場合、コンパイル エラーが発生すると、サーバはデプロイメントが失敗しても作業を続けます。デプロイメントの失敗の原因を特定するには、サーバ出力を調べ、問題を修正し、再デプロイする必要があります。
- デプロイメントの前に ejbc を実行すると、Bean のコンパイル時間を短縮できる。
たとえば、.jar ファイルを 3 つのサーバのクラスタにデプロイする場合、.jar ファイルが各サーバにコピーされてデプロイされます。.jar ファイルがコンパイルされていない場合、各サーバは、デプロイメント時にファイルをコンパイルする必要があります。
ejbc の構文
prompt> java weblogic.ejbc [options] <source directory or jar file>
<target directory or jar file>
注意: 出力先が JAR ファイルの場合、出力 JAR には入力 JAR と異なる名前を付けなければなりません。
ejbc の引数
引数
|
説明
|
<source directory or jar file>
|
コンパイル済み EJB クラス、インタフェース、および XML デプロイメント ファイルを格納する展開ソース ディレクトリまたは JAR ファイルを指定する。
|
<target directory or jar file>
|
ejbc が出力 JAR を格納する送り先 JAR ファイルまたはデプロイメント ディレクトリを指定する。出力 JAR ファイルを指定した場合、ejbc は元の EJB クラス、インタフェース、および XML デプロイメント ファイルだけでなく、ejbc が生成する新規コンテナ クラスも JAR に格納する。
|
ejbc のオプション
オプション
|
説明
|
-help
|
コンパイラで使用可能なすべてのオプションのリストを出力する。
|
-version
|
ejbc のバージョン情報を出力する。
|
-basicClientJar
|
EJB 用に生成されたクライアント JAR のデプロイメント記述子を含まない。
|
-dispatchPolicy <queueName>
|
WebLogic Server で実行スレッドを取得するために EJB が使用するコンフィグレーション済み実行キューを指定する。詳細については、「実行キューによるスレッド使用の制御」を参照。
|
-forceGeneration
|
EJB クラスを強制的に生成する。このフラグを使用しない場合、クラスが再生成されないことがある (必要ないと判断された場合)。
|
-idl
|
リモート インタフェース用に CORBA インタフェース定義言語 (IDL) を生成する。
|
-idlNoValueTypes
|
値タイプ、およびそれを含むメソッドと属性を生成しない。
|
-idlFactories
|
値タイプ用にファクトリ メソッドを生成する。
|
-idlVisibroker
|
Visibroker 4.5 C++ と多少の互換性を持つ IDL を生成する。
|
-idlOrbix
|
Orbix 2000 2.0 C++ と多少の互換性を持つ IDL を生成する。
|
-idlOverwrite
|
既存の IDL ファイルを上書きする。
|
-idlVerbose
|
IDL の生成中に verbose 情報を表示する。
|
-idlDirectory <dir>
|
ejbc が IDL ファイルを生成するディレクトリを指定する。デフォルトでは、ejbc はカレント ディレクトリを使用する。
|
-idlMethodSignatures <>
|
IDL コードを生成するトリガとして使用されるメソッド シグネチャを指定する。
|
-iiop
|
EJB 用に CORBA のスタブを生成する。
|
-iiopDirectory <dir>
|
IIOP のスタブ ファイルを記述するディレクトリを指定する (デフォルトでは、対象ディレクトリまたは JAR)°
|
-J
|
weblogic.ejbc のヒープ サイズを指定する。次のように指定する。 java weblogic.ejbc -J-mx256m input.jar output.jar
|
-keepgenerated
|
コンパイル中に生成される中間 Java ファイルを保存する。
|
-compiler <compiler name>
|
使用する ejbc のコンパイラを設定する。
|
-normi
|
RMI スタブの生成を中止する場合に Symantec の Java コンパイラ sj に渡される。それ以外の場合、sj は EJB には不必要な独自の RMI スタブを作成する。
|
-classpath <path>
|
コンパイル時に使用する CLASSPATH を設定する。これにより、システムまたはシェル CLASSPATH はオーバーライドされる。
|
-convertDD
|
デプロイメント記述子を最新バージョンに更新しようとする。
|
ejbc の例
次の例では、c:¥%SAMPLES_HOME%¥server¥examples¥src¥examples¥ejb20¥basic¥containerManaged¥build 内の入力 JAR ファイルに対して javac コンパイラを使用します。出力 JAR ファイルは、c:¥%SAMPLES_HOME%¥server¥config¥examples¥applications 内に置かれます。
prompt> java weblogic.ejbc -compiler javac c:¥%SAMPLES_HOME%¥server¥examples¥src¥examples¥ejb20¥basic¥containerManaged¥build¥ejb20_basic_containerManaged.jar c:%SAMPLES_HOME%¥server¥config¥examples¥ejb_basic_containerManaged.jar
次の例では、JAR ファイルが EJB 1.1 仕様に準拠しているかどうかをチェックして、WebLogic Server コンテナ クラスを生成しますが、RMI スタブは生成しません。
prompt> java weblogic.ejbc -normi c:%SAMPLES_HOME%¥server¥src¥examples¥ejb20¥basic¥containerManaged¥build¥ejb20_basic_containerManaged.jar