2013-01-21 5 views
7

実は、私は次のフローがあります。「巨大な操作」ボタンでは、Javaと非常に長い時間操作を管理する

  1. ユーザーのクリックを。
  2. RESTfulなサービスを呼び出します。
  3. 残りのサービスはEJBであるHugeOpServiceBeanを呼び出します。
  4. このEJBは、HugeOperationを行うようにJMSキューに指示します。
  5. このHugeOperationは、二つ以上の実装を持っているので、それは

(それは別の.earになり得ることを意味する)で実行されますのために待機しているすべてのMDBeanことができ、私はどのようにあなたたちを聞きたいですよこれらのMDBeanの「ステータス」を得ることができるようにしてください。

基本的には、各MDBeanはあるオブジェクト型のリストで何らかのメソッドを実行するので、calcのパーセントは簡単にする必要があります。私はこれを作るためにどのように、 RESTfulなサービスでアクセス可能です。

ありがとうございます。

答えて

2

MDBの消費と処理が処理されるので、それはすべてかどうかです。進捗状況の表示が複雑になり、進捗状況を更新するためにサブトランザクションが必要になります。私は、EJB内の複数のJMSメッセージの作業をchunnkに提案し、後で正常に消費されたJMSメッセージの進捗状況を監視します。 Patterns of Enterprise Integation

+0

MDBeanが異なる耳にある可能性があることを除いて、これは素晴らしいことです。互いを知るべきではありません。 MDBeansは変更対象のリストをコンパイルします(一般にMDBの耳に指定されています)ので、EJBに委譲できません。また、私のEJBは、どの耳が上がって聞くのかを知ることができません。この場合、どのパターンを提案できますか? – caarlos0

+0

@ caarlos0私は最初のMDBが他のMDBのためにチャンクの仕事をすることができると思います。 – ewernli

6

になり、これを処理するRESTfulな方法:

  1. 戻り、クライアントに「受理」HTTP 202ステータスコードは、最初の呼び出しの後、リクエストが成功したことを示すために、しかし、更なる処理があります必須。また、クライアントが 'ジョブ'のステータスを照会するために使用できる応答をURIとして提供することもできます。
  2. クライアントがジョブのステータスを照会するために呼び出すことができるエンドポイントを実装します。
  3. 操作が完了すると、上記2)のエンドポイントは、操作によって作成されたメインエンティティの実際のURIへの永続的なリダイレクトを発行します。
+0

を参照してください。 MDBeanのステータスを取得する方法を教えてください。私はこのようなことは一度もしませんでした... – caarlos0

+0

MDBのステータスを問い合わせたいとは思わないでしょう。代わりに、操作の最後に、後で他のEJBによって照会できる表にその状況を書き込むことができます。 – Perception

+0

@Perception私はOPが現在の操作のステータスについて話していると思います。だから取引後に書いたことは役に立たないようだ。 – SpaceTrucker

関連する問題