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.