GlassFish - WWW-Hosting

Werbung
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
Herunterladen