8

現在取り組んでいるプロジェクトにRMIを使用していて、複数のホストから単一のRMIレジストリにバインドしたいと考えています。

しかし、そうしようとすると、次のようなエラーが発生します

java.rmi.AccessException:Registry.Registry.bindは許可されていません。origin/192.168.0.9は非ローカルホストです

私はグーグルでそうしましたが、RMIはデフォルトでリモートホストのバインドを停止しているようですが、これをオーバーライドまたはバイパスする方法はありますか?

この問題を回避する方法について誰かが提案をいただければ幸いです。別のポリシーファイルを使用してセキュリティマネージャーをオーバーライドしようとしましたが、どれも機能していないようです。

4

5 に答える 5

7

制限を回避する方法がありますが、それはそれが何であるかです:回避策。とにかく、気軽に試してみてください。それは私たちのために働きます。

中央RMIレジストリを実行しているホストで、proxyRebindという1つのリモートメソッドだけでリモートオブジェクトをバインドする小さなサービスを実行します。このメソッドの実装は、中央レジストリで提供されたオブジェクトをバインドするだけです(レジストリはこのサービスと同じマシン上にあるため、これは失敗しません)。

他のすべてのホストは、このリモートオブジェクトを検索し、独自のリモートオブジェクトを使用してproxyRebindを呼び出すだけです。

これは、リモートでホストされているレジストリのルックアップが許可されているために機能します。リモートでホストされているレジストリへのバインドが許可されていないため、最初の試行は失敗しました。

これについてさらに明確にする必要がある場合はお知らせください。

/ RS

于 2009-05-19T20:07:35.830 に答える
2

2制限を回避する方法はありますが、それが回避策です。とにかく、気軽に試してみてください。それは私たちのために働きます。

中央RMIレジストリを実行しているホストで、proxyRebindという1つのリモートメソッドだけでリモートオブジェクトをバインドする小さなサービスを実行します。このメソッドの実装は、中央レジストリで提供されたオブジェクトをバインドするだけです(レジストリはこのサービスと同じマシン上にあるため、これは失敗しません)。

他のすべてのホストは、このリモートオブジェクトを検索し、独自のリモートオブジェクトを使用してproxyRebindを呼び出すだけです。

これは、リモートでホストされているレジストリのルックアップが許可されているために機能します。リモートでホストされているレジストリへのバインドが許可されていないため、最初の試行は失敗しました。

これについてさらに明確にする必要がある場合はお知らせください。

これは完全に機能します。注意すべきことは、以下を常に正しく設定することだけです。-Djava.rmi.server.hostname="ローカルホストIP"

于 2009-08-30T15:54:16.990 に答える
1

私はあなたの質問を誤解しているかもしれません、もしそうなら私に知らせてください。

Java RMIの使用経験は限られており、プロキシパターンを使用したデザインパターンクラスで使用しました。(教科書:ヘッドファーストデザインパターン)

大学のネットワークの外部からプロジェクトを機能させることはできませんでしたが、ネットワークに直接接続すると完全に機能しました。私たちの教授によると、インターネットやWANを介した実装でRMIを使用することはできませんでした。彼女が提案した解決策は、VPNが必要になるというものでした。ウラジミールは、地元のネーミングサービスであることに関係しているという点で正しいと思います。

于 2009-05-19T19:16:33.687 に答える
0

私は間違っているかもしれませんが、rmiregistryアプリケーションは本質的にローカルネーミングサービスのラッパーのようです。つまり、リモートオブジェクトを指すようにする方法はありません。

必要なのはネーミングの実装であり、これでクラスター化されます。J2EEASクラスタリングソリューションへの移行を検討してください。JNDIツリーはクラスター内で共有されます。

于 2009-05-04T17:58:04.410 に答える
0

皆さんの回答に感謝します。私が最終的に思いついた解決策は、Cajo Frameworkを使用することでした。これにより、配布に非常に柔軟なシステムが提供され、適切と思われるレジストリを処理できるようになりました。また、NAT、ファイアウォール、HTTPプロキシの背後でも機能するため、非常に便利です。

rndm.buoyが提案するプロキシの方法は、場合によっては機能すると思いますが、システムによっては面倒な場合があります。RMIには、間違ったネットワークインターフェイスへの関連付けにいくつかの問題があるようです。特に、DebianベースのLinuxディストリビューションで実行しているときにこの問題が発生しました。

于 2009-06-14T15:15:10.673 に答える