0

ここで問題が発生しています。RMI経由Aでを呼び出すクライアントコードがあります。Bその後、JMSを介して実際の実装にキュー要求を送信しますC。しかし、の「アドレス」はわかりませんAA後でデータを返すことができるように、接続データを何らかの方法で保存する方法はありますか?

基本的には、B大量のリクエストがあり、これをリクエスターに同期する必要があるということです。どうやってするか?

例:

A:

...
    rmiB.HelloWorld("Sys");
...

B:

String HelloWorld(String s) {
    ...
   sendToJMS(s);
    ...
   return????
}

C:

String HelloWorldOnJMS(String aff) {
    return "aff+2"
}
4

3 に答える 3

1

を変更できない場合はA、結果が生成BされるまでブロックしC、RMIメソッドの結果としてその結果を同期的に返す必要があります。

したがって、問題は、に応答する方法よりも、どのようにC応答できるかB(または、これらのクラスターがあるように見えるため、「B」)にあるようですA

通常、このような同期呼び出しは、一時キューを作成し、それをメッセージの応答アドレスとして指定することにより、JMSを介してシミュレートされます。したがって、B一時キューを作成し、から結果を受け取るまでそのキューをブロックしてからC、応答の内容をに返しAます。

A私はあなたの状況を完全には理解していないかもしれませんが、他のアプローチでは–Bインターフェースの変更が必要になるようです。

于 2009-11-20T20:51:32.940 に答える
0

さて、AとBはすでにRMIロケーターを介して接続されているので、Aにサービスを登録させてから、Bにそのサービスを呼び出させてみませんか?

于 2009-11-20T20:12:10.087 に答える
0

JMSServiceへのRMIコール転送?ApacheCamelはまさにあなたが必要としているもののように聞こえます。この種のエンタープライズ統合を行うためのフレームワークです。

コンポーネントページには、RMIおよびJMS(およびその他の無数の)エンドポイントを設定する方法の例があります。次に、強力なDSLを使用して、あるエンドポイントから別のエンドポイントにメッセージを転送するルートを作成します。

于 2009-11-20T20:28:21.350 に答える