問題タブ [rmiregistry]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - rmiregistry が使用するクラスパスを設定するにはどうすればよいですか?
Java RMI クライアント/サーバー アプリを作成しようとしています。アプリのサーバー側を起動しようとすると、Registry.bind() メソッドの呼び出し中にClassNotFoundExceptionが発生し続けるため、アプリのサーバー側を起動するときに問題が発生します。
ここの簡単なチュートリアルから始めました: http://docs.oracle.com/javase/1.5.0/docs/guide/rmi/hello/hello-world.html。これらの指示に従った後、最初は「example.hello.Hello」が見つからないことを訴える ClassNotFoundException をスローしていました。rmiregistryはどうやらクラスパスの一部として最初の開始ディレクトリを使用するため、チュートリアルのdestDirディレクトリからrmiregistry を開始することで解決できました。
その後、別のテスト アプリを使い始めましたが、サーバー クラスでサードパーティの jar ファイルを使い始めるまでは問題ありませんでした。現在、rmiregistry アプリはこれらの jar ファイルを認識していないため、私のサーバー クラスが任意の jar ファイル内の何かを参照している場合、Registry.bind() は ClassNotFoundException をスローします。
私が知る限り、rmiregistry はクラスパスの起動引数を一切受け入れないので、認識させたいクラスパスをどのように伝えることができるのか疑問に思っています。http://docs.oracle.com/javase/tutorial/rmi/running.htmlのチュートリアルによると、「rmiregistry を実行するシェルまたはウィンドウにCLASSPATH 環境変数が設定されていないか、リモート オブジェクトのクライアントにダウンロードするクラスへのパスを含まない CLASSPATH 環境変数があります。」それは私が必要としているものとは正反対のように聞こえます... それとも私の読み方が間違っているのでしょうか? サードパーティの jar (私の場合は commons-io、commons-logging、および rmiio) を使用する RMI クライアント/サーバーの起動に成功した人はいますか?
ちなみに、これはWindows上です。
更新
私はそれを回避する方法を見つけました。以下の私の答えを見てください。
java - rmiregistry を開始しても機能しない
rmiregistry の起動で問題が発生しました
コマンド ラインに start rmiregistry と入力すると、エラーが返されます。
java.rmi.RemoteException: エクスポートに失敗しました: クラス gnu.java.rmi.dgc.DGCImpl at 0x00418dde (不明なソース) at 0x004192d2 (不明なソース) at 0x00443aa4 (不明なソース) at 0x0040984d (不明なソース) at 0x0040989a (不明なソース) at 0x00409090 (不明なソース) at 0x00468c70 (不明なソース) 0x00468d37 (不明なソース) 0x0040906c (不明なソース) 0x0040ac05 (不明なソース) 0x00401a80 (不明なソース) 0x0040cb73 (不明なソース) 0x0040cbae (不明なソース) 0x00401733 (4 d00601)未知のソース) 0x00416afe (未知のソース) 0x0041f220 (未知のソース) 0x004033f7 (未知のソース) 0x00401328 (未知のソース) 0x00401247 (未知のソース) 0x00401294 (未知のソース) 0x758fd305 で未知のソース (未知のソース) )0x770e15ff (不明なソース) 0x770e15d2 (不明なソース)
環境変数が正しいjdk/jreを指していることを確認する解決策を見てきましたが、それを行ったのでうまくいくはずです....しかし、うまくいきません。
私が考えることができる唯一の他のことは、私が大学のプロキシにいるということです.
Ta さん、お返事をお待ちしております
java - クライアントが RMI レジストリをアンバインドするのを拒否するには?
簡単な RMI アプリケーションを作成します。RMI-Registry を取得した後のクライアントは、Registry.unbind() メソッドを正常に実行できることがわかりました。私の意見では、これはセキュリティ上のリスクです。クライアントがリモート レジストリで名前のバインドを解除できるのはなぜですか? 悪意のある人物がコードを変更してこれを行うことができ、バインディングが削除されたため、他のすべてのクライアントがサーバーに接続できません。
おそらくJavaポリシーで、これを否定する可能性はありますか?
java - Java コードから RMI レジストリを起動する方法は?
クライアントとサーバー用の Java プログラムを作成しました。ただし、プログラムを実行するには、rmi レジストリを手動で開始する必要があります。Javaコードを介して(サーバーを介して)RMIレジストリを開始する方法は?
java - 単一の RMI サービスの単純なエントリ ポイントですか?
RMI インターフェイスをエクスポートするサービスがいくつかあります。
以前は、独自のレジストリを作成し ( を使用LocateRegistry.createRegistry
)、そこにバインドすることでこれを提供していました。ただし、サービスが同じ VM (Tomcat) で別のアプリケーションとして実行されるように移動された場合、何らかの理由で 1 つのレジストリしか存在できないため、これは不可能になりました。
すべてのサービスに中央レジストリを使用することで、この問題を回避しました。それでも、レジストリのマルチオブジェクト レジストリの役割にはあまり興味がありません。エントリ ポイントの機能だけに興味があります。ただし、中央レジストリはより複雑になります (たとえば、最初に開始する必要があり、登録するサービスのインターフェイスが必要です)。
各サービスが RMI インターフェイスへのエントリ ポイントを個別に提供し、それらを同じ VM で実行するという状況を元に戻す方法はありますか (これはホスティングの詳細であり、設計の一部ではありません)。
java - ProcessBuilder の使用時にクライアントが RMI レジストリとの接続に失敗する
コマンドラインからRMIレジストリを作成している場合、クライアントはオブジェクトをレジストリにバインドすることに問題はありません。
ただし、を使用して RMI レジストリを開始するProcessBuilder
と、エラーが発生します。
rmiregistry
これは、使用して作成するための私のコードですProcessBuilder
ProcessBuilder
自分の RMI レジストリにバインドしようとしているときに使用するために発生するエラー
node_func
インターフェイスです
何か案は?
java - クライアント側からの RMIregistry の呼び出しに関する問題
初めて RMI レジストリを使用してリモート呼び出しを試みています。それを実装するインターフェースとクラスを書きました。それを呼び出そうとしているときに問題に直面しています。Windows マシンで を指定して rmiregistry を開始しました。これによりstart rmiregistry
、新しいウィンドウが開きました。
クライアント側のプログラムは次のようになります。
にどの値を指定する必要があるかについて混乱していますhost
。
私は与えてみました:
(a) http://localhost
(b)http://localhost:1099
それは去りjava.net.UnknownHostException: http://localhost:1099
ます。
アップデート:
ホストをMy_Sys_IPに変更した後、負けjava.net.UnknownHostException
ましたが、結局Client exception: java.rmi.NotBoundException: Details
java - システム間の接続例外
この質問は何度も聞かれ、私は解決策に従いましたが、うまくいきませんでした。
私は得ています
システムから10.155.1.232
1099
ポートにTelnet接続しようとしました。Telnet接続できるということは、ポートに問題がないことを意味します。
8090
また、私のTomcatのポートでviceversaをtelnetしようとしました。
私のシステムにはファイアウォールがありません。
rmiレジストリがすでに実行されているかどうかを確認する必要があります10.155.1.232
か?
rmiregistryがcmdからWindowsシステムで機能しているかどうかを確認するにはどうすればよいですか?
だから何が問題になるのか教えてください
StackTraceは次のとおりです。
java - クライアント、サーバー、およびrmiが機能しない
このコードは機能しません。まあ、それは動作しますが、クライアントは印刷しません。私は何か間違ったことをしていますか?W7とNetBeansを使用しています。rmiregistryに問題がないかどうかを確認する方法はありますか?これらのキャッチを削除すると、コンパイルできなくなります。問題は再バインドとルックアップに起因すると確信しています。
ServerNew.java:
ClientNew.java:
サーバーの出力(ServerNew.java:38
is Naming.rebind
):
java - JavaRMI-レジストリが存在するかどうかを確認します
JavaRMIに少し問題があります。
レジストリが存在するかどうかを確認できますか?このコード行は私にレジストリを与えることになっています。
しかし、間違ったIPアドレスまたはレジストリが見つからないIPアドレスで呼び出すと、メソッドがスタックします。
だから私の質問は、getRegistry()を呼び出す前に、特定のIPアドレスにレジストリがあるかどうかをどうにかして確認できますか?