SlideShare una empresa de Scribd logo
1 de 59
Descargar para leer sin conexión
GlassFish v3
The future of Java EE is here

Alexis Moussine-Pouchkine
GlassFish Team
This is no science fiction

Java EE 6 and GlassFish v3 shipped
th
final releases on December 10 2009
GlassFish Around You
GlassFish Around You
Some History and Context
Tomcat
Jasper
Catalina
JSTL
Struts
Crimson
XSLTC
Xalan
Xerces
JAXB
JAX-RPC
JSF

GlassFish v3
(Java EE 6)

GlassFish v1
(Java EE 5)
GlassFish
Launch

June
2005

v2

May
2006

Sept.
2007

v2.1

v2.1.1

Jan
2008

(you are here)

Dec.
2009
GlassFish
●

A Community
●
●
●

Users, Partners, Testers, Developers
Started in 2005 on java.net
Sub-projects
–

●

Jersey (JAX-RS), Metro (JAX-WS), Grizzly (nio),
Atmosphere (Comet), OpenMQ (JMS), and scripting

Application Server
●
●
●

Enterprise Quality and Open Source
Java EE 5 / 6 Reference Implementation
Full Commercial Support from Oracle
Oracle GlassFish Server
GlassFish going forward
●

No change to operation of open source project
●
●
●
●

●

GlassFish 3.0.1
●

●

GlassFish Open Source Edition under existing license
Remains transparent and participatory
Strengthened by Oracle leadership
Customer and community driven product roadmap
Additional platforms, jrockit, ...

Feature releases
●
●
●

GlassFish v3.1 in 2010, v3.2 in 2011, v4 in 2012
Clustering, centralized admin, Coherence, virtualization
Details at http://glassfish.org/roadmap
Demo

Painless development with
GlassFish v3
Painless Java EE development !
●
●

Incremental compile of all Java EE artifacts
Auto-deploy of all Java EE and static artifacts
Session Retention
●

Deployment option to maintain stateful
sessions across re-deployments

$ asadmin redeploy --properties
keepSessions=true myapp.war
●

●

Greatly simplifies the
development paradigm
Integrated in IDEs
Introducing
GlassFish v3
Modular and Dynamic
●

Modular : Apache Felix (OSGi)

●

Extensible : HK2

●

Yet very Fast !
Java EE, a brief History
Ease of
development
(web)
Ease of
development
Java EE 5

Web Services

Enterprise
Application

Robust
Scalable

J2EE 1.4

J2EE 1.3

J2EE 1.2

Project JPE
May 1998

Servlet
JSP
EJB
JMS
RMI/IIOP

Dec 1999
10 specs

CMP
JCA

Sept 2001
13 specs

WS
Management
Deployment

Nov 2003
20 specs

Annotations
EJB 3
JPA 1.0
WS-*
JSF

May 2006
23 specs

Java EE 6
EJB 3.1
JPA 2.0
Servlet 3.0
JSF 2.0
JAX-RS 1.1
CDI 1.0
@Inject
Bean Validat°

Web Profile
Managed
Bean

Q4 2009
28 specs
Java EE 6 – What's New?
●
●
●
●
●

Several new APIs
Web Profile
Extensibility & Pluggability
Dependency Injection
Improvement to many APIs
New and improved specifications
●
●
●
●
●
●
●

EJB 3.1
JPA 2.0
Servlet 3.0
JSF 2.0
JAX-RS 1.1
Connectors 1.6
Bean Validation 1.0

●
●
●
●
●
●
●
●

DI 1.0
CDI 1.0
Managed Beans 1.0
Interceptors 1.1
JAX-WS 2.2
JSR-109 1.3
JSP 2.2 / EL 2.2
JSR-250 1.1
JAX-RS
●

RESTful web services API

●

Already widely adopted

●

Really a general, high-level HTTP API

●

Annotation-based programming model

●

Programmatic API when needed

●

JAX-RS 1.1 integration with EJBs
JAX-RS sample code
@Path("widgets/{id}")
@Produces("application/widgets+xml")
public class WidgetResource {
public WidgetResource(
@PathParam("id") String id) {
...
}
@GET
Widget getWidget() {
...
}
}
Bean Validation 1.0
public class Address {
@NotNull @Size(max=30,
message="longer than {max} characters")
private String street1;
...
@NotNull @Valid
private Country country;
}
public class Country {
@NotNull @Size(max=20)
private String name;
...
}

request recursive
object graph
validation
Build your own!
@Size(min=5, max=5)
@ConstraintValidator(ZipcodeValidator.class)
@Documented
@Target({ANNOTATION_TYPE, METHOD, FIELD})
@Retention(RUNTIME)
public @interface ZipCode {
String message() default "Wrong zipcode";
String[] groups() default {};
}

