„Szoftverfejlesztés J2EE platformon - Labor: EJB 3.0” változatai közötti eltérés

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
a (David14 átnevezte a(z) EJB 3.0 labor lapot a következő névre: Szoftverfejlesztés J2EE platformon - Labor: EJB 3.0)
97. sor: 97. sor:
 
===EJB-QL 3.0 újítások===
 
===EJB-QL 3.0 újítások===
  
ld. [[J2EELaborJMS#ejbql|JMS labor]]
+
ld. [[Szoftverfejlesztés J2EE platformon - Labor: JMS|JMS labor]]
  
  

A lap 2014. február 2., 21:03-kori változata

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót



Banki alkalmazás

Inicializálás

  • Nyissuk meg a BankApp, BankApp-ejb es BankApp-war projekteket
  • Jobb click a projecteken, Resolve Reference Problems
    • valasszuk ki a megfelelo konyvtarat
  • Runtime ful / Databases / derby / Connect vagy
    Tools / Java DB Database / Start Java DB Server

Táblák létrehozása

  • Runtime ful / Databases / derby / Tables / Create Table...
    • Client (clientid INT PRIMARY KEY NOT NULL, name VARCHAR(50), address VARCHAR(200))
    • Account (accountid INT PRIMARY KEY NOT NULL, createdate DATE, balance DOUBLE)
  • varazsloban nem lehet foreign key-t beallitani =>
    • jdbc:derby / Execute Command...
    • ALTER TABLE APP."Account" ADD CONSTRAINT FK_CLIENT FOREIGN KEY ("clientid") REFERENCES APP."Client"("clientid")
      (minden tabla- es mezonev case sensitive; ha nem nagybetusek, idezojelbe kell tenni)
      • Ehhez kell egy =clientid= attribútumot is létrehozni előbb.
    • Account / Refresh
    • Foreign Key alatt meg kell jelennie az FK_CLIENT idegen kulcsnak

Entity beanek létrehozása

  • EJB projekten New / File/Folder... / Persistence / Persistence unit
    • Default beallitasokkal (name=BankApp-ejbPU, persistence provider=TopLink, data source=jdbc/sample) mukodik
  • EJB projekten New / Entity classes from database...
    • Data source: jdbc/sample
    • Adjuk hozza az Account tablat, a Client tabla az idegen kulcs miatt automatikusan hozzaadodik
    • Package: bank.ejb
    • Generate Named Query Annotations for Persistent Fields maradjon beixelve
  • BankApp-ejb / Source Packages / bank.ejb alatt megjelennek a generalt beanek
  • Az accountid es clientid private valtozok ele irjunk @GeneratedValue annotaciot

Session beanek létrehozása

(Ebből kell ellesni az entity bean hívást az önálló feladathoz)

  • EJB projekten New / File/Folder... / Persistence / Session beans for Entity Classes
    • Add all>>
    • Local interface
  • Letrejon a bank.ejb package-en belul 4 java file: AccountFacade.java, AccountFacadeLocal.java, ClientFacade.java, ClientFacadeLocal.java.
  • AccountFacade.java
    • A =@PersistenceContext= annotacio hatasara, a =private EntityManager em;= valtozot automatikusan inicializalja az alkalmazas szerver.

Önállóan megoldott feladat

  • BankOperator stateless session beant letrehozni
    • =void createClient(Client c);=
    • =void createAccount(int clientid, Account a);=
    • =void transfer(int from, int to, double amount) throws BankException;=

Részleges megoldás

  • =tar cf BankApp.tar BankApp=
  • ctrl+d-vel lepjunk ki a zonabol
  • =scp labor@zoneX:BankApp.tar .=

Példa egyéb EJB3 feature-ökre

Késleltetett átutalás

@Stateless
... implements TimedObject;

@Resource
private TimerService ts;
ts.CreateTimer(mikor, TransferInfo);

public void ejbTimeout(Timer t) {
	t.get...
	transfer...
}

Interceptors

@Interceptors({Logger.class, c2.class})
@Stateless
public class SessionBean extends SessionBeanLocal {
}

public class Logger {
	 @AroundInvoke
	 public Object ...(InvocationContext ic) throws Exception {
		  //ic.getMethod().getName()
		  //ic.getMethod().getParameters()
		  return ic.proceed();
	 }
}

EJB-QL 3.0 újítások

ld. JMS labor


-- Peti - 2006.10.11. </noautolink>