![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
korotin |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 1.9.2008 Репутация: нет Всего: 1 |
Здравствуйте!
Помогите запустить простейшее приложение. Допустим оно будет складывать два числа. У меня JDK 1.6 Вот что я делаю: Запускал клиентскую часть и серверную на одной машине, все работало, но на разных никак. В чем причина? Проконтролируйте, пожалуйста, мои действия 1)Создаю интерфейс
далее выполняю команду: javac client/Adder.java 2)Так как для данной версии JDK скелеты и стабы не нужны, то реализую класс для удаленных объектов:
далее выполняю команду: javac client/AdderImpl.java 3)Программа сервер:
далее выполняю команду: javac server/AdderServer.java 4)Запуск сервера. Я запускаю сервер на одной машине, клиентскую часть на другой. -Активизирую службу регистрации: start rmiregistry -Запуск AdderServer: start java server.AdderServer 5)Клиентская часть:
далее выполняю команду: javac client/AdderClient.java java client.AdderClient Это сообщение отредактировал(а) korotin - 4.5.2009, 21:52 |
||||||||
|
|||||||||
korotin |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 1.9.2008 Репутация: нет Всего: 1 |
Люди пожалуйста подскажите, где косяки.
В последовательности моих действий вы не найдете использование файлов policy, потому что прочитав статейку, в которой сказано о том, что policy не используются в jdk1.5, я и удалил этот файл. Возможно в этом косяк? При использовании файлов policy и включение в код подобных строчек:
возникает исключение.((( |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 2 Всего: 104 |
Какое? И что происходит при запуске без этих строчек? -------------------- Lost.... |
|||
|
||||
Fieral |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
работай по этой инструкции:
http://patriot.net/~tvalesky/easyrmi.html там всё довольно подробно и работоспособно --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
korotin |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 1.9.2008 Репутация: нет Всего: 1 |
Вот какой выводится exception: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve) Файл policy, например, для класса-сервер добавил в тот же пакет, где расположен сам класс. Может вместо:
нужно указать
При запуске на одной машине работает. Если запускаю на разных, то в классе-клиент возникает exception, объект которого, с помощью метода e.getMessage - ничего не выводит, а так e.toString выводит вот что: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 100.100.0.1; nested exception is: java.net.ConnectException: Connection refused: connect] Это сообщение отредактировал(а) korotin - 6.5.2009, 22:23 |
||||
|
|||||
korotin |
|
||||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 1.9.2008 Репутация: нет Всего: 1 |
После удаления строк(в классах клиент и сервер):
И после некоторых изменений: 1)Вместо номера Ip rmi://{номер Ip}/ использую rmi://{имя компьютера}/ 2)Вместо класса Context использую кдасс Naming(в классе клиент): до:
после:
3) Вместо Context использую Naming(в классе сервер) до:
после:
4) Сгенерировал _Stup, командой rmic и разместил его на сервере и клиенте Вот что показывает exception на стороне клиента: java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: RMI_test.server.ProductImpl_Stub (no security manager: RMI class loader disabled) Подскажите как правильно использовать файлы policy? Нужно ли их использовать, если да, то куда добавить(в пакет с классами?)? Файлы policy нужны только для клиента или для сервера тоже нужны? Сгенерированный _Stub нужно ли добавить в пакет с классом клиента или он нужен только в пакете сервера? Это сообщение отредактировал(а) korotin - 7.5.2009, 23:59 |
||||||||||
|
|||||||||||
Fieral |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
создай файл .java.policy в папке юзера (в висте это тут C:\Users\%username%\.java.policy)
с контентом:
--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
korotin |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 1.9.2008 Репутация: нет Всего: 1 |
Хорошую инфу. Fieral подкидываете, процесс немного движется.
Так и сделал, поместил .java.policy в папку user. Сначало только на стороне сервера, клиент выводил вес те же exception'ы, но после таких же действий на стороне клиента exception изменился: java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: RMI_test.server.ProductImpl_Stub Теперь клиент не может найти _Stub на стороне сервера, но он же содержится в пакете RMI_test.server. Нужно ли добавить в CLASSPATH путь к _Stub ? Если да, то как лучше это сделать, прописать его в системных переменных руками или воспользоваться командной строкой: set CLASSPATH=... ? Много статей по этой теме, но рассматривается чаще всего версия jdk1.2, есть и 1.5, но там используются апплеты или просто автор разобравшись закрыл тему. Вот и возникают трудности(( Это сообщение отредактировал(а) korotin - 8.5.2009, 23:14 |
|||
|
||||
Fieral |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Попробуй так:
Создай 3 проекта. 1) Server 2) Client 3) DataSets В DataSets создай классы которые ты собрался передавать. (Например класс Message) Откомпиль DataSets в jar-ку. Server и Client размести на разных машинах. Подключи полученную jar-ку в первые два проекта (внеси её в "зависимости"). полиси-файл помоему достаточно разместить на сервере, (но размести на всякий случай и на клиенте) Ну, а дальше попробуй запустить сервер и скинуть ему Message. (например создай метод Message Drop(Message m) throws RemoteException ) Да кстати все методы удалённого интерфейса должны "кидать" RemoteException (ну или "тип-того-Exception" - точно не помню) ну и сам "удалённый интерфейс" расположи в проекте DataSets Это сообщение отредактировал(а) Fieral - 11.5.2009, 23:17 --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |