SOFTWARE INFRASTRUCTURE All Hands MONROVIA, USA ISV Codecamp Java EE & Projekt Migration to GlassFish GlassFish Daniel Adelhardt Daniel Software Adelhardt & Java Ambassador Sun Microsystems Sun Microsystems GmbH 1 Agenda Agenda • Java Enterprise Edition > Past, Present & Future • Sun Projekt GlassFish > > > > Überblick, Adaption und Architektur Entwickler Features & GlassFish Administration Clustering & High Availability Weiterführende Themen – Portale – Single Sign On mit Open SSO – Java Business Integration & Open ESB 2 Java Enterprise Edition im Verlauf der Zeit Java EE 5 J2EE 1.4 J2EE 1.3 JPE 1998 J2EE 1.2 Servlets, JSP, EJB, JTS,JTA, JNDI 1999 Plus JCA, EJB 2.0, 2001 Plus Web Service, Management, Deployment, JCA 1.5 2003 Plus JSF, JPA, Web Services, EJB 3 Minus: Altlasten und Komplexität ! 2006 3 J2EE – 9 Jahre Server Side Java Was wurde erreicht – ...und was nicht? • Standard > Offenheit > De-facto Standard für Server Side Entwicklung > Behutsame Erweiterung • Community > Großer Hersteller Support > Vitale Community • Auswahl > Unterschiedliche Lizenz- und Geschäftsmodelle • Application Server sind Commodity > Lizenzkosten -> €0 > Proprietäre Erweiterungen • “Innovation happens elsewhere” > .Net, Spring, Scripting • Vorurteile gegen J2EE > Komplexität > Lernkurve > Kosten 4 Java EE 5 – High Level Ziele • Business Ziele > Wiedervereinigung der Hersteller > Stärkung der Plattform > Raschere Spezifikation neuer Plattformversionen • Community Ziele > Java EE als Standard für Server side Java zu stärken > Neueinsteiger für die Plattform zu begeistern • Technische Ziele > Vereinfachung der Entwicklung > Rascherer Einstieg für Plattform “Neulinge” > “Entrümpelung & Modernisierung” der Plattform 5 Java EE 5 – technische Ziele im Detail • Überarbeitung der Web Services Integration > Einfaches Programmiermodell, Erweiterbare Architektur > Lernen aus den Fehlern von J2EE 1.4! • Komplette Überarbeitung der Enterprise Java Beans > Eliminierung vieler Anti-Patterns, Radikale Vereinfachung > Beilegung des „Persistence Wars“ -> Java Persistence API > Aufgreifen von IoC Mustern • Vereinfachung der Web Entwicklung • Kompatibilität > Kompatibilität mit J2EE 1.4 und Java SE 6 6 Java EE 5 Spezifikationen Neu oder massiv überarbeitet JAX-B (JSR-222) JAX-WS (JSR-224) StAX (JSR-173) Web Services Metadata (JSR-181) JSP Standard Tag Library (JSR-52) Java Server Faces 1.2 (JSR-252) XML /W Web EJB 3.0 und Java Persistence API (JSR-220) Common Annotations (JSR-250) eb S ervi ces Tech nolo gies EoD 7 Java Enterprise Edition 5 Wie wurde das Ziel „Ease of Development“ umgesetzt? • Vereinfachung des Packagings > Deployment Deskriptoren sind optional für EJB+Web Module > Packaging von Shared Libraries • Entfernen von Requirements und Konventionen > > > > Plain Old Java Objects (POJO) Stil “Convention over Configuration” IOC Anleihen - Dependency Injection Leistungsfähigere und einfachere Frameworks • Java Annotations zur Vereinfachung von APIs > Web Services, OR Mapping, Java / XML Databinding > Deployment Informationen, ... 8 Java EE 5 Spezifikationen Vorteile der neuen APIs • Enterprise Java Beans 3.0 (JSR-220) > Nutzung von @Stateful, @Stateless, @Remote Annotations um EJBs zu markieren > EJB = Einfaches Java interface und POJO Klasse > Keine obskuren Callback Methoden mehr • Java Persistence API > Neuer und vereinheitlichter Ansatz für Java Persistenz > Annotation basierter OR Mapping per @Entity, @Table, @NamedQuery, @Id, @Column, @OneToMany,@ManyToMany Beziehungen etc für • Web Services with JAX-WS 2.0 > Neue, erweiterbare API als Ersatz für JAX-RPC > @WebService, @WebMethod etc um EJBs bzw. POJO zu markieren 9 Beispiel Remote Stateless Session Bean & Web Service @Remote public interface CustomerServiceRemote { List getCustomers(); Business Interface } @Stateless @WebService public class CustomerServiceBean implements CustomerServiceRemote { @PersistenceContext private EntityManager em; public List getCustomers() { //retrieve Customers using em //... em.createNamedQuery(...) return customers; } POJO Bean } 10 Dependency Injection • J2EE 1-2-1.4: JNDI Lookups + EJB Ref's Context initial = new InitialContext(); Context myEnv = (Context)initial.lookup("java:comp/env"); Object objref = myEnv.lookup("ejb/SimpleConverter"); ConverterHome home = (ConverterHome) PortableRemoteObject.narrow(objref,ConverterHome.class); Converter currencyConverter = home.create(); • Neu in JEE 5: Dependency/Resource Injection @EJB Converter currencyConverter; 11 Dependency Injection • Field based Injection @EJB Converter currencyConverter; @Resource DataSource myDB; public void doSomething(){ myDB.getConnection(); } • Wie erfolgt nun die Auflösung zur deployten DataSource??? > Property Name als Basis – Default: java:comp/env/<fqclname>/<var-name> – Im Beispiel: java:comp/env/myclass/myDB @Resource(name= jdbc/myBigDB ,type= javax.sql.DataSource ) DataSource myDB; 12 Java Enterprise Edition 6 “ante Portas” • Java EE 6 ist derzeit in Arbeit > Genauer Umfang und Inhalte - noch tbd • Generelles Ziel: Modularisierung & Generalisierung > Kein aufgeblähtes “General Purpose” Release mehr > Einführung von Profilen – Analog zu Java ME – Sub oder Supermengen von Java EE Telco Profile Integration Profile SIP,... JBI Classic Java EE Web Profile JSF JSTL EJB+JPA RMI/IIOP Servlet JSP ... JAX-WS Java EE Core: Packaging, Depl., ... 13 Java EE 6 Umfang – to be confirmed W eb S JAX-RS (JSR 311) RESTful web services Inte ervic grat es & i o Java EE Connector 1.6 n WebBeans 1.0 (JSR 299) Web Tech nolo Servlets 3.0 (JSR 315) gies JSF 2.0 (JSR 314) Bus Enterprise Java Beans 3.1 ines s Lo gic Java Persistence API 2.0 Java Authentication SPI for Containers JSR-196 Misc Timer for Application Servers JSR-236 Work Manager for Application Servers JSR-237 14 JSRs im Detail - Planungen • EJB 3.1 > > > > > > Deployment von EJBs im Servlet Container Singleton Beans Stateful Web Service Endpoints Asynchrone Aufrufe Callbacks des Containers Timer Service Erweiterungen • Java Persistence API 2.0 > Validation Support > Erweiterungen des OR Mappings (embedded Objects) > Pluggability,... 15 Agenda Agenda • Java Enterprise Edition > Past, Present & Future • Sun Projekt GlassFish > > > > Überblick, Adaption und Architektur Entwickler Features & GlassFish Administration Clustering & High Availability Weiterführende Themen – Portale – Single Sign On mit Open SSO – Java Business Integration & Open ESB 16 Facetten und Ausprägungen von GlassFish • Ein Open Source Java EE Server > Komplette Transparenz • Die offizielle Java EE Referenz > Als Java EE SDK und RI • Production Ready – 24x7 > Supported als Sun Java System Application Server 9.1 • Sammlung aller Server side Java Entwicklungen von Sun > Dach für Technogien wie Grizzly, Metro, JAX-*, jMaki • Die Java EE Community 17 GlassFish Adaption 1500 Users Mailing List Traffic 1000 500 0 12/06 02/07 01/07 04/07 03/07 06/07 05/07 08/07 07/07 10/07 09/07 11/07 Download History for GlassFish 350 300 250 200 150 100 50 2007-11 2007-10 2007-09 2007-08 2007-07 2007-06 2007-05 2007-04 2007-03 2007-02 2007-01 0 2006-12 Downloads/month (thousands) 400 18 GlassFish in nächster Umgebung... 19 GlassFish Historie • JavaOne 2005 > Projekt Start: Open Sourcing des Sun J2EE 1.4 Application Servers als Basis für GlassFish • JavaOne 2006 > Java EE 5 Spezifikation ist fertig, 100% Implementierung durch GlassFish v1 • JavaOne 2007 > GlassFish v2 (beta) • FCS von GlassFish v2: 17. September 2007 • GlassFish v3 – in Progress 20 GlassFish und/vs Sun Application Server Open Source Development und Community Support Ant Installer, CVS Repository GlassFish v2 Sun Java System Application Server 9.1 GlassFish v2.1 GlassFish v3 Sun Java System Application Server 9.2 Sun Application Server.Next 24x7 Sun Support, Indemnification, Patches, Sun Installer, HA-DB Bundle, Datadirect JDBC Treiber 21 GlassFish als Open Source Projekt • Projekt Repository: http://glassfish.dev.java.net > CVS, Source tarballs, Nightly Builds, Milestone Builds > Offenes Issuetracking, Foren und Mailinglisten > Lizenztypen: CDDL (OSI approved), GPLv2, Binary Distribution License • Alle Planungen, Sammlung von Anforderungen, Architekturüberlegungen sind öffentlich im Wiki http://www.glassfishwiki.org/ 22 Die Community - Das GlassFish Aquarium • Gruppenblog rund um GlassFish > http://blogs.sun.com/theaquarium > Sammlung von Tips &Tricks, Tutorials uvm. 23 GlassFish v2 – ISV Community Tools Java EE RI & SDK Distributions NetBeans™ IDE Eclipse Plugin Sun Java System AS 9.x JBoss 5 Derby Project GlassFish TmaxSoft JEUS 6 Oracle TopLink BEA WebLogic 10 Communities MQ Portal Server Open ESB Maven Rep Users and Other Groups 24 Zielgruppen und deren Anforderungen • GlassFish adressiert beide Zielgruppen eines Application Servers gleichermaßen: Administratoren und Entwickler • Anforderungen von Entwicklern > > > > State of the Art Technologien, APIs und Java Runtimes Einfache Benutzung in der Entwicklung Geringer Overhead Schnelle Build, Deploy & Test Zyklen • Anforderungen von Administratoren > Stabilität, Performance & Verfügbarkeit > Einfache Administrierbarkeit auch komplexer Umgebungen > Automatisierbarkeit der Administration 25 GlassFish Features Zielgruppe Entwickler GlassFish ist die offizielle Sun Java EE 5 Referenz 100% Java EE 5 ● Support für Java 5 und 6 als Runtime ● Unterstützung für Java Business Integration (JSR-208) ● Top Web Services Stack (Projekt Metro) mit JAX-WS 2.x, JAX-B ● Unterstützung für WS-RM, WS-AtomicTX, MTOM,... ● JMX Instrumentierung ● Vereinfachung der Entwicklung Developer Profil mit vereinfachter Architektur ● Tool Integration mit NetBeans und Eclipse WTP ● Scripting Fähigkeiten ● Schneller Start ● Web Start Integration ● Profiling / Debugging Tools integriert ● Umfangreiche Dokumentation, Tutorials, Blogs ● 26 GlassFish Features Zielgruppe Administratoren Vereinfachung der Administration Cluster / Enterprise Profil für komplexe Umgebungen ● Domänenkonzept für Administration großer Installation ● Leistungsfähige Admin GUI ● Scripting Fähigkeit für automatisierte Konfiguration und Adminstration ● Umfangreiche Troubleshooting und Diagnose Tools ● Self Management Feature per JMX ● Performance, Skalierung und Verfügbarkeit World Record SpecJAppserver2004 ● Loadbalancing für Http(s), RMI/IIOP und JMS ● Session Failover per in Memory Replication und HA-DB ● 27 Agenda Agenda • Java Enterprise Edition > Past, Present & Future • Sun Projekt GlassFish > > > > Überblick, Adaption Architektur , Features & GlassFish Administration Clustering & High Availability Weiterführende Themen – Portale – Single Sign On mit Open SSO – Java Business Integration & Open ESB 28 GlassFish Profile – Welches verwendet man? Developer/ Cluster Profile Enterprise Profile 29 Installation von GlassFish • Download des JAR-Balls glassfish-installer-v2b<version>.jar • Auspacken mit java -jar <glassfish-jar-file> • Editieren des ANT Install Files > Developer Profile: setup.xml > Cluster Profile: setup-cluster.xml • Ausführen von ant -f setup.xml bzw. setupcluster.xml • Alternativ: Download von http://sun.com/appserver als Sun Java System Application Server 9.1 > Für graphischen Installer 30 Filesystem Layout nach Installation Enthält asadmin Kommando Environment Settings Domain Daten (Apps, Konfigs, logs) Open Message Queue Apache Derby aka JavaDB Java Business Integration Runtime Update Center Tool 31 GlassFish - Developer Features Developer Usage Profile • Das Developer Profile ist eine single JVM GlassFish Konfiguration > All Services inklusive Admin Applikation in einer JVM > Schnellerer Start, weniger Ressourcenbedarf • Charakteristiken > > > > Java Key Store Kein Clustering / HA Client JVM Security Manager off Virtual Server1 Admin Server EJB Container JBI Container Web Container Grizzly HTTP ORB JMS Admin Infrastruktur Java SE 5 oder 6 Mbean Server 32 GlassFish - Developer Features Integration in Software Dev Umgebungen • GlassFish bietet Integration in populäre IDEs > NetBeans, IntelliJ IDEA > Eclipse Web Tools Project • Integration in Build, Deploy & Test Prozesse auch möglich per > GlassFish ANT tasks > GlassFish asadmin Command Line Interface • Configuration, Monitoring und Management per > Web based Admin GUI > ANT or asadmin > JMX/AMX API SOAP-based Messaging (WSA, MTOM) 33 GlassFish - Developer Features Web Services Stack – Metro http://metro.dev.java.net • GlassFish beinhaltet den kompletten Metro Web Services Stack > Umfangreichster Open Source Web Services Stack > Hoch performant & produktionstauglich > Besteht aus JAX-WS 2.x Implementierung + Project Tango (Sun/Microsoft Interoperability Project) > Trennung von Transport and JAX-WS Tooling, NetBeans, and Studio Support Encoding (HTTP, JMS, Security Reliability Transactions Metadata TCP/IP,...) Secure Conv. ReliableAtomic-TX WSDL > Auch genutzt von Messaging Trust,XWSS Coordination MEX TmaxSoft, BEA WLS10, Policy JBoss SOAP-based Messaging (WSA, MTOM) JAXB-based XML Data Binding (XSD, XPATH) HTTP TCP SMTP 34 GlassFish - Developer Features Web Services Stack – FastInfoSet Support • FastInfoSet (ISO/IEC 24824-1) ist eine binär Encoding von XML Daten > Content Negotiation ermöglicht Client Unterstützung für FI zu erkennen > Web Services auf GlassFish per Default Fast Info Set enabled > Client sendet Mime Type application/fastinfoset im HTTP Accept Header DemoWebService svc = new DemoWebService(); Demo port = svc.getDemoPort(); ((BindingProvider) svc).getRequestContext().put( "com.sun.xml.ws.client.ContentNegotiation", "pessimistic"); 35 GlassFish - Developer Features Web Services Stack – WS - Reliable Messaging Sample import javax.jws.*; @WebService() public class AdderService { @WebMethod(action="add") public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) { return i+j; } } Unterschiede zu normalem Web Service? Keine! 36 GlassFish - Developer Features Web Services Stack – WS - Reliable Messaging Sample ... <snip> <wsp:Policy wsu:Id="AdderServicePortBindingPolicy"> <wsp:ExactlyOne> <wsp:All> <wsaws:UsingAddressing xmlns:wsaws= "http://www.w3.org/2006/05/addressing/wsdl"/> <wsrm:RMAssertion> <wsrm:InactivityTimeout Milliseconds="5000"/> </wsrm:RMAssertion> <net:RmFlowControl> <net:MaxReceiveBufferSize>64 </net:MaxReceiveBufferSize> </net:RmFlowControl> <sunrm:Ordered/> </wsp:All> </wsp:ExactlyOne> WSIT in NetBeans 5.5 </wsp:Policy> </definitions> wsit-test.AdderService.xml 37 GlassFish - Developer Features Web Services Stack – Monitoring & Troubleshooting • Web Services Testing & Monitoring bietet GlassFish Out of the Box > Generischer Web Services Tester > Web Services Monitoring > Request/Response Tracing 38 GlassFish - Developer Features Configuration & Management • Management mit Java Management Extensions (JMX) > GlassFish ist intern komplett JMX instrumentiert > JMXConnector für JMX Remoting (JSR-160) > Für Connections von JConsole, MX4J oder kommerzielle Monitoring • Custom Mbeans Deployment > asadmin create-mbean oder Admin GUI > JMX Interface NotificationListener für GlassFish Events 39 GlassFish Update Center 40 GlassFish – Features for Admins Administration, Configuration, Monitoring • GlassFish bietet eine professionelle Administration Console > Monitoring, Configuration, Deployment • Commandline Interface “asadmin” bietet die gleichen Möglichkeiten > Für Automation & Scripting • Im Cluster / Enterprise Profile gibt es einen separaten Knoten für Administration > Domain Administration Server 41 GlassFish – Features for Admins Domänenkonzept für große Topologien • Domänen sind administrative Gruppierungen von Clustern und Instanzen > Zentral gemanaged durch den Domain Admin Server der ein Repository verwaltet > Instanzen auf anderen Rechnern werden per Node Agent Prozessen überwacht > Instanzen haben eine lokale Repository Kopie Node Agent DAS asadmin> asadmin> Applications Resources Node Agent Configuration JMX Server Instances 42 GlassFish – Features for Admins Domänenkonzept für große Topologien Rechner A Node Agent JMX/JRMP Domain Admin Svr Admin, Deployments Lokaler Repository Cache Cluster GlassFish JMX/JRMP Domain Repository Configs Applikationen Ressourcen Rechner B Lokaler Repository Cache GlassFish Node Agent 43 GlassFish – Features for Admins Troubleshooting & Diagnostics • GlassFish Call Flow Monitoring ermöglicht Tracing von Requests > Einfaches profiling – Dynamisch aktivierbar > Triggered auch JMX Notifications für Self Management • Self Management > JMX Notification Listeners for certain events – Log Events, Monitor Events – Timer Events, MBean Notifications – Trace Events,Lifecycle Events • Per Service Log Levels • Resource Management 44 Call Flow Monitoring Where is time being spent? 45 Self Management • Glassfish bietet die Möglichkeit Management Rules einzurichten > Regeln bestehen aus einem Event und einer Action > Mögliche Event Typen – – – – – Log Events: Einträge eines definierten Loggers/bestimmter Severity Monitor Events: Attribute einer MBean die überwacht werde Timer Events, MBean Notifications Trace Events (z.B. Invocation einer bestimmten EJB Methode) Lifecycle Events des Application Servers • Actions sind seperat deployte MBeans > Müssen javax.management.NotificationListener Interface implementieren – Reagieren auf bestimmte Logeinträge mit e-Mail Benachrichtigung – Memory Monitoring der JVM – Zeitgesteuert Aktivitäten antriggern 46 Hochverfügbarkeitskonzepte • Hochverfügbarkeit umfasst konzeptionell > Load Balancing für Skalierung und Erkennen von Ausfällen einzelner Server > Failover Logik > Persistenz von Sessions und Zustandsdaten > Cluster Bildung/Konfiguration • Load Balancing für alle Protokolle > GlassFish v2 bietet Loadbalancing für HTTP(s), RMI/IIOP(s) und JMS/MQ • Failover Szenarien > Instanz Failover – mit Session Verlust > Session Failover – Erhalt der Zustandsdaten durch Replikation 47 HTTP(s) Loadbalancing und Instance Failover Varianten • Direkter Einsatz eines HW Loadbalancers > Direktes Routing auf HTTP Listener von GlassFish • Einsatz von Web Server Plugins > GlassFish V2 bietet eigene HTTP Loadbalancing Plugins für Apache 2, MS IIS und Sun Web Server – Loadbalancing, Healthchecks, Konfiguration per GUI > Alternativ: Tomcat AJP Konnektor in GlassFish – Apache und mod_jk für Loadbalancing gegen GlassFish 48 GlassFish HTTP LB Architektur Cluster Web Server LB Plugin http://host:80 Load Balancer Cisco, BigIP, Alteon Web Server LB Plugin GlassFish HTTP Lstnr GlassFish HTTP Lstnr Admin, Deployments loadbalancer.xml Domain Admin Svr LB Plugin Eigenschaften: - SSL Terminierung - Failover/Re-Enlist - Healthchecks - Quiesing/Rolling Upgrades - Multi-Cluster Config - Automatic Retry (idempotente URLS) - Dynamische Reconfig - Custom LB Policies 49 Kurzanleitung für mod_jk und GlassFish • Apache mit mod_jk aufsetzen • Aktivieren des AJP Konnektors in GlassFish > $GLASSFISH_HOME/bin/asadmin create-jvm-options - Dcom.sun.enterprise.web.connector.enableJK=8009 > Kopieren der folgenden Jar Files nach GF/lib – Apache commons logging/modelling .jar – Tomcat tomcat-ajp.jar > Restart • Infos: http://blogs.sun.com/dadelhardt/entry/loadbalancing_with_mod_jk_and_glassfish 50 Rich Application Clients: Load Balancing und Failover für IIOP(s) • Java EE Application Client > „appclient“ script – appclient -client <myjar> -xml <myacc.xml> – myacc.xml enthält Endpoint Informationen • WebStart Client (GlassFish WebStart Feature) > Endpoint Informationen werden bei Download im JNLP dynamisch gesetzt • Standalone Clients > Erfordern appserv-rt.jar, appserv-admin.jar und javaee.jar im ClassPath – Keine Konfiguration von Factories oder InitalContext Properties! > Für Load Balancing setzen einer JVM Property – com.sun.appserv.iiop.endpoints=<svr1:port>,<svr2:port> – Änderungen der Cluster Topologie werden auch an Client kommuniziert 51 Load Balancing und Failover für IIOP • Für RMI/IIOP(s) erfolgt das Load Balancing durch den Client > Bei Erzeugung des InitialContexts wird aus dem Cluster zufällig ein Server ausgewählt > Alle Kommunikation erfolgt mit diesem Server bis: – Der Failover Fall eintritt – Ein neuer InitialContext erzeugt wurde > Option: Gewichtungen für Server möglich 52 Setup eines Clusters • Installation von GlassFish im Cluster Profil > Ant -f setup-cluster.xml • Start des Domain Administration Servers > „asadmin start-domain –user admin“ • Erzeugen und Starten eines Node Agents > „asadmin create-node-agent –user admin <name>“ > „asadmin start-node-agent –user admin <name>“ • Erstellen des Clusters (alternativ per GUI) > „asadmin create-cluster <clustername>” > „asadmin create-instance –cluster <clustername> --nodeagent <naname> <instancename>“ > „asadmin start-cluster <clustername>“ 53 GlassFish HA Architektur mit In Memory Replication http://host:4711 http://host:80 Cluster Node 1 Shoal/GMS LB Plugin Web Server (IIS,Sun,Apache) State Replikation per Shoal 228.8.16.61 http://host:4712 loadbalancer.xml Cluster Node 2 Admin, Deployments Domain Admin Svr 54 GlassFish Clustering mit Shoal • Group Membership Service durch Project Shoal > http://shoal.dev.java.net > Benutzt das JXTA P2P Protokoll für dynamische Cluster • In Memory Replication für > > > > > HTTP session state Stateful EJB Session State Single Sign-On State Container State (timers, ...) Default is In-Memory replication with JXTA 55 HTTP Session State - Failover Servlet (HTTP Session) W S Load Balancer Servlet (HTTP Session) replicas replicas instance 1 instance 2 Servlet (HTTP Session) Servlet (HTTP Session) replicas instance 4 replicas Cluster instance 3 56 HTTP Session State - Failover Servlet (HTTP Session) W S Load Balancer Case 1: Instance has replica data Servlet (HTTP Session) replicas replicas instance 1 instance 2 Servlet (HTTP Session) Servlet (HTTP Session) replicas instance 4 replicas Cluster instance 3 57 HTTP Session State - Failover Servlet (HTTP Session) W S Load Balancer Case 2: Instance does not have replica data Broadcast… Servlet (HTTP Session) replicas replicas instance 1 instance 2 Servlet (HTTP Session) Servlet (HTTP Session) replicas instance 4 replicas Cluster instance 3 58 HTTP Session State - Failover Servlet (HTTP Session) W S Load Balancer Case 2: Instance does not have replica data and ownership transfer… Servlet (HTTP Session) replicas replicas instance 1 instance 2 Servlet (HTTP Session) Servlet (HTTP Session) replicas instance 4 replicas Cluster instance 3 59 Agenda Agenda • Java Enterprise Edition > Past, Present & Future • Sun Projekt GlassFish > > > > Überblick, Adaption und Architektur Entwickler Features & GlassFish Administration Clustering & High Availability Weiterführende Themen – Portale – Single Sign On mit Open SSO – Java Business Integration & Open ESB 60 GlassFish Extensions: OpenPortal http://portal.dev.java.net • Enterprise-class Portal Server > Basis für kommerziellen Sun Portal Server • Sub-projects > > > > > > > > portlet-container.dev.java.net portlet-repository.dev.java.net wsrp.dev.java.net (WSRP ½) portalpack.netbeans.org eclipse-portalpack.dev.java.net saw.dev.java.net (Workflow) mirage.dev.java.net (CMS) jsfportletbridge.dev.java.net 61 GlassFish & Identity Management https://opensso.dev.java.net • Projekt OpenSSO > Access Management und Single Sign On für Web Applications, Web Services und Java Applikationen – Basis des Sun Access Managers – Zentralisierte Authentifizierung & Authorisation gegen LDAP oder andere Datenquellen – Standards: Java EE, Liberty, SAML, WS-* > Single Sign On mit 3rd Party Systems über Agenten – GlassFish, WebLogic, WebSphere, Tomcat, Apache, SAP,IIS, Jboss – https://opensso.dev.java.net/public/agents.html 62 OpenSSO Architecture LDAP https://opensso.dev.java.net OpenSSO Policy Service Session Service Auth Service LoggingService GlassFish 3. Redirect back with SSO Token 2. Redirect to Session/Auth Service TomCat App1 Policy/J2EE Agent 5. SSO Token Check GlassFish App2 DB 1. Client Request for Secure. App 6. Grant/Deny + Redirect 4. Request for Sec. App2 Policy/J2EE Agent 63 GlassFish - Developer Features Java Business Integration • Java Business Integration (JBI – JSR 208) ist beinhaltet in GlassFish > JBI bietet eine erweiterbare Architektur für “Composite Applications” > Binding Components und Service Engines sind die Komponenten von JBI • GlassFish bietet > JBI Runtime und JAX-WS Tooling, NetBeans, and Studio Support Metadata Infrastructure BPEL JEE WSDL > SOAP/HTTP binding Engines BPEL XSLT JEE MEX Admin Policy > Java EE Service SOAP-based Messaging (WSA, MTOM) JMS EDI WS-I Engine Bindings > Basis für Open ESB Service Service Service Service Service Service Service Service 64 GlassFish & Open-ESB • Open-ESB hat als Ziel eine umfassende, JBI basierte Plattform für Composite Applications zu realisieren > Open-ESB nutzt den in GlassFish V2 integrierten Java Business Integration (JBI) Container > Services wie Administration, CLI Tools, Logging, TX-Handling werden direkt von GlassFish erbracht • Projekt Open-ESB erweitert GlassFish um: > Service Engines: BPEL 2.0 Engine, JavaEE Engine, Intelligent Event Processing, Workflow Engine, Scripting Engine, Rules, ETL > Binding Components: SOAP/HTTP mit WSIT, JDBC, JMS, MQ, SAP, CICS, CORBA, FTP, File,... > Vollständige Liste der aktuellen und geplanten Komponenten: – http://www.glassfishwiki.org/jbiwiki/Wiki.jsp?page=Jbicomps 65 Projekt SailFin Project • Erweiterung von GlassFish um SIP Protokoll > http://sailfin.dev.java.net • Finale Version gegen Juni 2008 zu erwarten • Zeitgleich mit GlassFish v2.1 66 Roadmap & Themen für die Zukunft • GlassFish v3 – Ziel: Modularisierung des Servers > Customizing je nach Anforderungen – z.B. GlassFish als TomCat Ersatz – Pure Web Container ohne EJB,JBI,JMS,... – GlassFish als Container für jRuby on Rails, Phobis, Quercus > Wiederverwendung einzelner Module (z.B. Grizzly) > Startupzeit <1s für Web Container wird bereits in Prototypen erreicht > Container SPI & Pluggability • GlassFish als Incubator für Java EE 6 > Java EE Web Profile wird auf GlassFish entwickelt • Realtime GlassFish Version > GlassFish auf Basis der Sun Java Realtime Implementierung 67 More Information • • • • • • • • Download: http://glassfish.dev.java.net Wiki: http://wiki.glassfish.java.net/ Aquarium: http://blogs.sun.com/theaquarium OpenSSO: http://opensso.dev.java.net Portal Projekt: https://portal.dev.java.net/ WSIT: http://wsit.dev.java.net Open-ESB: http://open-esb.dev.java.net Blog: http://blogs.sun.com/dadelhardt 68 Daniel Adelhardt Software & Java Ambassador Sun Microsystems GmbH 69