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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Криво работает EJB Remote Inerface 
V
    Опции темы
lat
  Дата 2.9.2009, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Все та же связка = EAR + EJB +WWW

В EJB части есть бин, с Local и Remote интерфейсами. При вызове локального интерфейса из вэб части, все данные передаются нормально. А вот если вызывать через удаленный интерфейс, то данные приходят в размере ~20%, остальные 80% - загадочным образом пропали о_0. На выходе делал проверку, нету там утечки. Подозреваю что все дело именно в способе получения этих данных, а именно через Remote.
Господа, внимание вопрос. Куда пропадают данные?

Добавлено через 5 минут и 17 секунд
Сервер приложений: JBoss 4.2.2
Бин написан на аннотациях (то есть EJB 3.0)
ОС: жук повторяется как на Unix так и на Win
Java 1.5

--------------------
Gott weiß ich will kein Engel sein
PM ICQ   Вверх
MisterCleric
Дата 2.9.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Цитата

Куда пропадают данные? 

туда, куда они не серриализуются...


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
lat
Дата 2.9.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(MisterCleric @  2.9.2009,  17:48 Найти цитируемый пост)

туда, куда они не серриализуются...


)))
Хорошо, тогда уточню вопрос. Почему так происходит?

ЗЫ кстати, а вот и не ясно на каком этапе идет краш. На сериализации или десериализации ... 
--------------------
Gott weiß ich will kein Engel sein
PM ICQ   Вверх
MisterCleric
Дата 2.9.2009, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



завист от того, каково содержимое того, что будет серриализоваться. И совпадает ли серриализуемая форма на сервере и клиенте(это я об общих классах)

Добавлено через 8 минут и 45 секунд
Да, такое, если Exception нету знач серриализуемая форма нормальна везде.
Показывай то, что ты передаешь, что подлежит серриализации


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
lat
Дата 2.9.2009, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(MisterCleric @ 2.9.2009,  18:03)
Показывай то, что ты передаешь, что подлежит серриализации

Remote Interface 
Код

@Remote
public interface TransitDBEjbRemote {
    
    public TransitDB        getTransitDBSmsc();
}


Класс TransitDB 

Код

public class TransitDB implements TrasnsitConfigHandler<
                                Param, Messagefilter, Dispatcher, Diagnostics, Smsc, WriterExtended, ReaderExtended, MessagesloggerExtended,
                                MessageserrloggerExtended, MessagessentloggerExtended, NotificatorExtended, AdditionalserverExtended>, java.io.Serializable  { 
    
 private static final long serialVersionUID = -374720804543322748L;
 protected List<Smsc>                        smsc;
 protected List<WriterExtended>            writer;
 protected List<ReaderExtended>            reader;
 protected MessagesloggerExtended            messageslogger;
 protected MessagessentloggerExtended        messagessentlogger;
 protected MessageserrloggerExtended        messageserrlogger;
 protected int                                queuesize;
 protected String                            lock;
 protected NotificatorExtended                notificator;
 protected List<AdditionalserverExtended>    additionalserver;
 protected List<Param>                        param;

 public List<Smsc> getSmsc() {
     if (smsc == null) {
         smsc = new ArrayList<Smsc>();
     }
     return this.smsc;
 }

 public void setSmsc(List<Smsc> list) {
     this.smsc = list;
 }
 
 public List<WriterExtended> getWriter() {
     if (writer == null) {
         writer = new ArrayList<WriterExtended>();
     }
     return this.writer;
 }
 
 public void setWriter(List<WriterExtended> list) {
     this.writer= list;
 }

 public List<ReaderExtended> getReader() {
     if (reader == null) {
         reader = new ArrayList<ReaderExtended>();
     }
     return this.reader;
 }

 public void setReader(List<ReaderExtended> list) {
     this.reader = list;
 }

 public MessagesloggerExtended getMessageslogger() {
     return messageslogger;
 }

 public void setMessageslogger(MessagesloggerExtended value) {
     this.messageslogger = value;
 }

 public MessagessentloggerExtended getMessagessentlogger() {
     return messagessentlogger;
 }

 public void setMessagessentlogger(MessagessentloggerExtended value) {
     this.messagessentlogger = value;
 }

 public MessageserrloggerExtended getMessageserrlogger() {
     return messageserrlogger;
 }

 public void setMessageserrlogger(MessageserrloggerExtended value) {
     this.messageserrlogger = value;
 }

 public int getQueuesize() {
     return queuesize;
 }

 public void setQueuesize(int value) {
     this.queuesize = value;
 }

 public String getLock() {
     return lock;
 }

 public void setLock(String value) {
     this.lock = value;
 }

 public NotificatorExtended getNotificator() {
     return notificator;
 }

 public void setNotificator(NotificatorExtended value) {
     this.notificator = value;
 }

 public List<AdditionalserverExtended> getAdditionalserver() {
     if (additionalserver == null) {
         additionalserver = new ArrayList<AdditionalserverExtended>();
     }
     return this.additionalserver;
 }

 public void setAdditionalserver(List<AdditionalserverExtended> list) {
     this.additionalserver = list;
 }

 public List<Param> getParam() {
     if (param == null) {
         param = new ArrayList<Param>();
     }
     return this.param;
 }

}


