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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> @ManyToOne c бином из другого EAR, EJB3 
V
    Опции темы
Maverick
Дата 12.3.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Доброго дня...

Уважаемые, существует два бина из разных EAR- приложений...

Адрес в одном приложении...
Код

@Entity
@Table(name="Address")
public class AddressEJB implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id; 
    
    private String houseAddress;
    private String apartmentAddress;
    
    @ManyToOne
    private
    StreetEJB streetEJB;


Банк в другом приложении...
Код

@Entity
@Table(name="Bank")
public class BankEJB implements Serializable {
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    
    private String codeBank;
    private String fiscodeBank;
    private String fullnameBank;
    private String smallnameBank;
    
    @ManyToOne
    private AddressEJB addressEJB;



В Банке существует связь с адресом
Код

@ManyToOne
    private AddressEJB addressEJB;
    

Если бы оба бина сидели в одном EAR - проблем бы не было... а так на попытку продеплоится - выдает ошибку... 
Код

@OneToOne or @ManyToOne on bankEJB.BankEJB.addressEJB references an unknown entity: addressEJB.AddressEJB

При компиляции проблем нет - я просто указал проект-jar Адреса как библиотеку Банков...
Есть ли корректный способ решить эту проблему??

Добавлено @ 18:11 
 smile то есть основной вопрос - можно ли использовать эти самы связи между удаленными бинами... если нет - то как правильно организовывать ее через удаленные интерфейсы...??

Это сообщение отредактировал(а) Maverick - 12.3.2007, 18:00


--------------------
smile
PM ICQ GTalk   Вверх
Mikamj
Дата 12.3.2007, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 19.2.2007
Где: Владимир

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



EntityManager связан только одним persistence context.
Набор объектов, которые могут управляться данным экземпляром EntityManager, определяется persistence unit'ом, который определяет набор всех классов, связанных или сгруппированных приложением (т.е. EAR-файлом), и которые должны отображаться на одну и ту же базу данных.
PM WWW ICQ   Вверх
Maverick
Дата 13.3.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



То есть это невозможно? Так получается нельзя разнести бины по разным серверам? Тут, например, банки работают, а там, на другом сервере, адреса...? Не заманчиво.... А если придется потом остановить  что-нить для обновления или профилактики? Например, чтобы обновить банки - придется гасить все огромное приложение?? (Хотя ерунду говорю - если они так будут связаны, все равно остановятся)...

Ну хорошо - связь прямую сделать невозможно?? Как же правильно поступить?? Вызвать удаленный интерфейс и ручками растыкать все данные в setter и getter? Где это более правильно сделать? В самом бине? или в его сессионном фасаде?

Это сообщение отредактировал(а) Maverick - 13.3.2007, 09:10


--------------------
smile
PM ICQ GTalk   Вверх
ecologist
Дата 13.3.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Видимо придется делать такие бины не связанными - просто два разных бина могут общаться друг с другом, получая списки или отдельные объекты. И связи между ними на уровне сервера приложений уже не делать - только логическая связь внутри самих бинов. Что-то других мыслей нет пока.
PM MAIL   Вверх
Maverick
Дата 13.3.2007, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



