彼らはどこから来た問題が発生したフィドルのRMIで今日は、クライアントは常に、非常に奇妙であるアクセスを拒否された不可解なIPアドレスを表示しますか?サーバのIPアドレスのIPを見て、クライアントが自動的に仮想マシンにマッピングされます、なぜその後、調査が見つかった後、IPアドレス、IPアドレスは、仮想ネットワークアダプタの仮想マシンであることを、知りません。解決策は、最初の仮想ネットワークアダプタから外れているし、サーバーのRMIが正しく接続されます再起動します。(詩:仮想カードが開かれた再起動した後、それはそれぞれの相Aには影響を与えません)。
個人的な推測では、サーバーの登録サービスは、IPアドレスを自動的に選択されますと、IPアドレスエラーが選択肢に発生していることです。私は、Javaのソースコードのこの部分を見つけることができませんでした。弟を助けることができる以下のソースは、それに答えています。。。
サーバー:
輸入java.rmi.Naming; 輸入java.rmi.RemoteExceptionの。 輸入java.rmi.registry.LocateRegistry。 輸入java.rmi.registry.Registry。 パブリック クラスこのRegistryService { 公共 静的 ボイドメイン(文字列[]引数){ 試みる{ レジストリレジストリ = LocateRegistry.createRegistry(8848の) こんにちはHellowRegistryFacade = 新しいHellowRegistryFacadeImpl(); registry.rebind( "HellowRgistry" 、こんにちは); System.out.println( "==启动RMI服务成功!"); } キャッチ(RemoteExceptionを電子){ e.printStackTrace(); } } }
クライアント:
インポートとしてjava.rmi.NotBoundException; 輸入java.rmi.RemoteExceptionの。 輸入java.rmi.registry.LocateRegistry。 輸入java.rmi.registry.Registry。 パブリック クラスRegistryClient { 公共 静的 ボイドメイン(文字列[]引数){ レジストリレジストリ = NULL ; 試す{ レジストリ =のLocateRegistry.getRegistry( "192.168.1.3"を、8848 ); ハローHellowRegistryFacade =(HellowRegistryFacade)registry.lookup( "HellowRgistry" )。 文字列の応答 = hello.helloWorld( "朋友"); System.out.println(応答)。 } キャッチ(RemoteExceptionを電子){ e.printStackTrace(); } キャッチ(持つNotBoundException電子){ e.printStackTrace(); } } }
インターフェース
輸入はjava.rmi.Remote; 輸入java.rmi.RemoteExceptionの。 パブリック インターフェース HellowRegistryFacadeは延びリモート{ 文字列のhelloWorld(文字列名)がスローRemoteExceptionを。 }
インターフェース
輸入java.rmi.RemoteExceptionの。 輸入java.rmi.server.UnicastRemoteObject。 パブリック クラス HellowRegistryFacadeImplが延び UnicastRemoteObjectをが実装HellowRegistryFacadeを{ プライベート 静的 最終 長いのserialVersionUID = 1L 。 保護 HellowRegistryFacadeImpl()がスローRemoteExceptionを{ } @Override パブリック文字列のhelloWorld(文字列名)がスローRemoteExceptionを{ 戻り "[レジストリ]你好!" + 名。 } }