私は複数のEJBモジュールを持っています。各モジュールはデータベースにいくつかのディレクトリやファイルを作成する必要があります。EJBモジュールの起動時にいくつかのコードを実行する方法
@Startup @singleton EJBを作成すると、私はその仕事をしますが、それは正しい方法でしょうか? ejbは起動時にだけ使用してもメモリに残ります
私は複数のEJBモジュールを持っています。各モジュールはデータベースにいくつかのディレクトリやファイルを作成する必要があります。EJBモジュールの起動時にいくつかのコードを実行する方法
@Startup @singleton EJBを作成すると、私はその仕事をしますが、それは正しい方法でしょうか? ejbは起動時にだけ使用してもメモリに残ります
はい、@Startupは@Statelessでは動作しないため、通常はスタートアップシングルトンBeanを使用して初期化を行うのが正しい方法です。
データベースにデータを挿入したい場合は、別のオプションは、persistence.xmlのでSQLスクリプトを実行するために、次のようになります。
<property name="javax.persistence.sql-load-script-source"
value="META-INF/sql/data.sql" />
これは明らかに、データベースを管理することができないという欠点を持っていますJavaコードを挿入します。詳細についてはこちらをご覧ください:http://docs.oracle.com/javaee/7/tutorial/persistence-intro005.htm
を使用すると、EJBの(とシングルトン)についての詳細を読みたい場合は、こちらをご覧ください:http://download.oracle.com/otn-pub/jcp/ejb-3.1-fr-eval-oth-JSpec/ejb-3_1-fr-spec.pdf
私はこの方法でそれをやりました。私はsqlファイルと他のスクリプト、jsonまたはプロパティファイルをmeta-infに持っていますが、persistence.xmlは別のアーカイブにあります。私は標準的な永続ユニット名を持っているので、エンティティマネージャを挿入して行ごとにファイルを読み込むネイティブクエリを実行することができます:このようにSQLクエリはモジュールとともに移動され、jdbc接続に制約はありません。パーシスタンスユニット名 –