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 インターフェイスで定義されたいくつかのメソッドを呼び出すだけだからです。また、クライアント コードがサーバーが使用するプロトコルにどのように依存するか想像もつきません。
明確な説明と簡単な例を教えてください。
ありがとう :)