2

10 分ごとに実行されるバックグラウンド サービスがあります。

このサービスは、実行するジョブを DB にクエリし、ジョブに応じて (Class.forName() を使用して) 異なるビジネス ロジックを持つクラスをロードします。もちろん、それらは同じインターフェースを実装しています。

これらのクラスを SEAM コンポーネントとして宣言しましたが、entityManager または Logger を使用しようとすると NPE が発生します。

私自身の質問に答えると、これは Class.forName() が SEAM の注入メカニズムの下にあり、依存関係を注入する機会がないためだと思います。

クラスをロードした後、それらを自分で注入することで、おそらくそれを回避できます。それを行うより良い方法はありますか?

ありがとう!

4

2 に答える 2

2

EJB-Timer Service の使い方は確認しましたか?

別のリソース:

JBoss の時限サービスで Seam を使用することは可能ですか?

私は数日で似たようなことをしなければなりません。

あなたのために働いたコメントを残してください;-)

于 2010-08-23T13:34:49.027 に答える
1

を使用して、非シームクラスのすべてのシームコンポーネントを注入できます。

Component.getInstance("entityManager") //You can inject whatever you want.

ロガーを機能させるには、次のようにします

 private static final LogProvider log = Logging.getLogProvider(MyClass.class);
于 2010-08-24T11:35:51.307 に答える