Dnes se zaměříme na možnosti Caché při spolupráci s
architekturou Enterprise JavaBeans.
EJB zná dva druhy beanů – a to beany s vlastní
správou persistence – BMP (Bean Managed Pesistency) a
beany, jimž persistenci obstarává příslušný kontejner
v němž jsou provozovány – CMP (Container Managed
Persistency). Zatímco BMP beany jsou obecně
výkonnější než CMP beany, jejich tvorba je náročná,
na rozdíl od CMP beanů, které jsou „zdarma".
Caché zcela automaticky generuje BMP beany. Vývojářům
tudíž odpadá nutnost pracně implementovat vlastní
persistenci a přesto získávají výkonnější variantu
beanů.
Technologicky Caché vytváří EJB komponenty
používající stejný komunikační protokol jako klasická
Caché Java vazba. Tedy beany používají objektový
přístup při komunikaci s databází Caché, nicméně
uživatel má možnost použít i relační přístup je-li to
výhodné.
Podobně jako při tvorbě Java projekcí Caché tříd, i
EJB komponenty se definují v rámci Caché tříd pomocí
projekce.
V současnosti jsou k dispozici předdefinované
projekce do EJB serverů BEAWebLogic, JBOSS a Pramati.
K dispozici je i obecná projekce pro případné jiné
EJB servery.
Při definování parametrů nové EJB projekce je nutno
vyplnit přinejmenším některé z nich. V zásadě se
jedná o mj. tyto parametry (v tomto případě u
projekce %Projection.EJBWebLogic):
Parametr | Výchozí hodnota | Popis |
---|---|---|
APPSERVERHOME | Cesta k umístění instalace EJB serveru | |
BEANNAME | Volitelný název beanu | |
CACHEHOST | 127.0.0.1 | IP adresa Caché serveru |
CACHEPORT | 1972 | TCP port, na němž Caché naslouchá |
CLASSLIST | Volitelný seznam Caché tříd, zahrnutých do generování EJB komponent |
|
DRIVERMANAGER | False | Udává, zda se má použít relační přístup |
JAVAHOME | Cesta k instalaci Javy | |
PERSISTENCETYPE | BMP | |
ROOTDIR | Adresář, do kterého se mají generovat zdrojové soubory EJB |
|
TRANSACTIONISOLATION | TRANSACTION_READ_COMMITTED | Úroveň transakční izolace záznamů |
USEPRIMARYKEYS | Udává, zda použít primární klíče pro přístup k záznamům v Caché |
Použijeme-li k demonstrování třídu ucto.demo.Syntetika z dřívějších dílů,
může výsledná definice projekce vypadat třeba takto:
Projection EJBBEA10 As %Projection.EJBWebLogic(APPSERVERHOME ="C:\bea\wlserver_10.0\server", BEANNAME = "mojeUcto",
CACHEPORT = 56773, JAVAHOME = "c:\bea\jdk150_06", ROOTDIR ="c:\deployments\source\ucto");
Při kompilaci Caché třídy se vygenerují:
- EJB Entitní beany
- Popisovače nasazení (deployment descriptors)
- Skripty pro nasazení komponent do serveru
- Kód pro testování vytvořených beanů
Po skončení kompilace a vygenerování všech EJB
komponent je potřeba spustit soubor deployear.bat, který provede kompilaci
jednotlivých Java zdrojových souborů a zkopíruje
soubory do daného cílového adresáře EJB aplikace.
Vzhledem k různorodosti EJB serverů je možné, že
bude nutno soubor deployear.bat
lehce upravit, například přidat cesty k jar archivům
EJB serveru. Například v mém konkrétním případě pro
BEA WebLogic server verze 10 se upraví řádek
definující proměnnou JAVACLASSPATH tak, aby obsahoval
i proměnnou WEBLOGIC_CLASSPATH:
set JAVACLASSPATH=%JAVA_HOME%\lib\tools.jar;%WL_HOME%\lib\weblogic_sp.jar;%WL_HOME%\lib\weblogic.jar;%WEBLOGIC_CLASSPATH%
Testování beanu
Výsledkem kompilace třídy ucto.demo.Syntetika jsou
následující soubory a adresáře
mojeUcto | Adresář se zdrojovými Java soubory spjatými s beany |
---|---|
mojeUctoObj | Adresář se zkompilovanými Java soubory souvisejícími s beany |
TestmojeUctoClient | Testovací aplikace pro spuštění z příkazové řádky OS |
TestmojeUctoServlet | Webová testovací aplikace |
runtestclient.bat | Dávkový soubor pro spuštění testovací aplikace z příkazové řádky |
mojeUctoConnectionPool.xml | Soubor s obecnými informacemi o připojení ke Caché |
deployear.bat | Dávkový soubor vytvářející JAR a EAR archivy včetně testovacích aplikací |
Samotné otestování beanu můžeme provést buď
spuštěním dávkového soboru runtestclient.bat nebo webové aplikace
zadáním následující URL: http://127.0.0.1:7001/TestmojeUctoServlet/TestmojeUcto.html
Upozornění na závěr: Caché v současné době
nepodporuje EJB 3.0, všechny beany se generují pro
EJB 2.
Tímto končí, přinejmenším prozatím, náš pravidelný
seriál. Určite se ale, pokud se objeví zajímavý
námět, ozvu.