GlassFish
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í.
Vývojář | Eclipse Foundation |
---|---|
První vydání | 6. června 2005 |
Aktuální verze | 2. října 2024 (7.0.18) |
Operační systém | multiplatformní |
Platforma | Jakarta EE |
Vyvíjeno v | Java |
Typ softwaru | Aplikační software |
Licence | Eclipse Public License 2.0 a GPL2 s GNU Classpath Exception |
Lokalizace | angličtina |
Web | [1] |
Některá data mohou pocházet z datové položky. |
Historie
editovatPočátek serveru GlassFish se pojí s rokem 2003, kdy Sun vydal Sun ONE Application Server 7, který byl referenční implementací J2EE 1.3. 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.
Rok | Název | Verze | Specifikace | Podporované verze Javy | Zásadní změny |
---|---|---|---|---|---|
2003 | Sun ONE Application Server | 7 | J2EE 1.3 | J2SE 1.3, 1.4 | UI pro management instancí serveru |
2004 | Sun Java System Application Server | 8 | J2EE 1.4 | J2SE 1.4 | Derby, SOAP WS |
2006 | Sun Java Application Server | 9 | Java EE 5 | Java SE 1.5 | Anotace, Clustering |
2009 | Sun GlassFish Enterprise Server | 2.1 | Java EE 5 | Java SE 5 | |
2009 | Sun GlassFish Enterprise Server | 3 | Java EE 6 | Java SE 6 | OSGi, CDI, REST, Snazší migrace z Tomcatu, standardizované JNDI, zachování session při restartu, rychlejší start |
2011 | Oracle GlassFish Server | 3.1 | Java EE 6 | Java SE 6 | Aktualizace komponent, zlepšení integrace s produkty Oracle |
2013 | Oracle GlassFish Server | 4.0 | Java EE 7 | Java SE 7 | WebSocket, JSON, HTML5 |
2017 | Oracle GlassFish Server | 5.0 | Java EE 8 | Java SE 8 | HTTP/2 |
2019 | Eclipse GlassFish | 5.1 | Jakarta EE 8 | Java SE 8 | Aktualizace komponent, převedených od Oracle k Eclipse, tj. od Java EE k Jakarta EE |
2020 | Eclipse GlassFish | 6.0.0 | Jakarta EE 9 | Java SE 8 | Komponenty nově používají balíky jakarta.* místo původních javax.* |
2021 | Eclipse GlassFish | 6.1.0 | Jakarta EE 9.1 | Java SE 11 | Podpora JDK 11 |
2022 | Eclipse GlassFish | 6.2.5 | Jakarta EE 9.1 | Java SE 11, 17 | Velké množství oprav, obnovení komerční podpory |
2022 | Eclipse GlassFish | 7.0.0 | Jakarta EE 10 | Java SE 11, 17, 18 | Concurrency, Soteria, nový logovací systém, aktualizace a opravy [1] |
Využití
editovatVarianty
editovatServer
editovatServer 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. 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. 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. - 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. 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
editovatTato 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
editovatEmbedded 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
editovatDeploy aplikace
editovatPro 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 .jar, .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
editovatPokud 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 standardně odesílat zprávy : [email protected].
- 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: [email protected].
- 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 [2]
JDBC
editovatPokud 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 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. Pro vzorový příklad nadefinujeme v enterprise 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ě 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 <object> list = query.getResultList();
Reference
editovat- ↑ GlassFish 7.0 Delivers Support for JDK 17 and Jakarta EE 10. InfoQ [online]. [cit. 2023-01-10]. Dostupné online. (anglicky)
- ↑ http://spitballer.blogspot.com/2010/02/sending-email-via-glassfish-v3.html Nastavení Java Mail
Literatura
editovat- Gonclaves Antonio : Beginning Java™ EE 6 Platform with GlassFish™ 3: From Novice to Professional, Appres 2009, ISBN 978-1-4302-1954-5