2011-12-31 14 views
2

rmiを使用しようとしています。以下のコードは、それを使ってバインドするコードです。rmiの使用中にマーシャリングの問題

@Override 
    public void init(String serviceName) throws RemoteException { 
    /*if(System.getSecurityManager() == null){ 
     System.setSecurityManager(new RMISecurityManager()); 
    }*/ 
    try { 
     String host = InetAddress.getLocalHost().getHostName(); 
     String url = "rmi://"+ host + "/"+ serviceName; 
     //String url = "//localhost/" + serviceName; 
     Naming.rebind(url,this); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 
} 

私が使用するURLに関係なく、以下の例外が発生します。それはマーシャルにクラスを見つけることは決してありません。誰かがこの問題について私に助けてくれますか?前もって感謝します。

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
java.lang.ClassNotFoundException: ceng443.hw3.base.SocialNetworkServer 
+0

サービスクラスはどのように定義されていますか? UnicastRemoteObjectを拡張していますか? – Tudor

+0

はいそのインターフェイスを使用しています – brtb

+0

例外はどの回線で発生しますか? – Tudor

答えて

0

RMIを使用してコードをダウンロードするにはセキュリティマネージャが必要ですが、投稿したフラグメントにコメントアウトしておく必要があります。あなたのsecuritymanager設定のコメントを外してみることはできますか?

+0

私の問題は悲しい解決策ではないと思います。それは私はセキュリティの例外を得るwhouldだった場合。これに加えて、私はちょうどクライアント側からそれを使用してダウンロードしていないRMIを作成しようとしていました。 – brtb

関連する問題