 smile   где это правильно намутить? в самом бине или его сессионном фасаде?


--------------------
smile
PM ICQ GTalk   Вверх
Maverick
Дата 13.3.2007, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Вопросы растут как ком снежный... В каком виде тогда представлять адрес в банке?? Просто в виде числового идентификатора-указателя на адрес в таблице адресов? Судя по всему EJB3 тоже не сильно распространен??


--------------------
smile
PM ICQ GTalk   Вверх
chief39
Дата 13.3.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


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

Репутация: 11
Всего: 77



Если это два разных еара, которые могут функционировать на разных машинах и, посему, вроде бы как немного независимы логически - тогда лучше сделать связку на уровне фасадов.

Вот только , если банк будет часто дёргаться и адреса подтягиваться - может нет смысла их по разным еаркам? Или адреса будут использоваться не только для банков? Типа "словарь данных"?
Тогда через фасад - получение банком адреса унифицированым методом.
Для скорости(если понадобится) - кэш адресов на стороне банков(в логике фасада)

Добавлено @ 15:39 
Цитата(Maverick @  13.3.2007,  11:59 Найти цитируемый пост)
Вопросы растут как ком снежный... В каком виде тогда представлять адрес в банке?? Просто в виде числового идентификатора-указателя на адрес в таблице адресов? 

Таки да. Почему бы и нет?
Опиши структуру данных и логикик. Почему банки с адресами в разных еарках должны очутиться?


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Maverick
Дата 13.3.2007, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Дело в том, что адреса эти будут привязаны ко многим задачам - и отдел кадров (сотрудники), и правонарушители, и клиенты, и офисы, и регистрация авто, контрагенты, и контракты, поставки.... короче, туча задач - и везде одни и те же адреса... соответственно, пытаемся выделить такие важные задачи в отдельные EAR, чтобы при остановке одной задачи - остальные крутились... 
 
Цитата(chief39 @  13.3.2007,  15:38 Найти цитируемый пост)
Тогда через фасад - получение банком адреса унифицированым методом.


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

Структуры данных максимально простые пока - только бы понять как правильно сделать... 

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

Как сделать так, чтобы Банк автоматом писал изменения в своём Адресе?? Вот и вся задача... 

Я уже в третий раз пол-проекта переписываю... EJB1, EJB2, теперь вот EJB3...  smile






--------------------
smile
PM ICQ GTalk   Вверх
chief39
Дата 13.3.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


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

Репутация: 11
Всего: 77



Цитата(Maverick @  13.3.2007,  15:50 Найти цитируемый пост)
Дело в том, что адреса эти будут привязаны ко многим задачам - и отдел кадров (сотрудники), и правонарушители, и клиенты, и офисы, и регистрация авто, контрагенты, и контракты, поставки.... короче, туча задач - и везде одни и те же адреса... соответственно, пытаемся выделить такие важные задачи в отдельные EAR, чтобы при остановке одной задачи - остальные крутились... 

Аха... таки "словарь данных"


Цитата(Maverick @  13.3.2007,  15:50 Найти цитируемый пост)
что такое унифицированный метод?? не хочу изобретать велосипед - все хожу по цепи кругом... 

То есть? smile Это не термин - это я так выразился. Это означает, что метод будет возвращать Value Object по параметру с айди адреса. И этот метод будет использоваться как банками так и всеми остальными частями системы.

Цитата(Maverick @  13.3.2007,  15:50 Найти цитируемый пост)
есть Адрес - идентификатор, название улицы... с теми же фасадом и интерфейсом... 

То есть с тем же фасадом? 
Сделай фасад Banks и фасад Addresses
Когда вызываешь Banks.getBankByName("Bank of Taiwan")  - в этом методе фасада вытягивается банк из энтити, получается айди адреса, вызывается метод Adresses.getAddressById(45454), получаешь ValueObject адреса, перегоняешь из него данные в объект BankValueObject(туда же данные из бина банк). Вуаля - все данные по банку - в одном объекте - можно отдавать "на клиента". 
BankValueObject можно кэшировать для скорости в фасаде


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Maverick
Дата 15.3.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



А нельзя в качестве ValueObject использовать тот же самый Entity? Ведь какой смысл создавать такой же класс только без аннотации?

Добавлено @ 10:38 
Фасады, естественно, разные.. "те же" в смысле аналогичные... 


--------------------
smile
PM ICQ GTalk   Вверх
chief39
Дата 15.3.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


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

Репутация: 11
Всего: 77



Цитата(Maverick @  15.3.2007,  10:36 Найти цитируемый пост)
А нельзя в качестве ValueObject использовать тот же самый Entity? Ведь какой смысл создавать такой же класс только без аннотации?

Честно говоря, до еджиби 3 ещё никак руки не дойдут - всё дела да дела... Если верно помню - то именно так и обстоят дела. И это одна из фич - "бин = трансфер обжект". Но это поищи у сана на сайте.


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Maverick
Дата 15.3.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Ага... значится, мысль правильная... smile


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

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

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


 




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


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

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