|
|
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Возможно ли передать вложенный объект по ссылке? Сервер: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Как на стороне клиента мне получить ссылку на myObject ? Возможно ли это? Или можно получить только ссылку на SharedObject? Заранее огромное спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 17:39:31 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Никто не поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 11:28:45 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
RMI передает объекты по значению, а для этого требуется сериализация. Добавьте в объявление класса интерфейс Serializable Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 12:20:05 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
ivanraRMI передает объекты по значению, а для этого требуется сериализация. Добавьте в объявление класса интерфейс Serializable Код: java 1. 2. 3. 4. 5. Спасибо. Для меня принципиально было знать. Значит RMI мне не подходит. Нужна ссылка! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 13:10:24 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Почему MyObject extends Remote не прокатит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 13:47:14 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПочему MyObject extends Remote не прокатит? Нет. Не катит :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 17:28:24 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПример http://stackoverflow.com/a/11187584 Как я понял из примера(беглый английский) это невозможно? Получается по ссылке только тот объект который расшарен на сервере. И если я возвращаю в качестве параметра "сложный" объект, то он должен быть сереализуемым и передается таким образом только по значению. Я прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 17:30:03 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
GorloPavelКак я понял из примера(беглый английский) это невозможно? Вы что-то не то читаете. Там выбраный ответ помечен зеленой галочкой и содержит пример того что вы хотите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 17:33:08 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Попробуем документацию. Например: http://docs.oracle.com/javase/7/docs/platform/rmi/spec/rmi-objmodel7.html 2.6.2 Passing Remote ObjectsWhen passing an exported remote object as a parameter or return value in a remote method call , the stub for that remote object is passed instead. Remote objects that are not exported will not be replaced with a stub instance . A remote object passed as a parameter can only implement remote interfaces. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 17:36:12 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Использование: Код: java 1. 2. 3. 4. 5. 6. 7. Выдает ошибку: java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: MyObject ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 18:55:14 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
GorloPavel, говорят-же тебе. Поддержи Serializable. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 21:17:19 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
maytonGorloPavel, говорят-же тебе. Поддержи Serializable. Тогда будет by value. А задача - by reference. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 21:20:46 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Может поле транзиентным объявить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 21:35:59 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Вроде здесь разделе толкуют о сабж. Не? http://stackoverflow.com/questions/11187548/is-it-possible-to-pass-by-reference-in-rmi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 21:41:50 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Наверно поэтому: Во всех методах java.rmi.Remote интерфейса должно быть явно указано исключение java.rmi.RemoteException ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 21:47:25 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
maytonВроде здесь разделе толкуют о сабж. Не? http://stackoverflow.com/questions/11187548/is-it-possible-to-pass-by-reference-in-rmi А здесь тогда о чем? 14789266 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 21:47:32 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
ivanraНаверно поэтому: Во всех методах java.rmi.Remote интерфейса должно быть явно указано исключение java.rmi.RemoteException Та же ошибка. Короче как я понял это нереально. Жаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 03:31:31 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
GorloPavelivanraНаверно поэтому: Во всех методах java.rmi.Remote интерфейса должно быть явно указано исключение java.rmi.RemoteException Та же ошибка. Короче как я понял это нереально. Жаль. Если поле сделать transient, то оно не будет передаваться на клиента при сериализации. Зато сервер сможет вернуть ссылку на него через удаленный метод внешнего класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 10:04:40 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
GorloPavel, может постановка хромает? Зачем разделяя объекты через протокол, пытаться с ними работать как с единиым целым по ссылкам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 10:20:01 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Petro123GorloPavel, может постановка хромает? Зачем разделяя объекты через протокол, пытаться с ними работать как с единиым целым по ссылкам? Да нет у меня другого решения. Приложение специфическое. Либо свой прокол обмена по сокетам(он уже есть) либо RMI... Видимо придется использовать второе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 13:07:24 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
GorloPavelПриложение специфическое угу. Как всегда - нобелевское решение в архитектуре. Никто до тебя не делал. ЗЫ. Что сокеты, что RMI - не надо передавать Объекты и методы. Надо передавать ДАННЫЕ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 13:19:08 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Petro123GorloPavel, может постановка хромает? Зачем разделяя объекты через протокол, пытаться с ними работать как с единиым целым по ссылкам? Можно попробовать сериализовывать физ. адрес объекта через RMI но опять-же. Зачем? Для сравнения? Может для идентичности ввести суррогатный PK который в рамках решаемой задачи и будет уникальность обеспечивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 13:28:32 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
maytonМожно попробовать сериализовывать физ. адрес объекта через RMI но опять-же. Зачем? Для сравнения? прикольно, но очень спорно) ЗЫ Мы как-то в EXE, где ещё не было управляемой и перемещаемой памяти, делали такую штуку как передача адреса памяти в виде строки. Работало))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 13:51:34 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
Не знаю зачем автору оно надо. Разве что для работы equals. Дак переопределить правильно hashCode оно быстро будет сравнивать даже для десериализованны объектов. Вообще равенство объектов это вопрос философский. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 14:35:16 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
GorloPavelPetro123GorloPavel, может постановка хромает? Зачем разделяя объекты через протокол, пытаться с ними работать как с единиым целым по ссылкам? Да нет у меня другого решения. Приложение специфическое. Либо свой прокол обмена по сокетам(он уже есть) либо RMI... Видимо придется использовать второе. Не все потеряно, можно же заглушку (стаб) передавать по значению, получив его на сервере, а чтобы не делать лишнюю работу, просто следует унаследовать класс от UnicastRemoteObject - там все что нужно уже сделано: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. Так должно работать - UnicastRemoteObject уже Serializable, плюс там есть встроенный код для получения стаба ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 14:47:25 |
|
||
|
RMI передача по ссылке.
|
|||
|---|---|---|---|
|
#18+
maytonНе знаю зачем автору оно надо. Разве что для работы equals. Дак переопределить правильно hashCode оно быстро будет сравнивать даже для десериализованны объектов. Вообще равенство объектов это вопрос философский. Есть сервер у нему могут быть подключены к примеру два клиента. Трафик от клиента к клиенту проходит через этот сервер. Что делать если ресурсов сервера уже не хватает? Запустить еще один и раскидывать нагрузку между ними. Что делать если один клиент авторизирован на первом сервере, а второй на втором? Как их трафик соеденить? Вот тут-то я и подумал... ведь при запросе от одного клиента к другому я могу узнать на каком сервере находится второй клиент, так как оба сервера используют одну и ту же БД. Вот я и хотел обменяться ссылками между сессиями друг на друга! Для чего все это нужно? Для обхода NAT и других проблем. Сейчас это все работает в рамках одного приложения. Но клиентов уже очень много и пора подумать о расширении. Переделать архитектуру сейчас очень затруднительно и не обойдется без проблем с работой клиентов, что недопустимо в моем случае. Надеюсь ясно объяснил. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:32:28 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2128666]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 293ms |
| total: | 472ms |

| 0 / 0 |