Integrated in JPA and JSF
Bootstrap APIs
Java EE 6 Web Profile
●
●
●
●
●
●
●

Servlet 3.0
JSP 2.2 / EL 2.2
JSR-45 1.0
JSTL 1.2
JSF 2.0
Bean Validation 1.0
EJB 3.1 Lite

●
●
●
●
●
●
●

JPA 2.0
JTA 1.1
DI 1.0
CDI 1.0
Managed Beans 1.0
Interceptors 1.1
JSR-250 1.1
Modular Web Applications
●
●
●
●
●
●

Libraries can contain web-fragment.xml
web.xml is optional
@WebServlet, @WebFilter annotations
ServletContainerInitializer interface
Programmatic registration
Resource jars
JSF 2.0
●

Standardized facelets

●

Auto-discovery of component libraries

●

Composite components

●

Ajax support with partial views

●

Even a JavaScript API !
EJB 3.1
●

@Singleton beans

●

@Startup beans

●

@Asynchronous invocations

●

@Schedule tasks

●

EJBContainer API works on Java SE

●

Define EJBs directly inside a web app
Packaging in a war
foo.ear
lib/foo_common.jar
com/acme/Foo.class

foo_web.war
WEB-INF/web.xml
WEB-INF/classes
com/acme/FooServlet.class

foo_ejb.jar
com/acme/FooEJB.class
com/acme/FooEJBLocal.class

foo.war
WEB-INF/classes
com/acme/Foo.class
com/acme/FooServlet.class
com/acme/FooEJB.class
JPA 2.0
●

●

Support for collections of basic types and
embeddable objects
JPQL enhancements
e.g. CASE WHEN, NULLIF
Pessimistic locking
●

●
●

Criteria API for dynamic query construction
Dependency Injection
●

JSR-299 + JSR-330

●

Added @Inject support
@Inject @LoggedIn User user;

●

Beans discovered at startup

●

Injection metamodel (BeanManager API)

●

@Resource still around
@Resource DataSource myDB;
Dependency Injection Sample
public class CheckoutHandler {
@Inject
CheckoutHandler(@LoggedIn User user,
@Reliable @PayBy(CREDIT_CARD)
PaymentProcessor processor,
@Default Cart cart) {
...
}
}
Demo

Painless (Java EE 6) development
Yes, Eclipse too !

GlassFish Tools Bundle for Eclipse : http://download.java.net/glassfish/eclipse/
More Painless Development
●

●

Fast auto-deploy of all Java EE and static
artifacts
Application runner
●

●

java -jar glassfish.jar toto.war

Integration with maven 2
●

mvn gf:run, gf:start, gf:deploy, ...

●

Containers can be added/removed dynamically

●

Excellent Tools integration
How hard should it be to test
EJBs?

EJBContainer c = EJBContainer.createEJBContainer();
Context ic = c.getContext();
SimpleEjb ejb = (SimpleEjb)
ic.lookup("java:global/sample/SimpleEjb");
ejb.sayHello();
How hard should it be to test
EJBs?
New in EJB 3.1
EJBContainer c = EJBContainer.createEJBContainer();
Context ic = c.getContext();
SimpleEjb ejb = (SimpleEjb)
ic.lookup("java:global/sample/SimpleEjb");
ejb.sayHello();

Portable JNDI name
How hard should it be to test
EJBs?
@Test public void test() {
EJBContainer c = EJBContainer.createEJBContainer();
Context ic = c.getContext();
SimpleEjb ejb = (SimpleEjb)
ic.lookup("java:global/sample/SimpleEjb");
ejb.sayHello();
}

Demo
GlassFish Embedded
org.glassfish.api.embedded.Server server;
Server.Builder builder = new Server.Builder();
server = builder.build();
GlassFish Embedded
org.glassfish.api.embedded.Server server;
Server.Builder builder = new Server.Builder();
server = builder.build();
ContainerBuilder b =
server.createConfig(ContainerBuilder.Type.web);
server.addContainer(b);
GlassFish Embedded
org.glassfish.api.embedded.Server server;
Server.Builder builder = new Server.Builder();
server = builder.build();
ContainerBuilder b =
server.createConfig(ContainerBuilder.Type.web);
server.addContainer(b);
File archive = new File("hello.war");
server.getDeployer().deploy(archive);

Same bits, different entry point
All in one JAR available
GlassFish Embedded
@BeforeClass public static void initContainer() {
org.glassfish.api.embedded.Server server;
Server.Builder builder = new Server.Builder();
server = builder.build();
ContainerBuilder b =
server.createConfig(ContainerBuilder.Type.web);
server.addContainer(b);
File archive = new File("hello.war");
server.getDeployer().deploy(archive);
}

