![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| shoura |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Вот код, для запуска RMI сервера, с некоторыми проверками:
с помощью rmic создана необходимая заглушка localhost.test.rmi.server.MessageServiceImpl_Stub, находится в класспаче содержимое файла server.policy: grant codeBase "file:${{java.ext.dirs}}/*" { permission java.security.AllPermission; }; grant codeBase "file://D:/other/home/projects/test/build/*" { permission java.security.AllPermission; }; grant { permission java.security.AllPermission; }; rmiregistry запущен на 1099 порту Запускаем: java -Djava.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory -Djava.security.policy="D:\other\home\projects\test\server.policy" -Djava.naming.provider.url=rmi://localhost:1099 -cp D:\other\home\projects\test\build localhost.test.rmi.server.Launcher Имеем: javax.naming.CommunicationException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested excep tion is: java.lang.ClassNotFoundException: localhost.test.rmi.server.MessageServi ceImpl_Stub] at com.sun.jndi.rmi.registry.RegistryContext.bind(Unknown Source) at com.sun.jndi.rmi.registry.RegistryContext.bind(Unknown Source) at javax.naming.InitialContext.bind(Unknown Source) at localhost.test.rmi.server.Launcher.main(Launcher.java:41) Caused by: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested excep tion is: java.lang.ClassNotFoundException: localhost.test.rmi.server.MessageServi ceImpl_Stub at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:385 ) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240) at sun.rmi.transport.Transport$1.run(Transport.java:153) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:149) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4 60) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport .java:701) at java.lang.Thread.run(Thread.java:595) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknow n Source) at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source) at sun.rmi.server.UnicastRef.invoke(Unknown Source) at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source) ... 4 more Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested ex ception is: java.lang.ClassNotFoundException: localhost.test.rmi.server.MessageServi ceImpl_Stub at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source) at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:375 ) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240) at sun.rmi.transport.Transport$1.run(Transport.java:153) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:149) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4 60) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport .java:701) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.ClassNotFoundException: localhost.test.rmi.server.MessageSe rviceImpl_Stub at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:242) at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:430) at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165) at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620) at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247) at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.jav a:197) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:153 8) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1 693) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339) ... 9 more Помогите разобраться, что может быть не так? |
|||
|
||||
| shoura |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Уточняю вызов программы:
java -Djava.security.manager -Djava.security.policy="D:\other\home\projects\test\server.policy" -cp D:\other\home\projects\test\build localhost.test.rmi.server.Launcher По сути это ничего не меняет, ошибка та же |
|||
|
||||
| shoura |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Вообще-то проблема странная, в моем случае:
тоже отказалось работать с той же ошибкой Однако в случае LocateRegistry.createRegistry(1099); указанный выше пример работает и через JNDI и через Naming уж не знаю на что и думать |
|||
|
||||
| shoura |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
Проблема решена:
Кому интересно может глянуть сюда. Проблема в том что RMI registry использует RMIClassLoader на основе URLClassLoader, которому необходимо получить доступ к заглушке для ее десериализации. Для этого можно положить Jar с соотв. заглушками в катало {java.home}/bin, либо что лучше, добавить параметр окружения java.rmi.server.codebase при регистрации сервера в виде:
или
в моем случае помогло это:
Это сообщение отредактировал(а) shoura - 1.2.2008, 10:38 |
||||||
|
|||||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |