GlassFish

Z Multimediaexpo.cz


GlassFish je aplikační server vyvinutý společností Sun Microsystems pro platformu Java EE. GlassFish se řadí mezi open source podléhájící licencím GPL a CDDL. GlassFish je referenční implementace, to znamená, že není primárně určen pro provoz aplikací, ale slouží především jako ukázka implementace nových rysů v poslední specifikaci platformy JAVA EE. Současná verze serveru GlassFish je 3.0.1 a slouží jako referenční implementace proj Javu EE6. Existuje rovněž komerční verze, která nese označení Oracle GlassFish Sever 3.0.1. Obě verze se ve funkcionalitě téměr neliší, hlavní rozdíl je především v podpoře a automatickém stahování aktualizací.

Obsah

Historie

Počátek serveru GlassFish se pojí s rokem 2005, kdy byl započat projekt, jehož cílem bylo vytvořit plně certifikovaný Java EE server. První verze byla vydána v květnu 2006 a hodně zdědila z aplikačního serveru Tomcat. Druhá verze byla vydána v září 2007. Rozdílem oproti předchozí verzi byla především zvýšená podpora clustrování. Třetí verze byla vydaná 10.12.2009 a slouží jako referenční implementace pro Javu EE6. Mezi nejdůležitější vylepšení patří především ulehčení migrace aplikací z aplikačního serveru Tomcat. Rychlé startování (server na rozumné hardwarové konfiguraci nabíhá do pěti vteřin) a pluginy pro vývojová prostředí NetBeans a Eclipse umožňující snadnějíší deploy při menších změnách. V plánu jsou již verze 3.1 a 4.0 obě by měli stále zůstat open source. [1]

Architektura

Architektura aplikačního serveru je založena na modulovém járdu vycházejícího z OSGi (Open Service Gateway initiative) frameworku. GlassFish většinou využívá implementace Apache Felix, ale může běžet i na implementacích Equinox, či Knoperfish OSGi. OSGi framework zajišťuje, že aplikace i komponenty lze vzdáleně instalovat, startovat, ukončovat, aktualizovat i odinstalovat bez nutnosti restartu serveru. Rovněž je důležité zmínit Grizzly framework, multiprotokolový framework (HTTP, UDP atp.), využívající NIO (Non-blocking I/O) a poskytuje API pro komunikaci socketů.

Instalace

Server můžete stáhnou např z http://glassfish.net. Po spuštění instalace vás čeká obligátní odsouhlasení licenčních ujednání a nastavení cesty instalace. Následně vás čekají administrátorská nastavení. Doporučuji ponechat stávající nastavení admin port:4848 a http port:8080, bez hesla. Dále vás čeká nastavení úložiště vašeho JDK (mělo by být nalezeno automaticky) a samotná instalace může proběhnout). Na konci vás ještě instalátor požádá o registraci, která však není povinná.

Spuštění serveru

Po instalaci stačí již server spustit. V instalovaném adresáři zvolíme cestu glassfish/bin/ a zde spustíme dávkový soubor startserv.bat. Po spuštění serveru můžeme vstoupit do aministrátorské konzole spuštěním webového prohlížeče a zadáním adresy http://localhost:4848 (při zachování standardního nastavení). Administrátorská konzole je společné rozhraní jak pro administrátory, tak i pro vývojáře. Umožňuje správu konfigurací, nastavení JDBC (rozhraní pro spojení s databází, JDNI (rozhraní Java Name and Directory Interface), JavaMail, JMS (Java Message Services), Security Realms (nastavení bezpečnosti),..

Ukázky funkcionality GlassFish

Deploy aplikace

Pro nahrání aplikace, či komponenty na server vybereme v administrátorské konzoli v levém panelu možnost Application. V následujícím okně vybereme možnost deploy, vybereme zda se aplikace, či komponenta nachází na našem počítači, nebo je umístěna na serveru (pokud je server na stejném počítači jsou obě možnosti jsou totožné) a pomocí browseru vybereme zbalenou aplikaci (soubory .jar, .war). Pokud nám nevyskočí Typ aplikace, či komponenty automaticky zvolíme jej v položce Type. Po stistku tlačítka ok již můžeme v sekci Application s aplikací nakládat podle vlastního uvážení. U spustitelných aplikací nám je nabídnuta možnost Launch, která aplikaci spustí.

