2012-04-29 8 views
0
Context ic = new InitialContext(); 
Object o = ic.lookup("EJB"); 
AdviceHome home = (AdviceHome) PortableRemoteObject.narrow(o, AdviceHome.class); 

上記はNarrowキャストを使用するコードです。私の本では、サーバがIIOPを使用していると仮定するための狭いキャストの使用について説明しています(ただし、サーバは実際にRMIを使用しています)。EJB:サーバがIIOPプロトコルを使用する場合、ナローキャストはクライアントコードを破ることがない理由を説明してください。

そして、この本はまだ書かれています:

クライアントコードは、ベンダーに依存しないではありません! IIOPクライアントを中断します使用しないサーバ上 Beanを再デプロイするので

私は二つの点Iドンを持っているあなたは、狭い使用しない場合は、他の言葉では、あなたは は、ポータブルアプリを持っていません。

1)IIOPプロトコルは普通の奇数RMIプロトコルよりも大きいので、小さなオブジェクトを大きなオブジェクトにキャストしましたか?

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

明確な説明と簡単な例でお手伝いしてください。

おかげ:)

答えて

0

narrow方法は、ダウンキャストに類似しています。ドキュメントが述べることは、プレーンなRMIを実行するときに常に動作するとしても、ダウンキャストを使用しないことです。したがって、単語narrowの意味はタイプ理論上の意味であり、一般タイプPortableRemoteObjectから特定のタイプに絞り込まれます。

関連する問題