![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Fieral |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Вопрос такой - как организовать пересылку объектов на другой комп, для продолжения процесса обработки?
Есть желание раскроить программу на несколько компьютеров, где например данные удут обрабатываться сначала на одном компе, а потом отправляться на другой, и досчитываться уже там такойже программой. --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Ну например с помощью RMI.
|
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Серилизировать/десериализировать, как вариант.
|
|||
|
||||
| Fieral |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Серилизировать/десериализировать насколько я понял, можно только серилизуемые/десериализуемые объекты. В чём тогда смысл этой операции?
--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Да В целом, смысл в том, чтобы превратить объект со всеми его состояниями в поток байт и куда-нибудь эти байты отправить (в файл, в базу данных, передать через сеть). В последствии этот сохраненный объект можно считать, инстанциировать в том состоянии в котором он был сохранен и продолжить работу с ним. |
|||
|
||||
| mbasil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
На самом деле есть и более высокоуровневые технологии EJB и web службы.
Что использовать - это скорее вопрос задачи и проблемной области. Web службы сериализуют (или точнее маршаллизируют) в XML. RMI сегодня это низкоуровневая технология. Сгодится скорее для одной задачи, для которой эффективность важнее повторного использования. |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
mbasil
Согласись, давать в ответ на вопрос
EJB, Web Services и т.п. как-то противоречит принципу Оккама. Хотя ты прав в том что реализовать на этих технологиях будет по любому полезнее. |
|||
|
||||
| Fieral |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
А с остальными как быть? Добавлено через 6 минут и 54 секунды пакую объект в класс имплементирующий сереализацию
копирую объект путём копирования этого класса
выдаёт: java.io.NotSerializableException: java.awt.image.BufferedImage at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
||||||||
|
|||||||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Fieral
Если не сериализирумый класс правильно завернуть в наследника, который умеет сохранять его состояние, то инстансы этого наследника будут сериализируемыми. Здесь пример. Кроме того ты можешь реализовать собственный механизм сериализации. Я правильно понял, что ты изображение хочешь просчитывать и пересылать? |
|||
|
||||
| Fieral |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Ага. Но не только их - результаты обработки тоже забирать надо будет. --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Fieral
Ну в принципе тебе не обязательно пересылвать несериализируемый BufferedImage, достань из него байты картинки, отправь их, а там уже восстановиш в BufferedImage если он тебе будет нужен. |
|||
|
||||
| Fieral |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Ну хорошо.
Тогда такой вопрос: допустим я буду пересылать что-нибудь ещё, отконвертированное в byte массивы. Как тогда на месте прибытия выяснять что именно приехало и в какой объект это конвертировать? --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
| mbasil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
Ну вот и возник вопрос о протоколе пересылки. Это ответ на замечание Maksym в мой адрес. Теперь надо "городить свой протокол или использовать более высокоуровневое решение. На шаг выше RMI.
|
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
mbasil
Чтобы преслать пару объектов и массив байт не нужно городить какой-то сложный протокол. Пока что не вижу в этой задаче ничего такого, чтобы приплетать сюда тяжеленные энтерпрайз решения. Особенно если учесть, что организуются распределенные вычисления и, видимо, важна производительность. |
|||
|
||||
| mbasil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
Согласен, что энтерпрайз решения может и не требуются. Написал я о них, поскольку некоторые разработчики пытаются решать задачи простыми методами, там где простые методы не подходят и приводят к появлению массы проблем.
При засылке разных объектов только массивом байт не обойдешься. Надо обернуть его в общий класс (сериализуемый), который помимо массива байт будет содержать дополнительную информацию о том, что на самом деле содержит массив. А это уже, как не верти хоть и простой но собственный протокол обмена. Если объектов может быть и не два, а больше, то RMI может оказаться предпочтительным. |
|||
|
||||
![]()
|
| Правила форума "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. |