„Szoftverfejlesztés J2EE platformon - Labor: EJB 3.0” változatai közötti eltérés
A VIK Wikiből
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. [[ | ld. [[Szoftverfejlesztés J2EE platformon - Labor: JMS|JMS labor]] | ||
A lap 2014. február 2., 22:03-kori változata
Ez az oldal a korábbi SCH wikiről lett áthozva.
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
- futtatas laborbol: BankApp deploy utan http://zoneX:8080/BankApp-war/index.jsp
- =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>