![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: 5 Всего: 6 |
Я написал простой RMI сервер. Запустил rmiregistry, а при запуске самого сервера вылетает ексепшин:java.rmi.UnmarshalException.....
java.lang.ClassNotFoundException: имя класса стаба? -------------------- Задаю много глупых вопросов.... |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Может что-то в путях ? Не находит он такой класс.
|
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Может возникать по многим причинам
Посмотри в ФАКе http://forum.vingrad.ru/index.php?act=modu...nel&article=103 http://forum.vingrad.ru/index.php?act=modu...el&article=2305 -------------------- |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: нет Всего: 13 |
Если юзаешь rmiregistry сервер, он должен иметь доступ к твоим стабам/скелетонам, лучше обходиться без него (юзать java.rmi.registry.LocateRegistry).
Если не выставлен SecurityManager в клиенте - клиент не будет качать классы стабов с сервера. Тут два варианта - настроить и выставить SecurityManager (универсальный метод) или с клиентом таскать кроме интерфейса еще и стабы. |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: 5 Всего: 6 |
Спасибо за советы...
Но оказалось, что реестр лучше запускать не руками, а из самого сервера: ы
Почему не знаю, но это заработало.... Не подскажите а передача объектов в RMI идет по значению или по ссылке на серверный объект.... Это сообщение отредактировал(а) FatherFrost - 28.4.2005, 09:34 -------------------- Задаю много глупых вопросов.... |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Гм. Объекты, по-моему, всегда передаются мсключительно по ссылке. Другое дело, что они могут быть сериализованы, переданы, а затем восстановлены на удаленной машине.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
George, не путай теплое с мягким. В случае удаленных вызовов объекты передаются именно так, как ты и описал, и это называется - по значению. По этой причине при дизайне распределенных систем очень важно уделать внимание тому, что включать и чего не включать в состав классов, подлежащих пересылке по сети, а не то эдак можно ненароком добиться того, что у тебя будет таскаться туда-сюда весь контекст приложения Это соображение, в частности, послужило мотивацией для создания J2EE паттерна под названием Value Objects. -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
| Zandr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: нет Всего: 13 |
О чем я тебе и написал выше
Могу ошибаться. От RMI сервера ты получаешь Remote объект. Если грубо то получаешь ты его по ссылке. Т.е. все методы которые ты вызываешь отрабатываются на сервере. Причем все клиенты получают "ссылку" на один и тот же инстанс. Теперь по поводу параметров методов и возвращаемых значений. Если это примитивы или Serializable то передача идет по значению (т.е. отправляется клон), если передается Remote, то передача идет по ссылке (например если хочешь зарегистрировать листенера на сервере, то делаешь его как Remote объект и отправляешь на сервер). Когда возникают такого рода вопросы пробуйте сначала писать самостоятельно небольшие тесты - гораздо лучше запоминаются ответы, плюс приобретаете опыт в данной области |
||||
|
|||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: 5 Всего: 6 |
Я в принципе уже понял, что к чему.... Просто хотел посоветоваться со знающими людьми... -------------------- Задаю много глупых вопросов.... |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: нет Всего: 13 |
Мотивацией для Value Objects послужила дороговизна Remote вызовов для получения значения каждого поля EntityBean'а (на порядки медленнее, чем локальные вызовы). Если вам нужно получить какой-нибудь бин (эдак с двадцатью полями), то намного быстрее все его поля упаковать в контейнер (ValueObject) на сервере и отправить этот контейнер клиенту за один RMI запрос (лучше, чем за двадцать |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: 5 Всего: 6 |
Туту вот еще возник вопрос по поводу скорости передачи в RMI...
Эту тему поднимал DEER... Но там не все так ясно как хотелось бы. Я пропинговал сервер и получил время ответа порядка 10 милисекунд, а для передачи через rmi требуется 96636 мс... -------------------- Задаю много глупых вопросов.... |
|||
|
||||
| Zandr |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: нет Всего: 13 |
Добавлено @ 11:53
Полторы минуты на вызов? Это перебор конечно. Хотя смотря что делает серверный метод. И еще - это только первый вызов долгий такой или все последующие тоже? Ну и этот вопрос уже скорее всего для частного расследования, чем для форума |
||||||
|
|||||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Ни малейшего возражения. Да, это было главным соображением. Но не единственным. Именно поэтому я и написал, "... в частности, послужило мотивацией ..." |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: 5 Всего: 6 |
-------------------- Задаю много глупых вопросов.... |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: 5 Всего: 6 |
Запустил в одной подсетке стало выполняться порядка минуты...
Запускал реестр на 1099, после того как запустил на порту с меньшим номером (75) времы выполнения удаленного метода сократилось примерно в два раза.... Но пол-минуты все равно очень долго.... -------------------- Задаю много глупых вопросов.... |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |