Java: настройка rmiregistry - PullRequest
       58

Java: настройка rmiregistry

1 голос
/ 16 апреля 2011

Итак, я использовал LocateRegistry.createRegistry(), но у него есть проблема: он запускается внутри вызывающего его процесса, поэтому, если я использую более одной JVM, произойдет сбой JVM, запустившего реестр, вниз реестра для все JVM.

Похоже, мне нужно использовать rmiregistry (или что-то в этом роде?), Чтобы изолировать процесс, выполняющий поиск / привязку RMI от JVM сервера.

Я пытался сделать это, и теперь я получаю эту ошибку при попытке сделать Registry.rebind():

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: {my remote interface name}
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
    at sun.rmi.transport.Transport$1.run(Transport.java:159)
    at java.security.AccessController.doPrivileged(Native Method)

Что я делаю не так? Я погуглил это исключение, и оно как-то связано с базой кодов RMI, но я действительно здесь потерян. Если проблема в команде rmiregistry, каковы параметры командной строки, чтобы сообщить ей, что делать? Если проблема в JVM моего сервера, что мне нужно сделать?

1 Ответ

1 голос
/ 16 апреля 2011

Какая авария? Я не видел крушения JVM в течение многих лет. Если у вас нет JNI, JVM, содержащая ваши RMI-серверы, с большей вероятностью не будет аварийно завершать работу, чем автономная JVM, запущенная командой rmiregistry. А использование LocateRegistry.createRegistry () навсегда решает проблемы пути к классам.

...