2011-12-31 3 views
2

i m пытается использовать 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

Вам нужен SecurityManager для загрузки коды с помощью RMI, но вы его закомментирован в фрагменту публикуемого. Можете ли вы попробовать раскомментировать настройку securitymanager?

+0

Я думаю, что моя проблема не в том, что решение вам грустно. Если бы это было тогда, я бы получил исключения безопасности. В дополнение к этому я просто пытался создать RMI, чтобы не использовать его с клиентской стороны и загрузить st. – brtb

Смежные вопросы