Zkušenosti s nasazením J2EE aplikací na AS GlassFish ing. Václav Herout, Milan Veselý CCA Group a.s., 31. 10. 2007
O co jde? Software pro komunikaci mezi serverem a více klienty Enterprise aplikace (verze Java 1.5) Databáze: Oracle 10g Požadavek od zákazníka: Na klientech nekomerční AS Původní návrh aplikačních serverů Klient – AS GlassFish (Java EE 5) Server – Oracle AS (J2EE 1.4)
Co je GlassFish? Aplikační server od Sun Microsystems Free, open source Java EE 5 JSP 2.1, JSF 1.2, Servlet 2.5, EJB 3.0, JAX-WS 2.0, JAXB 2.0, atd.
Použité technologie JDBC (Java Database Connectivity) JMS (Java Message Service) Web services Timers
Instalace a nastavení Instalace AS GlassFish probíhá spuštěním instalačního JAR souboru Nastavení je možné provádět přes příkazovou řádku nebo přes webové rozhraní Pro zákazníka je potřeba vytvořit instalační balíček včetně potřebného nastavení (JDBC, JMS)
Nastavení JDBC Connection Pool JDBC Resource Nastavení URL databáze, přihlašovací jméno, heslo Příkaz: create-jdbc-connection-pool JDBC Resource JNDI name pro connection pool Příkaz: create-jdbc-resource
Nastavení JMS Queue ConnectionFactory Fronta zpráv Factory pro přístup k frontě
Web services Využití Web services pro asynchronní komunikaci mezi serverem a klientem Web service na serveru i na klientu Šifrování web services Využití XWS-Security pro automatické šifrování a dešifrování zprávy com.sun.xml.wss.XWSSProcessor.verifyInboundMessage, secureOutboundMessage
Převod DB → XML Pro odeslání data nutné převést data z databázových tabulek do XML dokumentu Využití technologie JAXB Definice tabulek v XSD, generování do Java class Transformace do XML (javax.xml.bind.Marshaller)
Problémy Oracle AS Při snaze o využití výše uvedených technologií na Oracle AS (OC4J) se vyskytly problémy: Generovaní class pro JAXB (nástroj Toplink) Generování klienta Web service Nemožnost umístění některých tříd do EJB projektu (Exception in thread „OC4J Launcher“) Řešení: přechod na AS GlassFish
Problémy GlassFish Ani GlassFish není dokonalý GlassFish verze 1 Problém s uvolňováním paměti při načtení více tříd namapovaných na databázové tabulky GlassFish verze 2 Vyřešen problém s pamětí Problém se šifrováním příloh Web service