Java Mail

Pokud chceme v naší aplikaci využít odesílání emailu. Použijeme k tomu GlassFish modul Java Mail. Pro jeho nastavení zvolíme v administrátorské konzoli možnost Resources a následně v této nabídce JavaMail Session. Zde zvolíme tlačítko New a vytvoříme novou session. Tu si podle vlastního uvážení pojmenujeme např : mojeMailSession. Následující parametry nastavíme následovně (příklad je pro web server gmail):

  • Mail Host – zde zadáme SMTP host server : smtp.gmail.com
  • Default User – zde zadáme jméno uživatele, ze kterého chceme stadratně odesílat zpávy : abcd@gmail.com.
  • Default Return Address – Tuto emailovou adresu využije aplikační server, pokud zpráva neobsahuje adresu odesílatele. Ve většině případů se bude shodovat s jménem uživatele: abcd@gmail.com.
  • Description – Popis. Nemusíme vyplňovat
  • Status – Nastavíme na Enabled.
  • Store Protocol a Store Protocol Class – zanecháme současné hodnoty.
  • Transport protocol – v případě gmailu, či jiných serverů využívajících smtps změníme na: smtps
  • Transport class – pokud měníme položku transport protoocl na smtps, změníme i třídu na:

com.sun.mail.smtp.SMTPSSLTransport

Pokud server vyžaduje autorizaci (pravděpodobně ano), musíme ještě přidat vlastnosti (properties) pro autorizaci.Toho docílíme pomocí tlačítka add propery.

Zde přidáme následujcí vlastnosti:

  • mail-smtps-auth – nastavení zdali server vyžaduje autorizaci zadáme: true
  • mail-smtps-password – do tohoto pole zadáme naše heslo: abcd

V Java aplikaci pak můžeme využít dependency injection a pomocí anotace

@Resource(name = "mojeMailSession")
private Session mojeMailSession;

Pro odeslání zprávy pak pouze vytvoříme zprávu.

Message message = new MimeMessage(mojeMailSession);

Vyplníme ji potřebnými údaji a odešleme pomocí třídy Transport:

Transport.send(message);

Více informací viz [2]

JDBC

Pokud chceme v aplikaci pracovat s databází, zvolíme v levém panelu možnost Resource – JDBC. V referenční implementaci je standardně využíváno databáze Derby. Pokud chceme využít jiné databáze vybereme možnost Connection Pools a zde zvolíme tlačítko New. A následně vybereme v možnosti Database Vendor tu datábázi, kterou chceme využívat. Pokud jsme spokojeni s Derby, či jsme nastavili jinou možnost pomoci Connection Pools zvolíme možnost JDBC Resources. Pomocí tlačítka New vytvoříme nový zdroj. JDNI name pojmenujeme náš zdroj podle vlastního uvážení např : mojeDB Pool name vybereme pool, jaký chceme využívat (typicky Derby pool)

Nyní musíme databázi spustit (např v NetBeans Services-Database-jdbc:derby://localhost:1527-Connect) a můžeme s ní pracovat. Pro vzorový příkad nadefinujeme v enterprice beanu soubor persistence.xml.

  Vzorový soubor persistence.xml :

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
            http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
   <persistence-unit name="databaze">
       <jta-data-source>mojeDB</jta-data-source>      
   </persistence-unit>
</persistence>

A následně persitenční jednotku injektujeme do jednotlivých tříd

@PersistenceContext(unitName = "WebEmail")
private EntityManager entityManager;

Poté můžeme využít databázi ke svému prospěchu např :

Query query = entityManager.createQuery("select a from Email a ");
List <object> list = query.getResultList();

Reference

  1. https://glassfish.dev.java.net/roadmap/ Plán vývoje dalších verzí GlassFish
  2. http://spitballer.blogspot.com/2010/02/sending-email-via-glassfish-v3.html Nastavení Java Mail

Literatura

Gonclaves Antonio : Beginning Java™ EE 6 Platform with GlassFish™ 3: From Novice to Professional, Appres 2009, ISBN 978-1-4302-1954-5

Externí odkazy

Dokumentace Glassfish

GlassFish komunita

Oficiální stránky Glassfish

GlassFish is google’s