@Test public static void pingApplication() {
...
}
GlassFish Embedded
public static void main(String[] args) {
org.glassfish.api.embedded.Server server;
Server.Builder builder = new Server.Builder();
server = builder.build();
ContainerBuilder b =
server.createConfig(ContainerBuilder.Type.web);
server.addContainer(b);
File archive = new File("realApplication.war");
server.getDeployer().deploy(archive);
}

Ship app server inside the application
What's the deal with OSGi?
●

GlassFish runs on top of OSGi (Felix by default)
●
●
●
●
●

●

Also runs unmodified on Equinox (and Knopflerfish)
GlassFish ships with 200+ bundles
Can run without OSGi (Static mode)
Can use OSGi management tools (CLI or Web)
Can be installed on top of existing OSGi runtime

Any OSGi bundle will run in GlassFish v3
●
●
●

Drop it in glassfish/modules{/autostart}
Can also asadmin deploy it using --type osgi
GlassFish OSGi admin console
Extending GlassFish v3
OSGi-style – an example, a demo and a picture
●

●

●

●

●

OSGi declarative service
Service-Component
entry in the JAR Manifest
Invoke the service from a
servlet using standard
@Resource injection
Never use a GlassFish
API !
No need to chose
between OSGi and
Java EE

Step by step: http://blogs.sun.com/dochez/entry/glassfish_v3_extensions_part_4
Demo

Extending GlassFish v3
OSGi-style
Extending GlassFish v3
SpringDM – another example, demo and picture
●

●

●

●

●

Extend GlassFish with
an unmodified Spring dm
container
Simple Spring bean
implementing the service
Invoke the service from a
servlet using standard
@Resource injection
Still no use of a
GlassFish API
Single runtime for both
Spring and full Java EE

Step by step: http://blogs.sun.com/dochez/entry/glassfish_v3_extensions_part_4
OSGi + Java EE = Hybrid Apps
●

GlassFish as the modular runtime
●
●

●

●

Assembled spontaneously
Admin tools (Web & CLI)

Implementation of Java EE related OSGi
services & standards
Support for Java EE 6 platform
●

●

e.g. JPA or EJB as OSGi services

Web Application Bundle (WAB)
●

WAR + OSGi metadata + Web-ContextPath header
Update Center
Demo

GlassFish à la Carte
GlassFish à la carte
●

Unzip 5-MB bootstrap
●

Install core IPS packages
GlassFish à la carte
●

Unzip 5-MB bootstrap
●

●

Install core IPS packages

Define the repository to use
GlassFish à la carte
●

Unzip 5-MB bootstrap
●

●
●

Install core IPS packages

Define the repository to use
Install individual packages
●
●

Start with core glassfish-nucleus package
Drags dependencies of course
GlassFish à la carte
●

Unzip 5-MB bootstrap
●

●
●

Define the repository to use
Install individual packages
●
●

●

Install core IPS packages

Start with core glassfish-nucleus package
Drags dependencies of course

Install umbrella package (a distro really)
●

Enough to run a JAX-RS/EJB31 demo
GlassFish à la carte
●

Unzip 5-MB bootstrap
●

●
●

Define the repository to use
Install individual packages
●
●

●

●

Start with core glassfish-nucleus package
Drags dependencies of course

Install umbrella package (a distro really)
●

●

Install core IPS packages

Enough to run a JAX-RS/EJB31 demo

Create GlassFish server instance
Deploy application
GlassFish à la carte
●

Unzip 5-MB bootstrap
●

●
●

Define the repository to use
Install individual packages
●
●

●

●
●

Start with core glassfish-nucleus package
Drags dependencies of course

Install umbrella package (a distro really)
●

●

Install core IPS packages

Enough to run a JAX-RS/EJB31 demo

Create GlassFish server instance
Deploy application
Run!
Monitoring and Management
Beyond web console and asadmin
●

Dynamic and non-intrusive monitoring of events
from any GlassFish runtime classes
●

BTrace integration new!
–
–

●

Probe Providers defined in java or XML new!
–

●
●

●

Portable, dynamic and safe tracing tool for Java
Btrace annotations and API to write scripts
Default providers & roll out your own

RESTful interface new!
DTrace for end-to-end new!

Still exposed via JMX
●

jconsole and visualvm as natural clients
RESTful admin
●

JAX-RS/Jersey + Grizzly to provide REST
interfaces to :
●
●
●

●

Available from :
●
●

●

●

http://localhost:4848/management/domain
http://localhost:4848/monitoring/domain

Use REST clients as Admin GUI substitute
●

●

Configure runtime (via GET, POST, DELETE)
Invoke commands (restart, stop, deploy, etc..)
Monitoring (GET only)

Use you favorite glue/scripting language or tool

Data offered as either XML, HTML or JSON
Extensible
Demo

RESTful admin
A lot more ...
●

Management and Monitoring
●

●

Dynamic languages
●

●
●

●

mod_jk
WebDAV, CGI, SSI

Web Services Metro
●

●

Rails, Grails, Django, Scala/Lift...

Comet, Atmosphere
Full support for
●

●

Dynamic, Btrace, ...

.Net 3.5 interop

OpenMQ

E

te
x

s
n

le
ib
GlassFish v3 – Practical
●

Get it from http://glassfish.org
●
●

●

Choice !
●
●

●
●

GlassFish v3 now final !
Also from http://www.oracle.com/goto/glassfish

Eclipse or NetBeans (or vi...)
Felix or Equinox

Graphical Installer, Zip version
Download size starting at 30MB
●

Can move from Web profile to full (and vice-versa)
Questions

alexis.mp@sun.com
http://blogs.sun.com/alexismp
twitter: alexismp

Más contenido relacionado

La actualidad más candente

OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14
Ivan Krylov
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS
偉格 高
 

La actualidad más candente (20)

NetBeans Support for EcmaScript 6
NetBeans Support for EcmaScript 6NetBeans Support for EcmaScript 6
NetBeans Support for EcmaScript 6
 
Project Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium ParisProject Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium Paris
 
OSGi Presentation
OSGi PresentationOSGi Presentation
OSGi Presentation
 
Java 9 Modularity in Action
Java 9 Modularity in ActionJava 9 Modularity in Action
Java 9 Modularity in Action
 
OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14
 
Discuss about java 9 with latest features
Discuss about java 9 with latest featuresDiscuss about java 9 with latest features
Discuss about java 9 with latest features
 
OSGi Blueprint Services
OSGi Blueprint ServicesOSGi Blueprint Services
OSGi Blueprint Services
 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9
 
OSGi in 5 minutes
OSGi in 5 minutesOSGi in 5 minutes
OSGi in 5 minutes
 
うさぎ組 in G* WorkShop -うさみみの日常-
うさぎ組 in G* WorkShop -うさみみの日常-うさぎ組 in G* WorkShop -うさみみの日常-
うさぎ組 in G* WorkShop -うさみみの日常-
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projects
 
OpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheConOpenWebBeans and DeltaSpike at ApacheCon
OpenWebBeans and DeltaSpike at ApacheCon
 
Running JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java WorldRunning JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java World
 
JSF2
JSF2JSF2
JSF2
 
Java FX Tools Aquarium Paris
Java FX Tools Aquarium ParisJava FX Tools Aquarium Paris
Java FX Tools Aquarium Paris
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS
 
Dynamic Groovy Edges
Dynamic Groovy EdgesDynamic Groovy Edges
Dynamic Groovy Edges
 
Scala and Play with Gradle
Scala and Play with GradleScala and Play with Gradle
Scala and Play with Gradle
 
Gradle - time for another build
Gradle - time for another buildGradle - time for another build
Gradle - time for another build
 

Destacado

E6 misterios del cuerpo humano
E6 misterios del cuerpo humanoE6 misterios del cuerpo humano
E6 misterios del cuerpo humano
enquica
 
χημ.θετ.κατ.οξεα βασεις
χημ.θετ.κατ.οξεα βασειςχημ.θετ.κατ.οξεα βασεις
χημ.θετ.κατ.οξεα βασεις
Agathi Bonia
 
El paquete de_galletas
El paquete de_galletasEl paquete de_galletas
El paquete de_galletas
enquica
 
Transcript.compressed
Transcript.compressedTranscript.compressed
Transcript.compressed
Varun Patel
 
10-12 Marksheet.compressed
10-12 Marksheet.compressed10-12 Marksheet.compressed
10-12 Marksheet.compressed
Varun Patel
 
Arconics-Brochure-Nov-2015
Arconics-Brochure-Nov-2015Arconics-Brochure-Nov-2015
Arconics-Brochure-Nov-2015
Gary Byrnes
 
Ge 04-relieve-1 b
Ge 04-relieve-1 bGe 04-relieve-1 b
Ge 04-relieve-1 b
teresart
 

Destacado (20)

Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011
 
E6 misterios del cuerpo humano
E6 misterios del cuerpo humanoE6 misterios del cuerpo humano
E6 misterios del cuerpo humano
 
Antenas tdt
Antenas tdtAntenas tdt
Antenas tdt
 
χημ.θετ.κατ.οξεα βασεις
χημ.θετ.κατ.οξεα βασειςχημ.θετ.κατ.οξεα βασεις
χημ.θετ.κατ.οξεα βασεις
 
Travel talk september 2015 - MAU SHA TAB
Travel talk september 2015 - MAU SHA TABTravel talk september 2015 - MAU SHA TAB
Travel talk september 2015 - MAU SHA TAB
 