--------------------
Gott weiß ich will kein Engel sein
PM ICQ   Вверх
MisterCleric
Дата 2.9.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



м-да... Интересный класс. Мало что понятно. И дерево серриализации получается очень большое из-за твоих таких сложных имплементаций.
Тут, конечно, мало чем поможешь: извени


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
lat
Дата 2.9.2009, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А и-за чего могут возникать ошибки при серриализации? 
Может если перебрать все варианты, то удастся найти подходящее решение ..... такой себе метод научного тыка.


--------------------
Gott weiß ich will kein Engel sein
PM ICQ   Вверх
COVD
Дата 2.9.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

А и-за чего могут возникать ошибки при серриализации?


Зачем два р? Очень раскатисто звучит smile

Иногда пытаются сериализовать то, что в принципе не сериализуемо - сокетные соединения, ResultSet, соединения с базой данных, т.е. обьекты, выполняющие операции ввода-вывода. Эти обьекты могут иметь буфер, но он не содержит всех данных. Данные туда могут подгружаться динамически по мере необходимости. У вас там какие-то ридеры, райтеры, логгеры. Если это обьекты ввода-вывода, то не пересылайте их, а создавайте заново на приемной стороне. Пересылать имеет смысл только параметры соединения - адрес, порт, путь и т.д.
PM MAIL   Вверх
lat
Дата 2.9.2009, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(COVD @  2.9.2009,  19:03 Найти цитируемый пост)
Зачем два р?


А так как то загадочнее звучит, и более ярко что ли)


Цитата(COVD @  2.9.2009,  19:03 Найти цитируемый пост)
У вас там какие-то ридеры, райтеры, логгеры.


Это всего лишь названия, не более. То есть они не работают с i/o, а только хранят в себе информацию. Это как контейнер классов в которых хранится конфигурационная информация.
--------------------
Gott weiß ich will kein Engel sein
PM ICQ   Вверх
MisterCleric
Дата 3.9.2009, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Доброе утро. Приношу извинения за орфографические ошибки  smile .
Как сказал COVD
Цитата

то, что в принципе не сериализуемо


Где-то какой-то из твоих классов имеет поле, которое попадает под это исключение.

 Надо проанализировать все вот эти поля в глубь чуть ли не до класса Object
Код

 protected List<Smsc>                        smsc;
 protected List<WriterExtended>            writer;
 protected List<ReaderExtended>            reader;
 protected MessagesloggerExtended            messageslogger;
 protected MessagessentloggerExtended        messagessentlogger;
 protected MessageserrloggerExtended        messageserrlogger;
 protected int                                queuesize;
 protected String                            lock;
 protected NotificatorExtended                notificator;
 protected List<AdditionalserverExtended>    additionalserver;
 protected List<Param>                        param;


авось,  да что-то найдешь...

Добавлено через 2 минуты и 11 секунд
Ладно, сузим область эти
Код

 protected int                                queuesize;
 protected String                            lock;

сериализуемы по спецификации.
Инстанс List, созданный тобой через ArrayList тоже таков. А вот инстансы элементов этих листов надо анализировать


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
lat
Дата 3.9.2009, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ребята, а что разве при использовании локального(Local) класса не происходит сериализация?
Или это лишь при вызове удаленного(Remote) класса?

Это сообщение отредактировал(а) lat - 3.9.2009, 10:36
--------------------
Gott weiß ich will kein Engel sein
PM ICQ   Вверх
MisterCleric
Дата 3.9.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Цитата

не происходит сериализация?


нет, не происходит. Так как локальные интерфейсы предназначены для работы в той же JVM, а ремоут предназначен для передачи по сети. А дальше, думаю, понятно


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
lat
Дата 3.9.2009, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну я так и думал, хотя надеялся что ответ будет другой ... тогда б проблема заключалась не в сериализации)
Эх, перелопатил все классы, которые исполь-ся в TransitDB. Вроде не конфликтные. Все наследуют класс Serializable ... 
А может быть причиной таких сбоев, использование аннотаций в классах (Hibernate) ?

--------------------
Gott weiß ich will kein Engel sein
PM ICQ   Вверх
MisterCleric
Дата 3.9.2009, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



нет, аннотации не сериализуются. Они есть часть декларации. может быть ситуация с какой-то вложенной коллекцией в какой-то сущности, которая LazyLoad


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
lat
Дата 10.9.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Задача решилась. 
Нужно было serialVersionUID поменять в нескольких классах (структура менялась).
--------------------
Gott weiß ich will kein Engel sein
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0714 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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