1

GlassFish サーバーのサーブレットからバックグラウンド タスクを起動する必要があります。WorkManager は、これを実現する Java EE 準拠の方法であると考えました。

以前は、Glassfish v2 ではかなりうまく機能していました。静的メソッド WorkManagerFactory.createWorkManager(String poolName) を使用して、startWork(Work) で Work を開始するために使用できる WorkManager を提供しました。

GlassFish v3.0.1 では API が変更されました。WorkManagerFatory には静的な createWorkManager() メソッドがなくなり、createWorkManager はリソース アダプタ名と ClassLoader の 2 つの追加パラメータを取ります。私は混乱しています: WorkManager を取得するにはどうすればよいですか??

WorkManagerFactory を自分でインスタンス化して createWorkManager() を呼び出そうとしましたが、次の例外が発生します。

com.sun.enterprise.connectors の com.sun.enterprise.connectors.work.WorkManagerFactory.getConnectorRuntime(WorkManagerFactory.java:202) で、リソース アダプタ [ jmsra ] java.lang.NullPointerException のワーク マネージャのインスタンス化中にエラーが発生しました。 .work.WorkManagerFactory.createWorkManager(WorkManagerFactory.java:122)

この件に関する利用可能なドキュメントは、控えめに言っても非常に少ないです...そのため、どんな助けも大歓迎です。

4

1 に答える 1

1

結局、Spring の TaskExecutor API を使用することになりました。これには、使用する実装を選択できるという利点があります。魅力のように機能します。

インターフェイスは WorkManager に十分近いので、コードにほとんど変更を加える必要はありませんでした。

于 2010-12-10T12:13:26.093 に答える