stubはサーバー側で何をしますか?そしてskeletonとは何ですか?
これはウィキペディアの図です。サーバーマシンとクライアントマシンの両方にstubをインストールしました。スタブがクライアント側のネットワーキングに役立つことを理解していますが、サーバー側でスタブは何をしますか?
また、上の図でスケルトンは何を意味していますか?
次の写真を見てください:
簡単に言うと、スタブとスケルトンは、Webサービス設定の対応物です。 Skeleton belongs to service provider side
およびstub belongs to receiver side
。下位レベルでは、スタブとスケルトンは互いに通信します。
クライアント側から、ビジネスオブジェクトはスタブオブジェクトと通信し、スタブはメッセージから責任を持ってWebサービスを呼び出します。呼び出しが完了すると、サービスプロバイダー側では、スケルトンがスタブの並列オブジェクトであり、要求メッセージを受信してそれを理解し、サービス側のビジネスオブジェクトに情報を渡します。
スタブとスケルトンはどちらも複雑さを隠しています。
スタブは、単純な呼び出しメカニズムを呼び出し元に提示するために、パラメーターのシリアル化とネットワークレベルの通信を隠します。
スケルトンは、実際のリモートオブジェクト実装への呼び出しをディスパッチします。
http://docs.Oracle.com/javase/7/docs/platform/rmi/spec/rmi-Arch2.html
あなたがしなければならない最初のことはスケルトンを忘れることです。それらは13年間廃止されています。
stubは、リモートオブジェクトがエクスポートされるときに作成されます。その後、レジストリにバインドされ、ルックアップを介してクライアントによって取得されるか、別のリモートメソッドの結果としてクライアントに直接返されます。
次に、クライアントは、関連するリモートインターフェースの実装としてスタブを使用して、RMIのネットワーク部分を実行し、サーバーJVMと対話して、クライアントがスタブで呼び出しているリモートオブジェクトの同じメソッドを最終的に呼び出します。
「スタブ」と「スケルトン」を理解するための鍵は、 マーシャリング の概念を理解することです。
rmiregistry は単なる検索機能です。これ以上何もない。サーバーがbind()
を実行すると、サーバーは rmiregistry で自身を「登録」します。クライアントがlookup()
を実行すると、サーバーに何が登録されているかを確認します。それ以上でもそれ以下でもありません。
「スケルトン」のような専門用語をあざ笑うことは意味がないと思います。必要に応じて、すべてを「スタブ」と呼ぶことができます。ポイントは、どちらもプロキシであり、どちらもMARSHALLINGを実行し、一方がクライアントの下に存在し(クライアントが呼び出す)、もう一方がサーバー上に存在する(スケルトンが実際のサーバーコードを呼び出す)ことです。
うまくいけば、私の説明と例があなたの助けになりました 別のリンク が助けられました(少なくとも少し)。
Stub:スタブとは、後でロードされるか、リモートに配置される、より長いプログラムの代わりとなる小さなプログラムルーチンです。
Skeletonリモートオブジェクトのスケルトンは、実際のリモートオブジェクト実装への呼び出しをディスパッチするサーバー側エンティティです。
リモートオブジェクトのスタブは、リモートオブジェクトのクライアントのローカル代表またはプロキシとして機能します。スタブは、単純な呼び出しメカニズムを呼び出し元に提示するために、パラメーターのシリアル化とネットワークレベルの通信を隠します。
または、1台のマシンで実行されているプログラムについて考えてみましょう。各メソッドはブランチです。メソッドをリモートマシンに移動すると、ブランチのみが切断され、通信のみを含むスタブが残ります。
ソース
リモートJVMでは、各リモートオブジェクトに対応するスケルトンがある場合があります。スケルトンは、実際のリモートオブジェクト実装への呼び出しをディスパッチします。
そして、スケルトンを最初の実装と見なします-呼び出し規約を満たし、部分的な操作を実行し、問題なく完了します。
フォーム Oracle