1

commonj.work.WorkManagerを使用して、いくつかのクエリを並行して処理しています。インターフェイスを実装する一連のdaoクラスがあり、runメソッドのメソッドを実行するWorkの実装があります。この設定により、作業APIで期待するとおりにデータを返すことができます。

私は今エラー状況を処理しようとしています:-daoで発生した例外-クエリはwaitForAllが許可するよりも長くかかります

WorkItem.getResultがまだ処理中のクエリに対してnullを返すことに気づきました。ArrayListにdaoオブジェクトのインスタンスがまだあるので、そこからパラメーターと設定を取得できます。WorkItemからこれを取得できるはずですが、もっと良い方法はありますか?

また、スローされた例外を取得できる唯一の方法は、Workを実装するクラスに例外を格納し、それにアクセサーメソッドを提供することです。繰り返しますが、もっと良い方法があるに違いないと思います。

これは、EJB 3、WS機能パックなしのWebsphere 6.1で実行されています(したがって、Java EE 5はありません)。

4

1 に答える 1

1

質問は1年前のものですが、誰かがこの質問に遭遇した場合に備えて、最新情報を提供したいと思います。Workを実装する私のクラスには、例外を格納するメンバー属性があります。これが問題になると思っていたのですが、実はかなりうまくいきました。スレッド化された呼び出しでスローされた例外は、実行中の他のスレッドに影響を与えないはずです。すべての作業が完了したら、例外を評価し、問題に応じてアクションを実行します。

于 2012-08-15T19:52:00.223 に答える