SlideShare a Scribd company logo
Java EE 6 and GlassFish v3:
 Paving the path for future




Arun Gupta, GlassFish Guy
Sun Microsystems, Inc.
blog.arungupta.me
Java EE: Past & Present
                                                                                                       Right Sizing
                                                                                       Ease of
                                                                                     Development       Java EE 6
                                                                                                       EJB Lite
                                                          Web                        Java EE 5         Restful WS
                                                        Services                     Ease of
                                                                                                       Web Beans
                                                                                     Development
                                                                                                       Extensibility
                                                         J2EE 1.4                    Annotations
                           Robustness                  Web Services,                 EJB 3.0
           Enterprise                                  Management,                   Persistence API
          Java Platform     J2EE 1.3                   Deployment,                   New and
                                  CMP,
                                                       Async.                        Updated
                               Connector
                                                 `     Connector                     Web Services      Java EE 6
            J2EE 1.2          Architecture

           Servlet, JSP,                                                                               Web Profile
 JPE        EJB, JMS
Project     RMI/IIOP

                            Java EE 6 and GlassFish v3: Paving path for the future                                Slide 2
Compatible Java EE 5 Implementations




             Java EE 6 and GlassFish v3: Paving path for the future   Slide 3
Goals for the Java EE 6 Platform

• Right Sizing the Platform
    > Flexible, lighter weight
• Extensible
    >Embrace Open Source Frameworks
• Easier to use, develop on
    > Continue on path set by Java EE 5




                   Java EE 6 and GlassFish v3: Paving path for the future   Slide 4
Right Sizing the Platform: Profiles
• Make platform flexible
  > Decouple specifications to allow more
    combinations
  > Expands potential licensee ecosystem
  > Profiles
     >Targeted technology bundles
     >Defined through the JCP
     >First profile: Web Profile
         – Defined by         the Java EE 6 Expert Group


               Java EE 6 and GlassFish v3: Paving path for the future   Slide 5
Web Profile
• Fully functional mid-sized profile
  > Actively discussed in Java EE Expert Group
    and outside it
  > Technologies
    > Servlet 3.0, EJB Lite 3.1, JPA 2.0, JSP 2.2, EL 1.2, JSTL 1.2,
      JSF 2.0, JTA 1.1, JSR-45, JSR-250




                    Java EE 6 and GlassFish v3: Paving path for the future   Slide 6
Right Sizing the Platform: Pruning
• Make platform lighter
  > Makes some technologies optional
  > Pruned today, means
    > optional in the next release
    > Deleted in the subsequent release
  > Pruned Technologies will be marked in the
    javadocs
  > Current pruning list
    > JAX-RPC, EJB 2.X Entity Beans, JAXR, JSR-88



                   Java EE 6 and GlassFish v3: Paving path for the future   Slide 7
Extensibility
• Embrace open source libraries and
  frameworks
• Zero-configuration, drag-and-drop for web
  frameworks
  > Servlets, servlet filters, context listeners for a
    framework get discovered and registered
    automatically
• Plugin library jars using web fragments




                   Java EE 6 and GlassFish v3: Paving path for the future   Slide 8
<web-fragment>
   <filter>
         <filter-name>wicket.helloworld</filter-name>
         <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
         <init-param>
              <param-name>applicationClassName</param-name>
              <param-value>...</param-value>
         </init-param>
   </filter>
    <filter-mapping>
          <filter-name>wicket.helloworld</filter-name>
          <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-fragment>



http://blog.arungupta.me/2009/08/totd-91-applying-java-ee-6-web-fragment-xml-to-apache-wicket-deploy-on-glassfish-v3/

                                                       Java EE 6 and GlassFish v3: Paving path for the future           Slide 9
<web-fragment>
  <filter>
     <filter-name>LiftFilter</filter-name>
      <display-name>Lift Filter</display-name>
      <description>The Filter that intercepts lift calls</description>
      <filter-class>net.liftweb.http.LiftFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>LiftFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-fragment>




http://blog.arungupta.me/2009/09/totd-101-applying-servlet-3-0java-ee-6-"web-fragment-xml"-to-lift-–-deploy-on-glassfish-v3/

                                                         Java EE 6 and GlassFish v3: Paving path for the future                Slide 10
Ease of Development
•   Continue advancements of Java EE 5
•   Primary focus: Web Tier
•   Multiple Areas easier to use: EJB 3.1
•   General principles
    > Annotation-based programming model
    > Reduce or eliminate need for deployment
      descriptors
    > Traditional API for advanced users




                   Java EE 6 and GlassFish v3: Paving path for the future   Slide 11
Web/EJB Application in Java EE 5 Platform

            foo.ear                                                                 foo.ear

                                                                      lib/foo_common.jar
  foo_web.war
                                                                          com/acme/Foo.class
   WEB-INF/web.xml
   WEB-INF/classes/
    com/acme/FooServlet.class                                          foo_web.war
   WEB-INF/classes
    com/acme/Foo.class                            OR                     WEB-INF/web.xml
                                                                         WEB-INF/classes/
                                                                          com/acme/FooServlet.class
  foo_ejb.jar

  com/acme/FooBean.class                                               foo_ejb.jar
  com/acme/Foo.class
                                                                          com/acme/FooBean.class



                           Java EE 6 and GlassFish v3: Paving path for the future                     Slide 12
Web/EJB Application in Java EE 6 Platform


                         foo.war

            WEB-INF/classes/
             com/acme/FooServlet.class

            WEB-INF/classes/
             com/acme/FooBean.class




                   web.xml

             Java EE 6 and GlassFish v3: Paving path for the future   Slide 13
EoD Example - Servlets
Servlet in Java EE 5: Create two source files
<!--Deployment descriptor                        /* Code in Java Class */
  web.xml -->
<web-app>                                        package com.foo;
  <servlet>                                      public class MyServlet
    <servlet-name>MyServlet                      extends HttpServlet {
      </servlet-name>                            public void
       <servlet-class>                           doGet(HttpServletRequest
         com.foo.MyServlet
       </servlet-class>                          req,HttpServletResponse res)
  </servlet>                                     {
  <servlet-mapping>
    <servlet-name>MyServlet                      ...
       </servlet-name>
    <url-pattern>/myApp/*                        }
       </url-pattern>
  </servlet-mapping>
   ...                                           ...
</web-app>
                                                 }



                   Java EE 6 and GlassFish v3: Paving path for the future   Slide 14
EoD Example - Servlets
Servlet in Java EE 6: In many cases a single source file

package com.foo;
@WebServlet(name=”MyServlet”, urlPattern=”/myApp/*”)
public class MyServlet extends HttpServlet {
   public void doGet(HttpServletRequest req,
             HttpServletResponse res)
   {
      ...
   }




                   Java EE 6 and GlassFish v3: Paving path for the future   Slide 15
Java EE 6 Status
• Public reviews completed
• JSF 2.0 is final, majority of the specs are in
  Proposed Final Draft
• Reference Implementation is GlassFish V3
• Final release later this year




                Java EE 6 and GlassFish v3: Paving path for the future   Slide 16
What is GlassFish ?
• A Community
         > Users, Partners, Testers, Developers, ...
         > Started in 2005 on java.net
• Application Server
         > Enterprise Quality and Open Source (CDDL & GPL v2)
         > Java EE 5 Reference Implementation
         > Full Commercial Support from Sun
• Leverages Sun's experience in other Java,
Middleware, SDK

http://glassfish.org
                       Java EE 6 and GlassFish v3: Paving path for the future   Slide 17
Sun GlassFish Enterprise Server

                               Enterprise Manager



            Customer
            Advocate                                                           eLearning
                                                                               Credit



 Customer Focused                                                                   24x7 Support
 Support Team

                                   GlassFish
   Sun VIP                         Open Source
                                   Application Server                               Patches &
   Interoperability
                                                                                    Upgrades
   Support
                      Java EE 6 and GlassFish v3: Paving path for the future                       Slide 18
GlassFish v3
• Modular
        > Maven 2 – Build & Module description
        > Felix – OSGi runtime
        > Allow any type of Container to be plugged
               –   Start Container and Services on demand
• Embeddable: runs in-VM
• Extensible: pluggable containers
   > Rails, Grails, Django, ...
• Java EE 6 Reference Implementation
• Support for upcoming Java EE 6 profiles
 http://glassfish.org/v3
                              Java EE 6 and GlassFish v3: Paving path for the future   Slide 19
Dynamic Languages & Frameworks




http://glassfish-scripting.dev.java.net
                                Java EE 6 and GlassFish v3: Paving path for the future   Slide 20
Rails Deployment Choices




                                                                     Credits: http://birdwatchersdigest.com




            Java EE 6 and GlassFish v3: Paving path for the future                                            Slide 21
Demo
  NetBeans and Java EE 6


http://blog.arungupta.me/2008/11/screencast-27-simple-web-application-using-netbeans-6-5-ide-and-glassfish-v3-prelude/
http://blog.arungupta.me/2008/11/screencast-26-developrundebug-rails-application-using-netbeans-ide-and-glassfish-v3-prelude/
http://blog.arungupta.me/2009/08/totd-93-getting-started-with-java-ee-6-using-netbeans-6-8-m1-glassfish-v3-a-simple-servlet-3-0-jpa-2-0-app/
http://blog.arungupta.me/2009/08/totd-94-a-simple-java-server-faces-2-0-jpa-2-0-application-getting-started-with-java-ee-6-using-netbeans-6-8-m1-glassfish-v3/
http://blog.arungupta.me/2009/08/totd-95-ejb-3-1-java-server-faces-2-0-jpa-2-0-web-application-getting-started-with-java-ee-6-using-netbeans-6-8-m1-glassfish-v3/
http://blog.arungupta.me/2008/11/screencast-28-simple-web-application-using-eclipse-and-glassfish-v3-prelude/


                                                           Java EE 6 and GlassFish v3: Paving path for the future                                                   Slide 22
Embeddable GlassFish
public void testServlet() throws Exception {
    int port = 9999;
    GlassFish glassfish = newGlassFish(port);
    URL url = new URL("http://localhost:" + port + "/" +
  NAME + "/SimpleServlet");
    BufferedReader br = new BufferedReader(
          new InputStreamReader(
          url.openConnection().getInputStream()));
    assertEquals("Wow, I'm embedded!", br.readLine());
    glassfish.stop();
  }


                    Java EE 6 and GlassFish v3: Paving path for the future   Slide 23
... Embeddable GlassFish
   private GlassFish newGlassFish(int port) throws Exception {
      GlassFish glassfish = new GlassFish(port);
      ScatteredWar war = new ScatteredWar(NAME,
           new File("src/main/resources"),
           new File("src/main/resources/WEB-INF/web.xml"),
           Collections.singleton(new
   File("target/classes").toURI().toURL()));
      glassfish.deploy(war);
      System.out.println("Ready ...");
      return glassfish;
   }

http://blog.arungupta.me/2008/05/embeddable-glassfish-in-action-servlet-in-a-maven-project/
                                      Java EE 6 and GlassFish v3: Paving path for the future   Slide 24
Extending GlassFish ... 1, 2, 3.
    @Service(name="mycommand")
    @Scoped(PerLookup.class)
    public class CLIPluggabilityCommand implements AdminCommand {
    ...
    }

    ...
    // this value can be either runtime or os for our demo
    @Param(primary=true)
    String inParam;
    ...

   public void execute(AdminCommandContext context) {
   ...
   }


http://java.net/blog/2008/11/07/extending-glassfish-v3-prelude-easy-1-2-3



                                                           Java EE 6 and GlassFish v3: Paving path for the future   Slide 25
Light-weight & On-demand Monitoring
• Event-driven light-weight and non-intrusive
  monitoring
• Modules provide domain specific probes
  (monitoring events)
  > EJB, Web, Connector, JPA, Jersey, Orb, Ruby
• End-to-end monitoring on Solaris using DTrace
• 3rd party scripting clients
  > JavaScript to begin with




                    Java EE 6 and GlassFish v3: Paving path for the future   Slide 26
Demo
    GlassFish v3 Monitoring




http://blog.arungupta.me/2009/09/totd-104-glassfish-v3-monitoring-how-to-monitor-a-rails-app-using-asadmin-javascript-jconsole-rest/

                                                             Java EE 6 and GlassFish v3: Paving path for the future                    Slide 27
REST Interface
• REST interface to management and
  monitoring data
  > Configuration data, Commands invocation (start/stop
    instance, deploy, undeploy, ...), CRUD resources (JMS,
    JDBC, ...)
  > localhost:4848/management/domain
  > localhost:4848/monitoring/domain
• GET, POST, DELETE methods
• XML, JSON, HTML reps



                   Java EE 6 and GlassFish v3: Paving path for the future   Slide 28
Demo
  GlassFish v3 REST Interface



http://blog.arungupta.me/2009/08/totd-96-glassfish-v3-rest-interface-to-monitoring-and-management-json-xml-and-html-representations/

                                                          Java EE 6 and GlassFish v3: Paving path for the future                       Slide 29
Java EE 6 and GlassFish v3:
 Paving the path for future




Arun Gupta, GlassFish Guy
Sun Microsystems, Inc.
blog.arungupta.me

More Related Content

PDF
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
PDF
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
PDF
GIDS 2012: PaaSing a Java EE Application
PDF
GIDS 2012: Java Message Service 2.0
PDF
Java EE 6 & GlassFish v3 @ DevNexus
PDF
Java EE 6 : Paving The Path For The Future
PDF
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
PDF
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
GIDS 2012: PaaSing a Java EE Application
GIDS 2012: Java Message Service 2.0
Java EE 6 & GlassFish v3 @ DevNexus
Java EE 6 : Paving The Path For The Future
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010

What's hot (20)

PDF
Understanding the nuts & bolts of Java EE 6
PDF
JavaEE 6 and GlassFish v3 at SFJUG
PDF
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
PDF
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
PDF
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
PDF
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
PDF
Java EE 6 Component Model Explained
PDF
Java EE7 Demystified
PDF
Java EE 6 workshop at Dallas Tech Fest 2011
PDF
Java EE 6 & GlassFish 3
PDF
Java EE 6 and GlassFish v3: Paving the path for future
PDF
Sun Java EE 6 Overview
PDF
Overview of Java EE 6 by Roberto Chinnici at SFJUG
PPT
Java EE7 in action
PDF
Java EE 6 and GlassFish v3: Paving the path for future
PDF
Java EE6 CodeCamp16 oct 2010
PDF
Deep Dive Hands-on in Java EE 6 - Oredev 2010
PDF
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
PDF
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
ODP
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
Understanding the nuts & bolts of Java EE 6
JavaEE 6 and GlassFish v3 at SFJUG
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Component Model Explained
Java EE7 Demystified
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 & GlassFish 3
Java EE 6 and GlassFish v3: Paving the path for future
Sun Java EE 6 Overview
Overview of Java EE 6 by Roberto Chinnici at SFJUG
Java EE7 in action
Java EE 6 and GlassFish v3: Paving the path for future
Java EE6 CodeCamp16 oct 2010
Deep Dive Hands-on in Java EE 6 - Oredev 2010
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
Ad

Similar to Java EE 6 and GlassFish v3: Paving the path for future (20)

PDF
Java EE 6 and GlassFish portfolio
PDF
Java Enterprise Edition 6 Overview
PDF
GlassFish Tool Bundle for Eclipse
PDF
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
PDF
Java EE 6 = Less Code + More Power
PDF
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
PDF
Boston 2011 OTN Developer Days - Java EE 6
PDF
Java EE6 Overview
PDF
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
PDF
Java EE 6 Aquarium Paris
PDF
Glass Fishv3 March2010
PDF
Java E
PDF
Spark IT 2011 - Java EE 6 Workshop
PDF
The Java Ee 6 Platform Normandy Jug
PDF
Andrei Niculae - JavaEE6 - 24mai2011
PDF
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011
ODP
Java EE and Glassfish
PDF
GlassFish v3 at JavaZone 09
PDF
Java EE 7: the Voyage of the Cloud Treader
Java EE 6 and GlassFish portfolio
Java Enterprise Edition 6 Overview
GlassFish Tool Bundle for Eclipse
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 = Less Code + More Power
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...
Boston 2011 OTN Developer Days - Java EE 6
Java EE6 Overview
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Java EE 6 Aquarium Paris
Glass Fishv3 March2010
Java E
Spark IT 2011 - Java EE 6 Workshop
The Java Ee 6 Platform Normandy Jug
Andrei Niculae - JavaEE6 - 24mai2011
Java EE / GlassFish Strategy & Roadmap @ JavaOne 2011
Java EE and Glassfish
GlassFish v3 at JavaZone 09
Java EE 7: the Voyage of the Cloud Treader
Ad

More from Arun Gupta (20)

PDF
5 Skills To Force Multiply Technical Talents.pdf
PPTX
Machine Learning using Kubernetes - AI Conclave 2019
PDF
Machine Learning using Kubeflow and Kubernetes
PPTX
Secure and Fast microVM for Serverless Computing using Firecracker
PPTX
Building Java in the Open - j.Day at OSCON 2019
PPTX
Why Amazon Cares about Open Source
PDF
Machine learning using Kubernetes
PDF
Building Cloud Native Applications
PDF
Chaos Engineering with Kubernetes
PDF
How to be a mentor to bring more girls to STEAM
PDF
Java in a World of Containers - DockerCon 2018
PPTX
The Serverless Tidal Wave - SwampUP 2018 Keynote
PDF
Introduction to Amazon EKS - KubeCon 2018
PDF
Mastering Kubernetes on AWS - Tel Aviv Summit
PDF
Top 10 Technology Trends Changing Developer's Landscape
PDF
Container Landscape in 2017
PDF
Java EE and NoSQL using JBoss EAP 7 and OpenShift
PDF
Docker, Kubernetes, and Mesos recipes for Java developers
PDF
Thanks Managers!
PDF
Migrate your traditional VM-based Clusters to Containers
5 Skills To Force Multiply Technical Talents.pdf
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubeflow and Kubernetes
Secure and Fast microVM for Serverless Computing using Firecracker
Building Java in the Open - j.Day at OSCON 2019
Why Amazon Cares about Open Source
Machine learning using Kubernetes
Building Cloud Native Applications
Chaos Engineering with Kubernetes
How to be a mentor to bring more girls to STEAM
Java in a World of Containers - DockerCon 2018
The Serverless Tidal Wave - SwampUP 2018 Keynote
Introduction to Amazon EKS - KubeCon 2018
Mastering Kubernetes on AWS - Tel Aviv Summit
Top 10 Technology Trends Changing Developer's Landscape
Container Landscape in 2017
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Docker, Kubernetes, and Mesos recipes for Java developers
Thanks Managers!
Migrate your traditional VM-based Clusters to Containers

Recently uploaded (20)

PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
cuic standard and advanced reporting.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
madgavkar20181017ppt McKinsey Presentation.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Modernizing your data center with Dell and AMD
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Review of recent advances in non-invasive hemoglobin estimation
cuic standard and advanced reporting.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Mobile App Security Testing_ A Comprehensive Guide.pdf
madgavkar20181017ppt McKinsey Presentation.pdf
Chapter 3 Spatial Domain Image Processing.pdf
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
20250228 LYD VKU AI Blended-Learning.pptx
Modernizing your data center with Dell and AMD
Spectral efficient network and resource selection model in 5G networks
The Rise and Fall of 3GPP – Time for a Sabbatical?
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
GamePlan Trading System Review: Professional Trader's Honest Take
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Bridging biosciences and deep learning for revolutionary discoveries: a compr...

Java EE 6 and GlassFish v3: Paving the path for future

  • 1. Java EE 6 and GlassFish v3: Paving the path for future Arun Gupta, GlassFish Guy Sun Microsystems, Inc. blog.arungupta.me
  • 2. Java EE: Past & Present Right Sizing Ease of Development Java EE 6 EJB Lite Web Java EE 5 Restful WS Services Ease of Web Beans Development Extensibility J2EE 1.4 Annotations Robustness Web Services, EJB 3.0 Enterprise Management, Persistence API Java Platform J2EE 1.3 Deployment, New and CMP, Async. Updated Connector ` Connector Web Services Java EE 6 J2EE 1.2 Architecture Servlet, JSP, Web Profile JPE EJB, JMS Project RMI/IIOP Java EE 6 and GlassFish v3: Paving path for the future Slide 2
  • 3. Compatible Java EE 5 Implementations Java EE 6 and GlassFish v3: Paving path for the future Slide 3
  • 4. Goals for the Java EE 6 Platform • Right Sizing the Platform > Flexible, lighter weight • Extensible >Embrace Open Source Frameworks • Easier to use, develop on > Continue on path set by Java EE 5 Java EE 6 and GlassFish v3: Paving path for the future Slide 4
  • 5. Right Sizing the Platform: Profiles • Make platform flexible > Decouple specifications to allow more combinations > Expands potential licensee ecosystem > Profiles >Targeted technology bundles >Defined through the JCP >First profile: Web Profile – Defined by the Java EE 6 Expert Group Java EE 6 and GlassFish v3: Paving path for the future Slide 5
  • 6. Web Profile • Fully functional mid-sized profile > Actively discussed in Java EE Expert Group and outside it > Technologies > Servlet 3.0, EJB Lite 3.1, JPA 2.0, JSP 2.2, EL 1.2, JSTL 1.2, JSF 2.0, JTA 1.1, JSR-45, JSR-250 Java EE 6 and GlassFish v3: Paving path for the future Slide 6
  • 7. Right Sizing the Platform: Pruning • Make platform lighter > Makes some technologies optional > Pruned today, means > optional in the next release > Deleted in the subsequent release > Pruned Technologies will be marked in the javadocs > Current pruning list > JAX-RPC, EJB 2.X Entity Beans, JAXR, JSR-88 Java EE 6 and GlassFish v3: Paving path for the future Slide 7
  • 8. Extensibility • Embrace open source libraries and frameworks • Zero-configuration, drag-and-drop for web frameworks > Servlets, servlet filters, context listeners for a framework get discovered and registered automatically • Plugin library jars using web fragments Java EE 6 and GlassFish v3: Paving path for the future Slide 8
  • 9. <web-fragment> <filter> <filter-name>wicket.helloworld</filter-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>...</param-value> </init-param> </filter> <filter-mapping> <filter-name>wicket.helloworld</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-fragment> http://blog.arungupta.me/2009/08/totd-91-applying-java-ee-6-web-fragment-xml-to-apache-wicket-deploy-on-glassfish-v3/ Java EE 6 and GlassFish v3: Paving path for the future Slide 9
  • 10. <web-fragment> <filter> <filter-name>LiftFilter</filter-name> <display-name>Lift Filter</display-name> <description>The Filter that intercepts lift calls</description> <filter-class>net.liftweb.http.LiftFilter</filter-class> </filter> <filter-mapping> <filter-name>LiftFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-fragment> http://blog.arungupta.me/2009/09/totd-101-applying-servlet-3-0java-ee-6-"web-fragment-xml"-to-lift-–-deploy-on-glassfish-v3/ Java EE 6 and GlassFish v3: Paving path for the future Slide 10
  • 11. Ease of Development • Continue advancements of Java EE 5 • Primary focus: Web Tier • Multiple Areas easier to use: EJB 3.1 • General principles > Annotation-based programming model > Reduce or eliminate need for deployment descriptors > Traditional API for advanced users Java EE 6 and GlassFish v3: Paving path for the future Slide 11
  • 12. Web/EJB Application in Java EE 5 Platform foo.ear foo.ear lib/foo_common.jar foo_web.war com/acme/Foo.class WEB-INF/web.xml WEB-INF/classes/ com/acme/FooServlet.class foo_web.war WEB-INF/classes com/acme/Foo.class OR WEB-INF/web.xml WEB-INF/classes/ com/acme/FooServlet.class foo_ejb.jar com/acme/FooBean.class foo_ejb.jar com/acme/Foo.class com/acme/FooBean.class Java EE 6 and GlassFish v3: Paving path for the future Slide 12
  • 13. Web/EJB Application in Java EE 6 Platform foo.war WEB-INF/classes/ com/acme/FooServlet.class WEB-INF/classes/ com/acme/FooBean.class web.xml Java EE 6 and GlassFish v3: Paving path for the future Slide 13
  • 14. EoD Example - Servlets Servlet in Java EE 5: Create two source files <!--Deployment descriptor /* Code in Java Class */ web.xml --> <web-app> package com.foo; <servlet> public class MyServlet <servlet-name>MyServlet extends HttpServlet { </servlet-name> public void <servlet-class> doGet(HttpServletRequest com.foo.MyServlet </servlet-class> req,HttpServletResponse res) </servlet> { <servlet-mapping> <servlet-name>MyServlet ... </servlet-name> <url-pattern>/myApp/* } </url-pattern> </servlet-mapping> ... ... </web-app> } Java EE 6 and GlassFish v3: Paving path for the future Slide 14
  • 15. EoD Example - Servlets Servlet in Java EE 6: In many cases a single source file package com.foo; @WebServlet(name=”MyServlet”, urlPattern=”/myApp/*”) public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) { ... } Java EE 6 and GlassFish v3: Paving path for the future Slide 15
  • 16. Java EE 6 Status • Public reviews completed • JSF 2.0 is final, majority of the specs are in Proposed Final Draft • Reference Implementation is GlassFish V3 • Final release later this year Java EE 6 and GlassFish v3: Paving path for the future Slide 16
  • 17. What is GlassFish ? • A Community > Users, Partners, Testers, Developers, ... > Started in 2005 on java.net • Application Server > Enterprise Quality and Open Source (CDDL & GPL v2) > Java EE 5 Reference Implementation > Full Commercial Support from Sun • Leverages Sun's experience in other Java, Middleware, SDK http://glassfish.org Java EE 6 and GlassFish v3: Paving path for the future Slide 17
  • 18. Sun GlassFish Enterprise Server Enterprise Manager Customer Advocate eLearning Credit Customer Focused 24x7 Support Support Team GlassFish Sun VIP Open Source Application Server Patches & Interoperability Upgrades Support Java EE 6 and GlassFish v3: Paving path for the future Slide 18
  • 19. GlassFish v3 • Modular > Maven 2 – Build & Module description > Felix – OSGi runtime > Allow any type of Container to be plugged – Start Container and Services on demand • Embeddable: runs in-VM • Extensible: pluggable containers > Rails, Grails, Django, ... • Java EE 6 Reference Implementation • Support for upcoming Java EE 6 profiles http://glassfish.org/v3 Java EE 6 and GlassFish v3: Paving path for the future Slide 19
  • 20. Dynamic Languages & Frameworks http://glassfish-scripting.dev.java.net Java EE 6 and GlassFish v3: Paving path for the future Slide 20
  • 21. Rails Deployment Choices Credits: http://birdwatchersdigest.com Java EE 6 and GlassFish v3: Paving path for the future Slide 21
  • 22. Demo NetBeans and Java EE 6 http://blog.arungupta.me/2008/11/screencast-27-simple-web-application-using-netbeans-6-5-ide-and-glassfish-v3-prelude/ http://blog.arungupta.me/2008/11/screencast-26-developrundebug-rails-application-using-netbeans-ide-and-glassfish-v3-prelude/ http://blog.arungupta.me/2009/08/totd-93-getting-started-with-java-ee-6-using-netbeans-6-8-m1-glassfish-v3-a-simple-servlet-3-0-jpa-2-0-app/ http://blog.arungupta.me/2009/08/totd-94-a-simple-java-server-faces-2-0-jpa-2-0-application-getting-started-with-java-ee-6-using-netbeans-6-8-m1-glassfish-v3/ http://blog.arungupta.me/2009/08/totd-95-ejb-3-1-java-server-faces-2-0-jpa-2-0-web-application-getting-started-with-java-ee-6-using-netbeans-6-8-m1-glassfish-v3/ http://blog.arungupta.me/2008/11/screencast-28-simple-web-application-using-eclipse-and-glassfish-v3-prelude/ Java EE 6 and GlassFish v3: Paving path for the future Slide 22
  • 23. Embeddable GlassFish public void testServlet() throws Exception { int port = 9999; GlassFish glassfish = newGlassFish(port); URL url = new URL("http://localhost:" + port + "/" + NAME + "/SimpleServlet"); BufferedReader br = new BufferedReader( new InputStreamReader( url.openConnection().getInputStream())); assertEquals("Wow, I'm embedded!", br.readLine()); glassfish.stop(); } Java EE 6 and GlassFish v3: Paving path for the future Slide 23
  • 24. ... Embeddable GlassFish private GlassFish newGlassFish(int port) throws Exception { GlassFish glassfish = new GlassFish(port); ScatteredWar war = new ScatteredWar(NAME, new File("src/main/resources"), new File("src/main/resources/WEB-INF/web.xml"), Collections.singleton(new File("target/classes").toURI().toURL())); glassfish.deploy(war); System.out.println("Ready ..."); return glassfish; } http://blog.arungupta.me/2008/05/embeddable-glassfish-in-action-servlet-in-a-maven-project/ Java EE 6 and GlassFish v3: Paving path for the future Slide 24
  • 25. Extending GlassFish ... 1, 2, 3. @Service(name="mycommand") @Scoped(PerLookup.class) public class CLIPluggabilityCommand implements AdminCommand { ... } ... // this value can be either runtime or os for our demo @Param(primary=true) String inParam; ... public void execute(AdminCommandContext context) { ... } http://java.net/blog/2008/11/07/extending-glassfish-v3-prelude-easy-1-2-3 Java EE 6 and GlassFish v3: Paving path for the future Slide 25
  • 26. Light-weight & On-demand Monitoring • Event-driven light-weight and non-intrusive monitoring • Modules provide domain specific probes (monitoring events) > EJB, Web, Connector, JPA, Jersey, Orb, Ruby • End-to-end monitoring on Solaris using DTrace • 3rd party scripting clients > JavaScript to begin with Java EE 6 and GlassFish v3: Paving path for the future Slide 26
  • 27. Demo GlassFish v3 Monitoring http://blog.arungupta.me/2009/09/totd-104-glassfish-v3-monitoring-how-to-monitor-a-rails-app-using-asadmin-javascript-jconsole-rest/ Java EE 6 and GlassFish v3: Paving path for the future Slide 27
  • 28. REST Interface • REST interface to management and monitoring data > Configuration data, Commands invocation (start/stop instance, deploy, undeploy, ...), CRUD resources (JMS, JDBC, ...) > localhost:4848/management/domain > localhost:4848/monitoring/domain • GET, POST, DELETE methods • XML, JSON, HTML reps Java EE 6 and GlassFish v3: Paving path for the future Slide 28
  • 29. Demo GlassFish v3 REST Interface http://blog.arungupta.me/2009/08/totd-96-glassfish-v3-rest-interface-to-monitoring-and-management-json-xml-and-html-representations/ Java EE 6 and GlassFish v3: Paving path for the future Slide 29
  • 30. Java EE 6 and GlassFish v3: Paving the path for future Arun Gupta, GlassFish Guy Sun Microsystems, Inc. blog.arungupta.me