Zdravim,
mam problem s implementaci Factory Patternu. Nevim tedy, jestli zrovna tohle je tedy idealni zpusob.
Pr.:
Mam nejakou beanu, ktera na zaklade predaneho parametru v metode vraci danou instanci jine beany:

@EJBs({
  @EJB(name="ejb/P1", beanInterface=Interface1.class),
  @EJB(name="ejb/P2", beanInterface=Interface2.class),
  @EJB(name="ejb/P3", beanInterface=Interface3.class),
  @EJB(name="ejb/P4", beanInterface=Interface4.class)})
@Stateless
class MyBean implements ... {
  public Object getBean(int bean) {
      try {
return context.lookup("ejb/P" + modul); } catch (Exception e) { throw new FactoryException("Chyba pri dochledavani tridy. " + e.getMessage()); }
  }
}

Jinymi slovy, podle daneho cisla, coz je ve finale nejaky PK z databaze, potrebuji vratit tu danou beanu.
Problem neni ani tak s vracenim, jako s udrzenim instance.
Zavola se jedna beana, po chvili jina a tam je problem. Potreboval bych nejak tu prvni ukoncit. Samotne beany implementuji interface, ktery dedi jiny interface, ktery obsahuje metody pro nejakou akci, jedna se nejakou praci s daty. Problem ovsem je, ze po prvnim zavolani se mi uchova PersistenceUnit a pote, kdyz napodruhe pracuji s entitami, ktere byly pouzite i v prvni fazi, tak se mi neaktualizuji podle DB,
ale jsou uchovany v EM podle posledniho stavu.
Problem potom nastava v tom, ze i kdyz provedu nejake smazani, tak se mi stejne uchovavaji v EM. Po pokusu o persist se mi vyhodi hlaska o 'Cannot persist detached entity'. Podle toho, co jsem cetl v EJB3 In Action, tak v EM se uchovavaji bud po dobu transakce (vesmes pouziva, requires_new nebo not_supported, jedna se o davku, takze to v transakci udrzovat nemuzu), nebo po dobu existence Persistence Unit, respektive pri existenci instance, ktera obsahuje:
@PersistenceContext(unitName="default") private EntityManager em;

Da se nejak zaridit, aby se prvni instance ukoncila? Zejmena potom, co se zavola jina z factory.
S tim souvisi jeste jedna otazka. Da se nejak dedit jedna beana do druhe?
V knize jsem nasel, ze takova moznost existuje, ale kdyz to pouziji v netbeans, hlasi mi to chybu o tom, ze extendovat jinou beanu nesmim :(
@Stateless
class Bean1 implements Bean1Interface {
}

@Stateless
class Bean2 extends Bean1 implements Bean2Interface {
}

Diky moc za nakopnuti :)



________ Information from NOD32 ________
This message was checked by NOD32 Antivirus System for Linux Mail Servers.
http://www.eset.com

Odpovedet emailem