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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как работают взаимосвязи в CMP (EJB 2.0), Сложновато как-то... 
V
    Опции темы
Maverick
Дата 21.2.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



При помощи молотка, зубила и NetBeans 5.5 удалось сотворить...

Это код главного бина1, к которому подвязывется второй бин2...

Код

package EjbRela;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 * This is the bean class for the Bean1Bean enterprise bean.
 * Created 15.02.2007 15:39:26
 * @author u0109
 */
public abstract class Bean1Bean implements EntityBean, Bean1RemoteBusiness, Bean1LocalBusiness {
    private EntityContext context;
    
    // <editor-fold defaultstate="collapsed" desc="EJB infrastructure methods. Click on the + sign on the left to edit the code.">
    // TODO Consider creating Transfer Object to encapsulate data
    // TODO Review finder methods
    /**
     * @see javax.ejb.EntityBean#setEntityContext(javax.ejb.EntityContext)
     */
    public void setEntityContext(EntityContext aContext) {
        context = aContext;
    }
    
    /**
     * @see javax.ejb.EntityBean#ejbActivate()
     */
    public void ejbActivate() {
        
    }
    
    /**
     * @see javax.ejb.EntityBean#ejbPassivate()
     */
    public void ejbPassivate() {
        
    }
    
    /**
     * @see javax.ejb.EntityBean#ejbRemove()
     */
    public void ejbRemove() {
        
    }
    
    /**
     * @see javax.ejb.EntityBean#unsetEntityContext()
     */
    public void unsetEntityContext() {
        context = null;
    }
    
    /**
     * @see javax.ejb.EntityBean#ejbLoad()
     */
    public void ejbLoad() {
        
    }
    
    /**
     * @see javax.ejb.EntityBean#ejbStore()
     */
    public void ejbStore() {
        
    }
    // </editor-fold>
    
    
    public abstract Long getKey();
    public abstract void setKey(Long key);

    public abstract String getNameBean1();

    public abstract void setNameBean1(String nameBean1);
    
    
    public Long ejbCreate(Long key, String nameBean1)  throws CreateException {
        if (key == null) {
            throw new CreateException("The field \"key\" must not be null");
        }
        
        // TODO add additional validation code, throw CreateException if data is not valid
        setKey(key);
         setNameBean1(nameBean1);
        return null;
    }
    
    public void ejbPostCreate(Long key, String nameBean1) {
        try {
            // TODO populate relationships here if appropriate

            // тут происходит присвоение CMR-полю значения второго бина, найденого по ключу 4 (тест)  
            setGoBean2CMR((Bean2Local) lookupBean2Bean().findByPrimaryKey(new Long(4)));
        } catch (FinderException ex) {
            ex.printStackTrace();
        }
        
    }
    
    public abstract EjbRela.Bean2Local getGoBean2CMR();

    public abstract void setGoBean2CMR(EjbRela.Bean2Local goBean2CMR);
     
    // метод возвращает локальный интерфейс связанного бин2
    private Bean2LocalHome lookupBean2Bean() {
        try {
            Context c = new InitialContext();
            Bean2LocalHome rv = (Bean2LocalHome) c.lookup("java:comp/env/ejb/Bean2Bean");
            return rv;
        }
        catch(NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne);
            throw new RuntimeException(ne);
        }
    }


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


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


Новичок



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

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



Цитата(Maverick @ 21.2.2007,  09:20)
последний вопрос  "bookcaseHome ищем в методе setEntityContex" - как это сделать?? каким образом?? покажи код, пожалуйста...

Код

public void setEntityContext(
    EntityContext entityContext
) throws EJBException, RemoteException {
    this.entityContext = entityContext;
    try {
      Context initialContext = new InitialContext();
      bookcaseHome = (BookcaseLocalHome) 
        initialContext.lookup("java:comp/env/ejb/Bookcase");
    } catch (Exception e) {
      handleException(e, "setEntityContext");
      throw new EJBException(e);
    }
  }


При этом конечно должно быть поле у этого Entity-компонента:

Код

protected BookcaseLocalHome bookcaseHome;


Это сообщение отредактировал(а) Mikamj - 21.2.2007, 14:06
PM WWW ICQ   Вверх
Maverick
Дата 21.2.2007, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Спасибо огромное всем за обсуждение...  вроде дошло... но перползать на EJB3 все равно надо...


--------------------
smile
PM ICQ GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0654 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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