El paquete de_galletas
El paquete de_galletasEl paquete de_galletas
El paquete de_galletas
 
9789740331469
97897403314699789740331469
9789740331469
 
Additive Manufacturing: The Future is Now
Additive Manufacturing: The Future is NowAdditive Manufacturing: The Future is Now
Additive Manufacturing: The Future is Now
 
Transcript.compressed
Transcript.compressedTranscript.compressed
Transcript.compressed
 
Resume
ResumeResume
Resume
 
Cироты войны
Cироты войныCироты войны
Cироты войны
 
10-12 Marksheet.compressed
10-12 Marksheet.compressed10-12 Marksheet.compressed
10-12 Marksheet.compressed
 
Sudhir Solar panel Catalogue
Sudhir Solar panel CatalogueSudhir Solar panel Catalogue
Sudhir Solar panel Catalogue
 
Etica
EticaEtica
Etica
 
CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011
 
Workshop scrum voor product owners
Workshop scrum voor product ownersWorkshop scrum voor product owners
Workshop scrum voor product owners
 
First aid tips
First aid tipsFirst aid tips
First aid tips
 
Gamification
GamificationGamification
Gamification
 
Arconics-Brochure-Nov-2015
Arconics-Brochure-Nov-2015Arconics-Brochure-Nov-2015
Arconics-Brochure-Nov-2015
 
Ge 04-relieve-1 b
Ge 04-relieve-1 bGe 04-relieve-1 b
Ge 04-relieve-1 b
 

Similar a Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010

GlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 ApplicationsGlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 Applications
Arun Gupta
 
Java EE 6 Clustering with Glassfish 3.1
Java EE 6 Clustering with Glassfish 3.1 Java EE 6 Clustering with Glassfish 3.1
Java EE 6 Clustering with Glassfish 3.1
Shreedhar Ganapathy
 
Andrei Niculae - glassfish - 24mai2011
Andrei Niculae - glassfish - 24mai2011Andrei Niculae - glassfish - 24mai2011
Andrei Niculae - glassfish - 24mai2011
Agora Group
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
Ludovic Champenois
 

Similar a Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010 (20)

OTN Developer Days - GlassFish
OTN Developer Days - GlassFishOTN Developer Days - GlassFish
OTN Developer Days - GlassFish
 
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
 
GlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 ApplicationsGlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 Applications
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
 
GlassFish Community and future larochelle
GlassFish Community and future larochelleGlassFish Community and future larochelle
GlassFish Community and future larochelle
 
GlassFish OSGi - Java2days 2010
GlassFish OSGi - Java2days 2010GlassFish OSGi - Java2days 2010
GlassFish OSGi - Java2days 2010
 
GlassFish OSGi Server
GlassFish OSGi ServerGlassFish OSGi Server
GlassFish OSGi Server
 
Java EE 6 Clustering with Glassfish 3.1
Java EE 6 Clustering with Glassfish 3.1 Java EE 6 Clustering with Glassfish 3.1
Java EE 6 Clustering with Glassfish 3.1
 
GlassFish and JavaEE, Today and Future
GlassFish and JavaEE, Today and FutureGlassFish and JavaEE, Today and Future
GlassFish and JavaEE, Today and Future
 
Glass Fish V3 University Amers May2009
Glass Fish V3  University Amers May2009Glass Fish V3  University Amers May2009
Glass Fish V3 University Amers May2009
 
Boston 2011 OTN Developer Days - GlassFish
Boston 2011 OTN Developer Days - GlassFishBoston 2011 OTN Developer Days - GlassFish
Boston 2011 OTN Developer Days - GlassFish
 
Glassfish An Introduction
Glassfish An IntroductionGlassfish An Introduction
Glassfish An Introduction
 
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
 
Andrei Niculae - glassfish - 24mai2011
Andrei Niculae - glassfish - 24mai2011Andrei Niculae - glassfish - 24mai2011
Andrei Niculae - glassfish - 24mai2011
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
OSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 IndiaOSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 India
 
OSGi & Java EE in GlassFish
OSGi & Java EE in GlassFishOSGi & Java EE in GlassFish
OSGi & Java EE in GlassFish
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
 
Hybrid Applications
Hybrid ApplicationsHybrid Applications
Hybrid Applications
 
Retour JavaOne 2009
Retour JavaOne 2009Retour JavaOne 2009
Retour JavaOne 2009
 

Más de JUG Lausanne

Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
JUG Lausanne
 

Más de JUG Lausanne (20)

Introduction aux algorithmes génétiques
Introduction aux algorithmes génétiquesIntroduction aux algorithmes génétiques
Introduction aux algorithmes génétiques
 
Développer un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rienDévelopper un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rien
 
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
 
Exemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et SparkExemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et Spark
 
Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012
 
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
 
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
 
Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
 
Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009
 
Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009
 
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
 
XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008
 
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
 
Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 

Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010

  • 1. GlassFish v3 The future of Java EE is here Alexis Moussine-Pouchkine GlassFish Team
  • 2. This is no science fiction Java EE 6 and GlassFish v3 shipped th final releases on December 10 2009
  • 5. Some History and Context Tomcat Jasper Catalina JSTL Struts Crimson XSLTC Xalan Xerces JAXB JAX-RPC JSF GlassFish v3 (Java EE 6) GlassFish v1 (Java EE 5) GlassFish Launch June 2005 v2 May 2006 Sept. 2007 v2.1 v2.1.1 Jan 2008 (you are here) Dec. 2009
  • 6. GlassFish ● A Community ● ● ● Users, Partners, Testers, Developers Started in 2005 on java.net Sub-projects – ● Jersey (JAX-RS), Metro (JAX-WS), Grizzly (nio), Atmosphere (Comet), OpenMQ (JMS), and scripting Application Server ● ● ● Enterprise Quality and Open Source Java EE 5 / 6 Reference Implementation Full Commercial Support from Oracle
  • 8. GlassFish going forward ● No change to operation of open source project ● ● ● ● ● GlassFish 3.0.1 ● ● GlassFish Open Source Edition under existing license Remains transparent and participatory Strengthened by Oracle leadership Customer and community driven product roadmap Additional platforms, jrockit, ... Feature releases ● ● ● GlassFish v3.1 in 2010, v3.2 in 2011, v4 in 2012 Clustering, centralized admin, Coherence, virtualization Details at http://glassfish.org/roadmap
  • 10. Painless Java EE development ! ● ● Incremental compile of all Java EE artifacts Auto-deploy of all Java EE and static artifacts
  • 11. Session Retention ● Deployment option to maintain stateful sessions across re-deployments $ asadmin redeploy --properties keepSessions=true myapp.war ● ● Greatly simplifies the development paradigm Integrated in IDEs
  • 13. Modular and Dynamic ● Modular : Apache Felix (OSGi) ● Extensible : HK2 ● Yet very Fast !
  • 14.
  • 15. Java EE, a brief History Ease of development (web) Ease of development Java EE 5 Web Services Enterprise Application Robust Scalable J2EE 1.4 J2EE 1.3 J2EE 1.2 Project JPE May 1998 Servlet JSP EJB JMS RMI/IIOP Dec 1999 10 specs CMP JCA Sept 2001 13 specs WS Management Deployment Nov 2003 20 specs Annotations EJB 3 JPA 1.0 WS-* JSF May 2006 23 specs Java EE 6 EJB 3.1 JPA 2.0 Servlet 3.0 JSF 2.0 JAX-RS 1.1 CDI 1.0 @Inject Bean Validat° Web Profile Managed Bean Q4 2009 28 specs
  • 16. Java EE 6 – What's New? ● ● ● ● ● Several new APIs Web Profile Extensibility & Pluggability Dependency Injection Improvement to many APIs
  • 17. New and improved specifications ● ● ● ● ● ● ● EJB 3.1 JPA 2.0 Servlet 3.0 JSF 2.0 JAX-RS 1.1 Connectors 1.6 Bean Validation 1.0 ● ● ● ● ● ● ● ● DI 1.0 CDI 1.0 Managed Beans 1.0 Interceptors 1.1 JAX-WS 2.2 JSR-109 1.3 JSP 2.2 / EL 2.2 JSR-250 1.1
  • 18. JAX-RS ● RESTful web services API ● Already widely adopted ● Really a general, high-level HTTP API ● Annotation-based programming model ● Programmatic API when needed ● JAX-RS 1.1 integration with EJBs
  • 19. JAX-RS sample code @Path("widgets/{id}") @Produces("application/widgets+xml") public class WidgetResource { public WidgetResource( @PathParam("id") String id) { ... } @GET Widget getWidget() { ... } }
  • 20. Bean Validation 1.0 public class Address { @NotNull @Size(max=30, message="longer than {max} characters") private String street1; ... @NotNull @Valid private Country country; } public class Country { @NotNull @Size(max=20) private String name; ... } request recursive object graph validation
  • 21. Build your own! @Size(min=5, max=5) @ConstraintValidator(ZipcodeValidator.class) @Documented @Target({ANNOTATION_TYPE, METHOD, FIELD}) @Retention(RUNTIME) public @interface ZipCode { String message() default "Wrong zipcode"; String[] groups() default {}; } Integrated in JPA and JSF Bootstrap APIs
  • 22. Java EE 6 Web Profile ● ● ● ● ● ● ● Servlet 3.0 JSP 2.2 / EL 2.2 JSR-45 1.0 JSTL 1.2 JSF 2.0 Bean Validation 1.0 EJB 3.1 Lite ● ● ● ● ● ● ● JPA 2.0 JTA 1.1 DI 1.0 CDI 1.0 Managed Beans 1.0 Interceptors 1.1 JSR-250 1.1
  • 23. Modular Web Applications ● ● ● ● ● ● Libraries can contain web-fragment.xml web.xml is optional @WebServlet, @WebFilter annotations ServletContainerInitializer interface Programmatic registration Resource jars
  • 24. JSF 2.0 ● Standardized facelets ● Auto-discovery of component libraries ● Composite components ● Ajax support with partial views ● Even a JavaScript API !
  • 25. EJB 3.1 ● @Singleton beans ● @Startup beans ● @Asynchronous invocations ● @Schedule tasks ● EJBContainer API works on Java SE ● Define EJBs directly inside a web app
  • 26. Packaging in a war foo.ear lib/foo_common.jar com/acme/Foo.class foo_web.war WEB-INF/web.xml WEB-INF/classes com/acme/FooServlet.class foo_ejb.jar com/acme/FooEJB.class com/acme/FooEJBLocal.class foo.war WEB-INF/classes com/acme/Foo.class com/acme/FooServlet.class com/acme/FooEJB.class
  • 27. JPA 2.0 ● ● Support for collections of basic types and embeddable objects JPQL enhancements e.g. CASE WHEN, NULLIF Pessimistic locking ● ● ● Criteria API for dynamic query construction
  • 28. Dependency Injection ● JSR-299 + JSR-330 ● Added @Inject support @Inject @LoggedIn User user; ● Beans discovered at startup ● Injection metamodel (BeanManager API) ● @Resource still around @Resource DataSource myDB;
  • 29. Dependency Injection Sample public class CheckoutHandler { @Inject CheckoutHandler(@LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default Cart cart) { ... } }
  • 30. Demo Painless (Java EE 6) development
  • 31. Yes, Eclipse too ! GlassFish Tools Bundle for Eclipse : http://download.java.net/glassfish/eclipse/
  • 32. More Painless Development ● ● Fast auto-deploy of all Java EE and static artifacts Application runner ● ● java -jar glassfish.jar toto.war Integration with maven 2 ● mvn gf:run, gf:start, gf:deploy, ... ● Containers can be added/removed dynamically ● Excellent Tools integration
  • 33. How hard should it be to test EJBs? EJBContainer c = EJBContainer.createEJBContainer(); Context ic = c.getContext(); SimpleEjb ejb = (SimpleEjb) ic.lookup("java:global/sample/SimpleEjb"); ejb.sayHello();
  • 34. How hard should it be to test EJBs? New in EJB 3.1 EJBContainer c = EJBContainer.createEJBContainer(); Context ic = c.getContext(); SimpleEjb ejb = (SimpleEjb) ic.lookup("java:global/sample/SimpleEjb"); ejb.sayHello(); Portable JNDI name
  • 35. How hard should it be to test EJBs? @Test public void test() { EJBContainer c = EJBContainer.createEJBContainer(); Context ic = c.getContext(); SimpleEjb ejb = (SimpleEjb) ic.lookup("java:global/sample/SimpleEjb"); ejb.sayHello(); } Demo
  • 36. GlassFish Embedded org.glassfish.api.embedded.Server server; Server.Builder builder = new Server.Builder(); server = builder.build();
  • 37. GlassFish Embedded org.glassfish.api.embedded.Server server; Server.Builder builder = new Server.Builder(); server = builder.build(); ContainerBuilder b = server.createConfig(ContainerBuilder.Type.web); server.addContainer(b);
  • 38. GlassFish Embedded org.glassfish.api.embedded.Server server; Server.Builder builder = new Server.Builder(); server = builder.build(); ContainerBuilder b = server.createConfig(ContainerBuilder.Type.web); server.addContainer(b); File archive = new File("hello.war"); server.getDeployer().deploy(archive); Same bits, different entry point All in one JAR available
  • 39. GlassFish Embedded @BeforeClass public static void initContainer() { org.glassfish.api.embedded.Server server; Server.Builder builder = new Server.Builder(); server = builder.build(); ContainerBuilder b = server.createConfig(ContainerBuilder.Type.web); server.addContainer(b); File archive = new File("hello.war"); server.getDeployer().deploy(archive); } @Test public static void pingApplication() { ... }
  • 40. GlassFish Embedded public static void main(String[] args) { org.glassfish.api.embedded.Server server; Server.Builder builder = new Server.Builder(); server = builder.build(); ContainerBuilder b = server.createConfig(ContainerBuilder.Type.web); server.addContainer(b); File archive = new File("realApplication.war"); server.getDeployer().deploy(archive); } Ship app server inside the application
  • 41. What's the deal with OSGi? ● GlassFish runs on top of OSGi (Felix by default) ● ● ● ● ● ● Also runs unmodified on Equinox (and Knopflerfish) GlassFish ships with 200+ bundles Can run without OSGi (Static mode) Can use OSGi management tools (CLI or Web) Can be installed on top of existing OSGi runtime Any OSGi bundle will run in GlassFish v3 ● ● ● Drop it in glassfish/modules{/autostart} Can also asadmin deploy it using --type osgi GlassFish OSGi admin console
  • 42. Extending GlassFish v3 OSGi-style – an example, a demo and a picture ● ● ● ● ● OSGi declarative service Service-Component entry in the JAR Manifest Invoke the service from a servlet using standard @Resource injection Never use a GlassFish API ! No need to chose between OSGi and Java EE Step by step: http://blogs.sun.com/dochez/entry/glassfish_v3_extensions_part_4
  • 44. Extending GlassFish v3 SpringDM – another example, demo and picture ● ● ● ● ● Extend GlassFish with an unmodified Spring dm container Simple Spring bean implementing the service Invoke the service from a servlet using standard @Resource injection Still no use of a GlassFish API Single runtime for both Spring and full Java EE Step by step: http://blogs.sun.com/dochez/entry/glassfish_v3_extensions_part_4
  • 45. OSGi + Java EE = Hybrid Apps ● GlassFish as the modular runtime ● ● ● ● Assembled spontaneously Admin tools (Web & CLI) Implementation of Java EE related OSGi services & standards Support for Java EE 6 platform ● ● e.g. JPA or EJB as OSGi services Web Application Bundle (WAB) ● WAR + OSGi metadata + Web-ContextPath header
  • 48. GlassFish à la carte ● Unzip 5-MB bootstrap ● Install core IPS packages
  • 49. GlassFish à la carte ● Unzip 5-MB bootstrap ● ● Install core IPS packages Define the repository to use
  • 50. GlassFish à la carte ● Unzip 5-MB bootstrap ● ● ● Install core IPS packages Define the repository to use Install individual packages ● ● Start with core glassfish-nucleus package Drags dependencies of course
  • 51. GlassFish à la carte ● Unzip 5-MB bootstrap ● ● ● Define the repository to use Install individual packages ● ● ● Install core IPS packages Start with core glassfish-nucleus package Drags dependencies of course Install umbrella package (a distro really) ● Enough to run a JAX-RS/EJB31 demo
  • 52. GlassFish à la carte ● Unzip 5-MB bootstrap ● ● ● Define the repository to use Install individual packages ● ● ● ● Start with core glassfish-nucleus package Drags dependencies of course Install umbrella package (a distro really) ● ● Install core IPS packages Enough to run a JAX-RS/EJB31 demo Create GlassFish server instance Deploy application
  • 53. GlassFish à la carte ● Unzip 5-MB bootstrap ● ● ● Define the repository to use Install individual packages ● ● ● ● ● Start with core glassfish-nucleus package Drags dependencies of course Install umbrella package (a distro really) ● ● Install core IPS packages Enough to run a JAX-RS/EJB31 demo Create GlassFish server instance Deploy application Run!
  • 54. Monitoring and Management Beyond web console and asadmin ● Dynamic and non-intrusive monitoring of events from any GlassFish runtime classes ● BTrace integration new! – – ● Probe Providers defined in java or XML new! – ● ● ● Portable, dynamic and safe tracing tool for Java Btrace annotations and API to write scripts Default providers & roll out your own RESTful interface new! DTrace for end-to-end new! Still exposed via JMX ● jconsole and visualvm as natural clients
  • 55. RESTful admin ● JAX-RS/Jersey + Grizzly to provide REST interfaces to : ● ● ● ● Available from : ● ● ● ● http://localhost:4848/management/domain http://localhost:4848/monitoring/domain Use REST clients as Admin GUI substitute ● ● Configure runtime (via GET, POST, DELETE) Invoke commands (restart, stop, deploy, etc..) Monitoring (GET only) Use you favorite glue/scripting language or tool Data offered as either XML, HTML or JSON Extensible
  • 57. A lot more ... ● Management and Monitoring ● ● Dynamic languages ● ● ● ● mod_jk WebDAV, CGI, SSI Web Services Metro ● ● Rails, Grails, Django, Scala/Lift... Comet, Atmosphere Full support for ● ● Dynamic, Btrace, ... .Net 3.5 interop OpenMQ E te x s n le ib
  • 58. GlassFish v3 – Practical ● Get it from http://glassfish.org ● ● ● Choice ! ● ● ● ● GlassFish v3 now final ! Also from http://www.oracle.com/goto/glassfish Eclipse or NetBeans (or vi...) Felix or Equinox Graphical Installer, Zip version Download size starting at 30MB ● Can move from Web profile to full (and vice-versa)