2011-08-10 9 views
0

内からリモートインタフェースが同じ EJB-JARまたはEAR内からリモート@remoteインタフェースを呼び出して注入すると、アプリケーション・サーバーの使用RMI/RMI-IIOPになるだろうか?同じEJB-JARまたはEAR

また、アプリケーションサーバーは多くのインテリジェントで、@localインターフェイスを呼び出すかのようにローカルでこの呼び出しを実行しますか?

答えて

1

@localコールの参照渡しと@remote呼び出しが値渡しであるため、コンテナは本当に@localコールを行うべきではありません。ただし、コンテナは@remoteコールを最適化して、完全なRMI/IIOPネットワークスタックにヒットしないようにすることができます。 WebSphereがこのような「ローカル」最適化を行っていることを思い出して、私は他のベンダーと話すことができません。

[履歴:WebSphereの初期EJB3以前のバージョンでは、 "@localのように@remoteを作ってください"という道徳的な対応を可能にするオプションがありましたが、それ以降のバージョンではこれを提供していないと思います)

+0

'@ remote'と' @ local'の両方でセッションBeanに注釈をつけ、 '@ EJB' DIを使って同じEARの中から呼び出すとどうなりますか?この場合、App Serverの動作はどうなりますか? –

+0

これは、クライアントがアクセスする方法によって異なります。ローカルクライアントとリモートクライアントの2つのパスをEJBに作成しただけです。クライアントがローカルを使用している場合、ローカル動作を取得します。この2つのケースでクライアント側の注入がどのように見えるかはわかりません。自分で試したことはありません。 – djna

+0

@EJBで注入されるフィールドのタイプによって異なります。いずれかの味を注入することができるはずです。もちろん、呼び出し元と呼び出し先が参照渡しデータを変更しないように注意する必要があります。 –

関連する問題