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.