GlassFish

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

GlassFish je open source aplikační server, vyvíjený nadací Eclipse Foundation pro platformu Jakarta EE. GlassFish byl historicky vyvíjen společnostmi Sun a Oracle pod licencemi GPL a CDDL, nicméně po převedení pod Eclipse Foundation přešel pod vlastní otevřenou licenci nadace EPL 2.0. GlassFish byl původně referenční implementací balíku specifikací Java EE. Poté, co celý balík specifikací i samotný GlassFish převzala nadace Eclipse, se změnila filozofie ohledně Jakarta EE a do budoucna se již s referenční implementací nepočítá. Naopak GlassFish prochází hektickým vývojem s cílem vrátit ho na provozní prostředí.

Historie

Počátek serveru GlassFish se pojí s rokem 2003, kdy Sun vydal Sun ONE Application Server 7, který byl referenční implementací J2EE 1. 3. +more V následujících letech Sun výrazně přepracoval celý projekt a změnil jeho název postupně na Sun Java System Application Server (verze 8 a 9), později Sun GlassFish Enterprise Server (verzování začalo od 2). Po převzetí firmy Sun firmou Oracle se změnilo jméno na Oracle GlassFish a vyšla verze 3, nicméně poté vývoj výrazně zpomalil. Již od verze SJSAS9 GlassFish podporuje clustrování, postupně přibývaly další a další vlastnosti jako například vysoká dostupnost. V roce 2019 byly veškeré specifikace Jakarta EE, některé jejich implementace i samotný GlassFish předány nadaci Eclipse a ta nyní pokračuje v jejich vývoji s výrazným přispěním dobrovolníků včetně firem.

2003Sun ONE Application Server7J2EE 1. 3J2SE 1. 3, 1. 4UI pro management instancí serveru
2004Sun Java System Application Server8J2EE 1. 4J2SE 1. 4Derby, SOAP WS
2006Sun Java Application Server9Java EE 5Java SE 1. 5Anotace, Clustering
2009Sun GlassFish Enterprise Server2. 1Java EE 5Java SE 5
2009Sun GlassFish Enterprise Server3Java EE 6Java SE 6OSGi, CDI, REST, Snazší migrace z Tomcatu, standardizované JNDI, zachování session při restartu, rychlejší start
2011Oracle GlassFish Server3. 1Java EE 6Java SE 6Aktualizace komponent, zlepšení integrace s produkty Oracle
2013Oracle GlassFish Server4. 0Java EE 7Java SE 7WebSocket, JSON, HTML5
2017Oracle GlassFish Server5. 0Java EE 8Java SE 8HTTP/2
2019Eclipse GlassFish5. 1Jakarta EE 8Java SE 8Aktualizace komponent, převedených od Oracle k Eclipse, tj. od Java EE k Jakarta EE
2020Eclipse GlassFish6. 0Jakarta EE 9Java SE 8Komponenty nově používají balíky jakarta. * místo původních javax.
2021Eclipse GlassFish6. 1. 0Jakarta EE 9. 1Java SE 11Podpora JDK 11
2022Eclipse GlassFish6. 2. 5Jakarta EE 9. 1Java SE 11, 17Velké množství oprav, obnovení komerční podpory
2022Eclipse GlassFish7. 0Jakarta EE 10Java SE 11, 17, 18Concurrency, Soteria, nový logovací systém, aktualizace a opravy
.

Využití

Varianty

Server

Server plní specifikace Jakarta EE Platform Profile, což je kompletní balík specifikací - díky tomu jde také o největší distribuci. Architektura aplikačního serveru je založena na modulovém jádru vycházejícího z OSGi (Open Service Gateway initiative) frameworku. +more 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 poskytující API pro komunikaci socketů.

Server je možno stáhnout např. z jeho domovské stránky. +more Zatímco verze před rokem 2010 mívaly binární instalátor, který umožňoval změnit některá nastavení a v některých verzích i nainstalovat JDK, novější verze jsou dodávány výhradně jako zip, který lze snadno rozbalit. Celá distribuce je taktéž dostupná na Maven Central.

Jelikož server je dodáván s přednastavenou doménou, po rozbalení lze doménu serveru rovnou spustit. Alternativně lze vytvořit i další domény, mazat je, zálohovat, měnit jejich nastavení, atd. +more - k tomu slouží příkaz asadmin na cestě glassfish/bin/asadmin. Doménu lze alternativně spravovat i přes REST rozhraní (port 4848), částečně JMX (port 8686) nebo webový prohlížeč (port 4848); jednotlivé porty lze v konfiguraci změnit a z bezpečnostních důvodů je na ně přístup pouze ze stejného počítače, na kterém doména běží. Pro vnější přístup je nutné nastavit šifrování a přístup výslovně povolit.

Po spuštění serveru můžeme vstoupit do administrá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. +more 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), .

Web Server

Tato verze je o něco menší, protože plní jen Jakarta EE Web Profile, což znamená, že obsahuje jen podmnožinu vlastností. Tato distribuce je prakticky konkurentem Tomcat a Jetty.

Embedded

Embedded verze je varianta, jíž lze použít přímo v aplikaci. Ač obsahuje většinu implementace serverové distribuce, nemá uživatelské rozhraní a některé další vlastnosti jsou zde nedostupné.

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 totožné) a pomocí browseru vybereme sbalenou aplikaci (soubory . +morejar, . war). Pokud nám nevyskočí Typ aplikace, či komponenty automaticky zvolíme jej v položce Type. Po stisku 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. +more 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. +morecom * Default User - zde zadáme jméno uživatele, ze kterého chceme standardně odesílat zprá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 protocol 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ásledující 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

==== 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. +more 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 databá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. +more Pro vzorový příklad nadefinujeme v enterprise beanu soubor persistence. xml.

Vzorový soubor persistence.xml :

mojeDB

A následně perzistenč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 list = query.getResultList;

Reference

Literatura

Gonclaves Antonio : Beginning Java™ EE 6 Platform with GlassFish™ 3: From Novice to Professional, Appres 2009,

Externí odkazy

[url=https://glassfish.org/docs/]Dokumentace[/url] * [url=https://www.eclipse.org/forums/index.php/f/419/]Komunitní forum[/url] * [url=https://glassfish.org/]Oficiální stránky GlassFish[/url]

Kategorie:Java Kategorie:Aplikační software Kategorie:Software firmy Sun Microsystems

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top