Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переслать объект (экземпляр класса) на другую маш, например, по сети 
V
    Опции темы
Fieral
Дата 24.4.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 10.12.2007

Репутация: нет
Всего: 1



Вопрос такой - как организовать пересылку объектов на другой комп, для продолжения процесса обработки?

Есть желание раскроить программу на несколько компьютеров, где например данные удут обрабатываться сначала на одном компе, а потом отправляться на другой, и досчитываться уже там такойже программой.
--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.
PM MAIL   Вверх
powerOn
Дата 24.4.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



Ну например с помощью RMI.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Maksym
Дата 27.4.2008, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Серилизировать/десериализировать, как вариант.
PM MAIL   Вверх
Fieral
Дата 30.4.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 10.12.2007

Репутация: нет
Всего: 1



Серилизировать/десериализировать насколько я понял, можно только серилизуемые/десериализуемые объекты. В чём тогда смысл этой операции?
--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.
PM MAIL   Вверх
Maksym
Дата 30.4.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Цитата(Fieral @  30.4.2008,  14:11 Найти цитируемый пост)
Серилизировать/десериализировать насколько я понял, можно только серилизуемые/десериализуемые объекты. 

Да
Цитата(Fieral @  30.4.2008,  14:11 Найти цитируемый пост)
В чём тогда смысл этой операции? 

В целом, смысл в том, чтобы превратить объект со всеми его состояниями в поток байт и куда-нибудь эти байты отправить (в файл, в базу данных, передать через сеть). В последствии этот сохраненный объект можно считать, инстанциировать в том состоянии в котором он был сохранен и продолжить работу с ним.

PM MAIL   Вверх
mbasil
Дата 30.4.2008, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



На самом деле есть и более высокоуровневые технологии EJB и web службы.
Что использовать - это скорее вопрос задачи и проблемной  области. 
Web службы сериализуют (или точнее маршаллизируют) в XML. RMI сегодня это низкоуровневая технология. Сгодится скорее для одной задачи, для которой эффективность важнее повторного использования.
PM MAIL   Вверх
Maksym
Дата 30.4.2008, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



mbasil
Согласись, давать в ответ на вопрос 
Цитата(Fieral @  24.4.2008,  18:13 Найти цитируемый пост)
Вопрос такой - как организовать пересылку объектов на другой комп, для продолжения процесса обработки?

EJB, Web Services и т.п. как-то противоречит принципу Оккама. Хотя ты прав в том что реализовать на этих технологиях будет по любому полезнее.
PM MAIL   Вверх
Fieral
Дата 1.5.2008, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 10.12.2007

Репутация: нет
Всего: 1



Цитата(Maksym @ 30.4.2008,  15:47)
Цитата(Fieral @  30.4.2008,  14:11 Найти цитируемый пост)
Серилизировать/десериализировать насколько я понял, можно только серилизуемые/десериализуемые объекты. 

Да

А с остальными как быть?

Добавлено через 6 минут и 54 секунды
пакую объект в класс имплементирующий сереализацию
Код

class box implements Serializable{
            Object o=null;
            
            void put(Object o){
            this.o=o;    
            }
            Object get(){
                return this.o;
            }
        }    



копирую объект путём копирования этого класса
Код

box ob = null;
                    try {
                     ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
                        ObjectOutputStream out = new ObjectOutputStream(bos);
                        out.writeObject(b);
                        out.close();
                        byte[] buf = bos.toByteArray();
                        byte[] buf2=buf.clone();
                        
                        ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buf2));
                        try {
                            ob = (box)in.readObject();
                            in.close();
                        } catch (ClassNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        
                        
                        
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

выдаёт:
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)

--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.
PM MAIL   Вверх
Maksym
Дата 1.5.2008, 12:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Fieral
Если не сериализирумый класс правильно завернуть в наследника, который умеет сохранять его состояние, то инстансы этого наследника будут сериализируемыми. Здесь пример.
Кроме того ты можешь реализовать собственный механизм сериализации.

Я правильно понял, что ты изображение хочешь просчитывать и пересылать?
PM MAIL   Вверх
Fieral
Дата 1.5.2008, 12:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 10.12.2007

Репутация: нет
Всего: 1



Цитата(Maksym @  1.5.2008,  12:00 Найти цитируемый пост)
Я правильно понял, что ты изображение хочешь просчитывать и пересылать?


Ага. 
Но не только их - результаты обработки тоже забирать надо будет.

--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.
PM MAIL   Вверх
Maksym
Дата 1.5.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Fieral
Ну в принципе тебе не обязательно пересылвать несериализируемый BufferedImage, достань из него байты картинки, отправь их, а там уже восстановиш в BufferedImage если он тебе будет нужен.
PM MAIL   Вверх
Fieral
Дата 1.5.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 10.12.2007

Репутация: нет
Всего: 1



Ну хорошо.
Тогда такой вопрос: допустим я буду пересылать что-нибудь ещё, отконвертированное в byte массивы. 
Как тогда на месте прибытия выяснять что именно приехало и в какой объект это конвертировать?
--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.
PM MAIL   Вверх
mbasil
Дата 2.5.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



Ну вот и возник вопрос о протоколе пересылки. Это ответ на замечание Maksym в мой адрес. Теперь надо "городить свой протокол или использовать более высокоуровневое решение. На шаг выше RMI.
PM MAIL   Вверх
Maksym
Дата 2.5.2008, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



mbasil
Чтобы преслать пару объектов и массив байт не нужно городить какой-то сложный протокол. Пока что не вижу в этой задаче ничего такого, чтобы приплетать сюда тяжеленные энтерпрайз решения. Особенно если учесть, что организуются распределенные вычисления и, видимо, важна производительность.
PM MAIL   Вверх
mbasil
Дата 2.5.2008, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



Согласен, что энтерпрайз решения может и не требуются. Написал я о них, поскольку некоторые разработчики пытаются решать задачи простыми методами, там где простые методы не подходят и приводят к появлению массы проблем.

При засылке разных объектов только массивом байт не обойдешься. Надо обернуть его в общий класс (сериализуемый), который помимо массива байт будет содержать дополнительную информацию о том, что на самом деле содержит массив. А это уже, как не верти хоть и простой но собственный протокол обмена. Если объектов может быть и не два, а больше, то RMI может оказаться предпочтительным. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.