0
Context ic = new InitialContext();
Object o = ic.lookup("EJB");
AdviceHome home = (AdviceHome) PortableRemoteObject.narrow(o, AdviceHome.class);

上記は Narrow Cast を使用したコードです。私の本では、ナロー キャストを使用して、サーバーが IIOP を使用していると想定していると説明しています (ただし、サーバーは実際には RMI を使用しているだけです)。

そして、この本はまだ言う:

クライアント コードはベンダーに依存しません! 言い換えると、IIOP を使用するサーバーに Bean を再デプロイするとクライアントが破損するため、narrow を使用しない場合、移植可能なアプリはありません。

わからない点が2つあります。

1) IIOP プロトコルは単純な奇数 RMI プロトコルよりも大きい: つまり、小さなオブジェクトを大きなオブジェクトにキャストしましたよね?

2) クライアントのコードがそれほど壊れる理由がよくわかりません。この場合、IIOP を使用するサーバーがクライアントでコードを壊すのはなぜですか? クライアントは、EJBObject インターフェイスで定義されたいくつかのメソッドを呼び出すだけだからです。また、クライアント コードがサーバーが使用するプロトコルにどのように依存するか想像もつきません。

明確な説明と簡単な例を教えてください。

ありがとう :)

4

1 に答える 1

0

このnarrow方法は、ダウンキャストに似ています。ドキュメンテーションには、プレーンな RMI を実行するときに常に機能する場合でも、ダウンキャストを使用しないでくださいと記載されています。したがって、この単語の意味はnarrow型理論的な意味であり、一般的な型から特定の型に絞り込むことPortableRemoteObjectです。

于 2012-04-29T08:08:40.177 に答える