SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
Servlet 3.0                  ``




Rajiv Mordani
Servlet Specification lead
Senior Staff Engineer
Agenda
•   Overview
•   Pluggability
•   Ease of Development
•   Async support
•   Security
•   Status
•   Summary




                          Sun Proprietary/Confidential: Internal Use Only   2
Overview
• Java Servlet 3.0 API – JSR 315
• Has about 20 members in the expert group with a good mix of
  representation from the major Java™ EE vendors, web container
  vendors and individual web framework authors
• Main areas of improvements and additions are -
  >   Pluggability
  >   Ease of Development
  >   Async support
  >   Security
• Specification in Public Review and things can change




                            Sun Proprietary/Confidential: Internal Use Only   3
Agenda
•   Overview
•   Pluggability
•   Ease of Development
•   Async support
•   Security
•   Status
•   Summary




                          Sun Proprietary/Confidential: Internal Use Only   4
Pluggability
• Make it possible to use frameworks / libraries without boiler plate
  configuration that needs to be added to the descriptor
• Modularize web.xml to allow frameworks to have their own artifacts
  defined and self-contained within the framework jar
• Add APIs to ServletContext that allow addition of Servlets and
  Filters at context initialization time
• Alternately use annotations to declare components that will be
  discovered at deployment / runtime by the container




                       Sun Proprietary/Confidential: Internal Use Only   5
Pluggability – Modularization of
web.xml
• Current users of frameworks today need to have boiler plate
  configuration in the web.xml, the deployment descriptor for the
  application, to use a framework
• For example,
  > to use a framework the developer needs to define a servlet, typically a controller
    servlet.
  > Define Filters, to do logging or a filter to implement security constraints
  > Define listeners so that appropriate action can be taken at different points in the
    application / component's life cycle.
• Monolithic web.xml can become complex as dependencies increase
• Frameworks need to document the boiler plate configuration




                             Sun Proprietary/Confidential: Internal Use Only              6
Pluggability - web-fragment.xml
• In servlet 3.0 we now have a web-fragment.xml, that a framework /
  library can bundle
• Defines all the artifacts it needs (ala boiler plate configuration)
• Included in the framework in the META-INF/services directory
• Container responsible for discovering the fragments and assembling the
  deployment descriptor for the application
• Essentially almost identical to the web.xml but the top level element is
  web-fragment as opposed to web-app
• Frameworks now have the deployment configuration included in itself
• Container scans WEB-INF/lib of the application for these fragments and
  assembles the descriptor for the application



                         Sun Proprietary/Confidential: Internal Use Only     7
Pluggability – web-fragment.xml
sample
<web-fragment>
 <servlet>
      <servlet-name>welcome</servlet-name>
      <servlet-class>
        WelcomeServlet
      </servlet-class>
 </servlet>
 <servlet-mapping>
      <servlet-name>welcome</servlet-name>
      <url-pattern>/Welcome</url-pattern>
 </servlet-mapping>
...
</web-fragment>



                         Sun Proprietary/Confidential: Internal Use Only   8
Rules for merging
• Defined in the public review of the specification
• web.xml takes precedence over web-fragment.xml
• No ordering defined for web-fragment.xml
• If ordering of listeners / filters are important then they MUST be defined
  in the web.xml
• Container scans for the fragments
• If you don't want fragments to be scanned, everything MUST be
  specified in the web.xml and the metadata-complete MUST be set to
  true in the web.xml
• This will also turn off scanning of annotations
    > Works in a mode compatible with servlet 2.5
    > Can be used in production systems when you are no longer changing any of
      these features
• Can enable / disable certain servlets if you don't want them deployed
  from a framework using the enable flag in web.xml
                            Sun Proprietary/Confidential: Internal Use Only      9
Pluggability – Configuration
methods added to ServletContext
• In addition to the modularization of web.xml, new methods have been
  added to ServletContext to declare and configure Servlets and
  Filters
• Can only be invoked at context initialization time
• Allows a (framework) developer to
  >   Declare a new Servlet programatically
  >   Define the parameters for it (init params, urlPatterns, etc)
  >   Declare a Filter
  >   Define the parameters for it (init params, urlPatterns, etc)
• Enables applications / frameworks to be able to dynamically add
  Servlets and Fiters.



                              Sun Proprietary/Confidential: Internal Use Only   10
ServletContext API usage sample
@WebServletContextListener
public class MyListener {
    public void contextInitialized (ServletContextEvent sce) {
        ServletContext sc = sce.getServletContext();
        sc.addServlet(quot;myServletquot;,
                       quot;Sample servletquot;,
                       quot;foo.bar.MyServletquot;,
                        null, -1);
        sc.addServletMapping(quot;myServletquot;,
                                    new String[] {quot;/urlpattern/*quot;});
    }
}




                            Sun Proprietary/Confidential: Internal Use Only   11
ServletContext API usage sample
– changes post public review
@WebServletContextListener
public class MyListener {
    public void contextInitialized (ServletContextEvent sce) {
         ServletContext sc = sce.getServletContext();
         ServletRegistration sr = sc.addServlet(quot;NewServletquot;,
                                                                         quot;test.NewServletquot;);
        sr.setInitParameter(quot;servletInitNamequot;, quot;servletInitValuequot;);
        sc.addServletMapping(quot;NewServletquot;, new String[] {quot;/newServletquot;});


        FilterRegistration fr = sc.addFilter(quot;NewFilterquot;,
                                                                 quot;test.NewFilterquot;);
        fr.setInitParameter(quot;filterInitNamequot;, quot;filterInitValuequot;);
        sc.addFilterMappingForServletNames(quot;NewFilterquot;,
           EnumSet.of(DispatcherType.REQUEST), true, quot;NewServletquot;);


    }
}                           Sun Proprietary/Confidential: Internal Use Only                    12
Agenda
•   Overview
•   Pluggability
•   Ease of Development
•   Async support
•   Security
•   Status
•   Summary




                          Sun Proprietary/Confidential: Internal Use Only   13
Ease of Development
• Focus on Ease of Development in the Servlet 3.0 API
• Enhance the API to use the new language features introduced since
  Java SE 5
• Annotations for declarative style of programming
• Generics for better type safety in the API where possible without
  breaking backwards compatibility
• Make descriptors optional
• Better defaults and conventions for configuration




                       Sun Proprietary/Confidential: Internal Use Only   14
Ease of Development – use of
annotations
• Specification defines annotations to declare, Servlet, Filter,
  ServletContextListener and security constraints.
• @WebServlet annotation for defining a servlet
• The servlet annotation MUST contain at a minimum the url pattern for
  the servlet.
• All other fields optional with reasonable defaults
  > For example, the default name of the servlet, if not specified, is the fully qualified
    class name
• Class MUST still extends HttpServlet
  > Method contracts for doGet, doPost etc still derived from the abstract
    class
• Can use the web.xml to override values specified in the annotations
  > Don't need to recompile code to change configuration at deployment time

                             Sun Proprietary/Confidential: Internal Use Only                 15
Servlet example - 2.5
                                               web.xml
public class SimpleSample                      <web-app>
extends HttpServlet {                             <servlet>
                                                     <servlet-name>               MyServlet
    public void doGet
    (HttpServletRequest req,                         </servlet-name>
     HttpServletResponse res)                        <servlet-class>
    {                                                 samples.SimpleSample
                                                     </servlet-class>
                                                  </servlet>
    }
                                                  <servlet-mapping>
}                                                    <servlet-name>
                                                        MyServlet
                                                     </servlet-name>
                                                     <url-pattern>
                                                        /MyApp
                                                     </url-pattern>
                                                  </servlet-mapping>
                                               ...
                                               </web-app>
                    Sun Proprietary/Confidential: Internal Use Only                           16
Servlet example - 3.0
@Servlet(“/foo”)
public class SimpleSample extends HttpServlet {
    public void doGet(HttpServletRequest req,
                      HttpServletResponse res)
    {

    }
}




                 Sun Proprietary/Confidential: Internal Use Only   17
Agenda
•   Overview
•   Pluggability
•   Ease of Development
•   Async support
•   Security
•   Status
•   Summary




                          Sun Proprietary/Confidential: Internal Use Only   18
Async Support – Use cases
• Wait for a resource to become available (JDBC, call to webservice)
• Generate response asynchronously
• Use the existing frameworks to generate responses after waiting for the
  async operation to complete




                        Sun Proprietary/Confidential: Internal Use Only     19
Async - API
• Annotation attributes in the @WebServlet and
  @ServletFilter annotations that indicates if a Servlet or a
  Filter supports async. The attribute is asyncSupported.
• To initiate an async operation there are methods on
  ServletRequest - startAsync(req, res) and
  startAsync()
• Call to startAsync returns an AsyncContext initialized with
  the request and response objects passed to the startAsync call.
• AsyncContext.forward(path) and
  AsyncContext.forward() that forwards the request back to
  the container so you can use frameworks like JSP to generate the
  response.
• AsyncContext.complete() indicates that the developer is
  done processing the request and generating the appropriate response.
                        Sun Proprietary/Confidential: Internal Use Only   20
Async API - contd.
• There are a few more methods in ServletRequest like
  isAsyncSupported and isAsyncStarted that can be used
  by applications to determine if async operations are supported or
  started.
• There is also a new listener - AsyncListener that applications can
  use to get notified of when async processing is completed or if a timeout
  occurs.




                         Sun Proprietary/Confidential: Internal Use Only      21
Async API usage
• Initiate async processing using
  > startAsync(req, res)
  > startAsync().
• startAsync() with no parameters implicitly uses the original
  request and response
• startAsync(req, res) uses the request and response
  objects passed in.
• The request and response passed in can be wrapped by filters or other
  servlets earlier in the request processing chain.
• AsyncContext is initialized appropriately with the request and
  response depending on the method used.
• When wrapping the response and calling the no arguments
  startAsync() if any data has been written to the wrapped
  response and not flushed to the underlying response stream you could
  lose the data..           Sun Proprietary/Confidential: Internal Use Only   22
Async API usage - contd
• After the async processing is over you can forward the request back to
  run in the context of the web container.
• there are three methods that are available in the AsyncContext
  that enable this.
  > forward() no args forwards back to the quot;original urlquot; or if a forward
    (AsyncContext or RequestDispatcher forward) has occured
    after an async context has been initialized then the no args forward will forward
    to the path that was used by the AsyncContext /
    RequestDispatcher to forward to.
  > forward(path) forwards to the path relative to the context of the request
  > forward(ServletContext, path) forwards to the path relative to
    the context specified. Below is an example that shows a simple web application
    that is waiting for a webservice call to return and then rendering the response



                            Sun Proprietary/Confidential: Internal Use Only             23
Async API example
@WebServlet(“/foo”,                               public class AsyncWebService
asyncSupported=true)                                implements Runnable {
public class SimpleSample                               AsyncContext ctx;
extends HttpServlet {
                                                        public
    public void doGet                                 AsyncWebService(AsyncContex
    (HttpServletRequest req,                          t ctx) {
     HttpServletResponse res)
    {                                                                    this.ctx = ctx;
    ...                                                     }
AsyncContext aCtx =                                     public void run() {
request.startAsync(req, res);                               // Invoke web
ScheduledThreadPoolExecutor                           service and save result in
executor = new                                        request attribute
ScheduledThreadPoolExecutor(1                               // Forward the
0);                                                   request to render the
        executor.execute(new                          result to a JSP.
AsyncWebService(aCtx));                               ctx.forward(quot;/render.jspquot;);
    }                                                       }
}                                                 }                                        24
                       Sun Proprietary/Confidential: Internal Use Only
Agenda
•   Overview
•   Pluggability
•   Ease of Development
•   Async support
•   Security
•   Status
•   Summary




                          Sun Proprietary/Confidential: Internal Use Only   25
Security
• Not in the public review of the spec – still not closed in the EG
• Looking to add programattic login and logout
• Method can be used to force a login and ability to logout
• Proposal is to add login and logout methods to
  HttpServletRequest, HttpSession (logout only)
• Login method intended to allow an application or framework to force a
  container mediated authentication from within an unconstrained request
  context
• Login requires access to the HttpResponse object to set the
  www-authenticate header.
    > Available through new methods added to the request to give access to the
      corresponding response object
• Logout methods are provided to allow an application to reset the
  authentication state of a request without requiring that authentication be
  bound to an HttpSession
                             Sun Proprietary/Confidential: Internal Use Only     26
Security - contd.
• Add support for annotations defined in Java EE 5 -
  @RolesAllowed, @PermitAll, @DenyAll
• Added support for HttpOnlyCookies
• Prevents access to the cookie from client side scripting code
• Prevents cross-site scripting attacks.
• Method added to Cookie to set and query if it is an
  HttpOnly cookie




                         Sun Proprietary/Confidential: Internal Use Only   27
Agenda
•   Overview
•   Pluggability
•   Ease of Development
•   Async support
•   Security
•   Status
•   Summary




                          Sun Proprietary/Confidential: Internal Use Only   28
Status
• Specification currently in Public Review
• Proposed final draft and final release will be aligned with Java EE 6
• Implementation of a lot of the Public Review version of the specification
  is available today in the GlassFish trunk build.
  > Shing Wai and I are thinking of doing a screencast to demo the features
    available today after the holidays




                            Sun Proprietary/Confidential: Internal Use Only   29
Summary
• Lot of exciting things happening in the Java™ Servlet 3.0 API
  >   Pluggability for frameworks
  >   Ease of Development for developers
  >   Async support
  >   Security enhancements
• Make the life of the framework developer and users of the frameworks
  much easier
• Implementation being done in the open source as part of GlassFish
  project.




                            Sun Proprietary/Confidential: Internal Use Only   30
Resources
• JCP page
  > http://jcp.org/en/jsr/detail?id=315
• Feedback alias
  > jsr-315-comments@jcp.org
• Mailing list for GlassFish related webtier issues
  > webtier@glassfish.dev.java.net
• Blogs
  >   Rajiv - http://weblogs.java.net/blog/mode
  >   Shing Wai - http://blogs.sun.com/swchan
  >   Jan Luehe - http://blogs.sun.com/jluehe
  >   Jeanfrancois Arcand - http://weblogs.java.net/blog/jfarcand
  >   Aggregated feed for GlassFish webtier -
      http://planets.sun.com/glassfishwebtier/group/blogs/ or
      http://feeds.feedburner.com/GlassFish-Webtier
                             Sun Proprietary/Confidential: Internal Use Only   31
Servlet 3.0                  ``




Rajiv Mordani
Servlet Specification lead
Senior Staff Engineer

Mais conteúdo relacionado

Mais procurados

Alfresco study presentation 38th customize How-To WebDAV
Alfresco study presentation 38th customize How-To WebDAVAlfresco study presentation 38th customize How-To WebDAV
Alfresco study presentation 38th customize How-To WebDAVTakeshi Totani
 
Troubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise StackTroubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise StackPuppet
 
Spring Boot Actuator
Spring Boot ActuatorSpring Boot Actuator
Spring Boot ActuatorRowell Belen
 
Alfresco study37 alfresco_ng2_components
Alfresco study37 alfresco_ng2_componentsAlfresco study37 alfresco_ng2_components
Alfresco study37 alfresco_ng2_componentsTakeshi Totani
 
Groovy and Grails in Google App Engine
Groovy and Grails in Google App EngineGroovy and Grails in Google App Engine
Groovy and Grails in Google App EngineGuillaume Laforge
 
Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2Max Pronko
 
Embedding GlassFish v3 in Ehcache Server
Embedding GlassFish v3 in Ehcache ServerEmbedding GlassFish v3 in Ehcache Server
Embedding GlassFish v3 in Ehcache ServerEduardo Pelegri-Llopart
 
Camel and JBoss
Camel and JBossCamel and JBoss
Camel and JBossJBug Italy
 

Mais procurados (8)

Alfresco study presentation 38th customize How-To WebDAV
Alfresco study presentation 38th customize How-To WebDAVAlfresco study presentation 38th customize How-To WebDAV
Alfresco study presentation 38th customize How-To WebDAV
 
Troubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise StackTroubleshooting the Puppet Enterprise Stack
Troubleshooting the Puppet Enterprise Stack
 
Spring Boot Actuator
Spring Boot ActuatorSpring Boot Actuator
Spring Boot Actuator
 
Alfresco study37 alfresco_ng2_components
Alfresco study37 alfresco_ng2_componentsAlfresco study37 alfresco_ng2_components
Alfresco study37 alfresco_ng2_components
 
Groovy and Grails in Google App Engine
Groovy and Grails in Google App EngineGroovy and Grails in Google App Engine
Groovy and Grails in Google App Engine
 
Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2Real use cases of performance optimization in magento 2
Real use cases of performance optimization in magento 2
 
Embedding GlassFish v3 in Ehcache Server
Embedding GlassFish v3 in Ehcache ServerEmbedding GlassFish v3 in Ehcache Server
Embedding GlassFish v3 in Ehcache Server
 
Camel and JBoss
Camel and JBossCamel and JBoss
Camel and JBoss
 

Destaque

Moritz - Das Seminarkrokodil
Moritz - Das SeminarkrokodilMoritz - Das Seminarkrokodil
Moritz - Das Seminarkrokodilalinadan
 
很棒很酷的照片
很棒很酷的照片很棒很酷的照片
很棒很酷的照片AMY peng
 
Danke an meine Kunden
Danke an meine KundenDanke an meine Kunden
Danke an meine Kundenalinadan
 
Self Organized Air Tasking
Self Organized Air TaskingSelf Organized Air Tasking
Self Organized Air TaskingJohn Bordeaux
 
Formatiu La Finalizacion
Formatiu La FinalizacionFormatiu La Finalizacion
Formatiu La Finalizacionescolafut
 
Virtuele omgevingen voor de PO doelgroep.
Virtuele omgevingen voor de PO doelgroep.Virtuele omgevingen voor de PO doelgroep.
Virtuele omgevingen voor de PO doelgroep.Wvanbruggen
 
Null Object Design Pattern
Null Object Design PatternNull Object Design Pattern
Null Object Design Patterntcab22
 
Pepper Interventions
Pepper InterventionsPepper Interventions
Pepper Interventionsmarikewestra
 
Second Homes Or Vacation Homes
Second Homes Or Vacation HomesSecond Homes Or Vacation Homes
Second Homes Or Vacation HomesSD Chandra
 
Time Stands Still
Time Stands StillTime Stands Still
Time Stands StillBears Grl
 

Destaque (20)

Triunghi
TriunghiTriunghi
Triunghi
 
ft Power Point
ft Power Pointft Power Point
ft Power Point
 
Moritz - Das Seminarkrokodil
Moritz - Das SeminarkrokodilMoritz - Das Seminarkrokodil
Moritz - Das Seminarkrokodil
 
Lectura
LecturaLectura
Lectura
 
很棒很酷的照片
很棒很酷的照片很棒很酷的照片
很棒很酷的照片
 
Danke an meine Kunden
Danke an meine KundenDanke an meine Kunden
Danke an meine Kunden
 
Self Organized Air Tasking
Self Organized Air TaskingSelf Organized Air Tasking
Self Organized Air Tasking
 
Andrés Y Carlos
Andrés Y CarlosAndrés Y Carlos
Andrés Y Carlos
 
Information on IBM recent stock splits.
Information on IBM recent stock splits. Information on IBM recent stock splits.
Information on IBM recent stock splits.
 
Vela
VelaVela
Vela
 
Formatiu La Finalizacion
Formatiu La FinalizacionFormatiu La Finalizacion
Formatiu La Finalizacion
 
NASCAR Summit
NASCAR SummitNASCAR Summit
NASCAR Summit
 
Virtuele omgevingen voor de PO doelgroep.
Virtuele omgevingen voor de PO doelgroep.Virtuele omgevingen voor de PO doelgroep.
Virtuele omgevingen voor de PO doelgroep.
 
Null Object Design Pattern
Null Object Design PatternNull Object Design Pattern
Null Object Design Pattern
 
Pepper Interventions
Pepper InterventionsPepper Interventions
Pepper Interventions
 
Second Homes Or Vacation Homes
Second Homes Or Vacation HomesSecond Homes Or Vacation Homes
Second Homes Or Vacation Homes
 
Time Stands Still
Time Stands StillTime Stands Still
Time Stands Still
 
Redes Sociais
Redes SociaisRedes Sociais
Redes Sociais
 
Serengeti
SerengetiSerengeti
Serengeti
 
Cambio Climatico
Cambio ClimaticoCambio Climatico
Cambio Climatico
 

Semelhante a Servlet30 20081218

Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Arun Gupta
 
JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0Arun Gupta
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudCarlos Sanchez
 
Deploy Rails Application by Capistrano
Deploy Rails Application by CapistranoDeploy Rails Application by Capistrano
Deploy Rails Application by CapistranoTasawr Interactive
 
01 Struts Intro
01 Struts Intro01 Struts Intro
01 Struts Introsdileepec
 
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenWebtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenThorsten Kamann
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 5...
 Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 5... Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 5...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 5...WebStackAcademy
 
Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008JavaEE Trainers
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet Sagar Nakul
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet Sagar Nakul
 
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...IndicThreads
 
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010Jagadish Prasath
 
JEE Course - The Web Tier
JEE Course - The Web TierJEE Course - The Web Tier
JEE Course - The Web Tierodedns
 
Introduction To ASP.NET MVC
Introduction To ASP.NET MVCIntroduction To ASP.NET MVC
Introduction To ASP.NET MVCAlan Dean
 

Semelhante a Servlet30 20081218 (20)

Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
 
JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The Cloud
 
Deploy Rails Application by Capistrano
Deploy Rails Application by CapistranoDeploy Rails Application by Capistrano
Deploy Rails Application by Capistrano
 
01 Struts Intro
01 Struts Intro01 Struts Intro
01 Struts Intro
 
Struts Into
Struts IntoStruts Into
Struts Into
 
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and MavenWebtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
Webtests Reloaded - Webtest with Selenium, TestNG, Groovy and Maven
 
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 5...
 Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 5... Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 5...
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 5...
 
GlassFish Embedded API
GlassFish Embedded APIGlassFish Embedded API
GlassFish Embedded API
 
Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008
 
Struts,Jsp,Servlet
Struts,Jsp,ServletStruts,Jsp,Servlet
Struts,Jsp,Servlet
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet
 
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...Java EE 6 = Less Code + More Power (Tutorial)  [5th IndicThreads Conference O...
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
 
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
 
EPiServer Web Parts
EPiServer Web PartsEPiServer Web Parts
EPiServer Web Parts
 
T5 Oli Aro
T5 Oli AroT5 Oli Aro
T5 Oli Aro
 
Java Servlets
Java ServletsJava Servlets
Java Servlets
 
JEE Course - The Web Tier
JEE Course - The Web TierJEE Course - The Web Tier
JEE Course - The Web Tier
 
Introduction To ASP.NET MVC
Introduction To ASP.NET MVCIntroduction To ASP.NET MVC
Introduction To ASP.NET MVC
 

Último

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Último (20)

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 

Servlet30 20081218

  • 1. Servlet 3.0 `` Rajiv Mordani Servlet Specification lead Senior Staff Engineer
  • 2. Agenda • Overview • Pluggability • Ease of Development • Async support • Security • Status • Summary Sun Proprietary/Confidential: Internal Use Only 2
  • 3. Overview • Java Servlet 3.0 API – JSR 315 • Has about 20 members in the expert group with a good mix of representation from the major Java™ EE vendors, web container vendors and individual web framework authors • Main areas of improvements and additions are - > Pluggability > Ease of Development > Async support > Security • Specification in Public Review and things can change Sun Proprietary/Confidential: Internal Use Only 3
  • 4. Agenda • Overview • Pluggability • Ease of Development • Async support • Security • Status • Summary Sun Proprietary/Confidential: Internal Use Only 4
  • 5. Pluggability • Make it possible to use frameworks / libraries without boiler plate configuration that needs to be added to the descriptor • Modularize web.xml to allow frameworks to have their own artifacts defined and self-contained within the framework jar • Add APIs to ServletContext that allow addition of Servlets and Filters at context initialization time • Alternately use annotations to declare components that will be discovered at deployment / runtime by the container Sun Proprietary/Confidential: Internal Use Only 5
  • 6. Pluggability – Modularization of web.xml • Current users of frameworks today need to have boiler plate configuration in the web.xml, the deployment descriptor for the application, to use a framework • For example, > to use a framework the developer needs to define a servlet, typically a controller servlet. > Define Filters, to do logging or a filter to implement security constraints > Define listeners so that appropriate action can be taken at different points in the application / component's life cycle. • Monolithic web.xml can become complex as dependencies increase • Frameworks need to document the boiler plate configuration Sun Proprietary/Confidential: Internal Use Only 6
  • 7. Pluggability - web-fragment.xml • In servlet 3.0 we now have a web-fragment.xml, that a framework / library can bundle • Defines all the artifacts it needs (ala boiler plate configuration) • Included in the framework in the META-INF/services directory • Container responsible for discovering the fragments and assembling the deployment descriptor for the application • Essentially almost identical to the web.xml but the top level element is web-fragment as opposed to web-app • Frameworks now have the deployment configuration included in itself • Container scans WEB-INF/lib of the application for these fragments and assembles the descriptor for the application Sun Proprietary/Confidential: Internal Use Only 7
  • 8. Pluggability – web-fragment.xml sample <web-fragment> <servlet> <servlet-name>welcome</servlet-name> <servlet-class> WelcomeServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>welcome</servlet-name> <url-pattern>/Welcome</url-pattern> </servlet-mapping> ... </web-fragment> Sun Proprietary/Confidential: Internal Use Only 8
  • 9. Rules for merging • Defined in the public review of the specification • web.xml takes precedence over web-fragment.xml • No ordering defined for web-fragment.xml • If ordering of listeners / filters are important then they MUST be defined in the web.xml • Container scans for the fragments • If you don't want fragments to be scanned, everything MUST be specified in the web.xml and the metadata-complete MUST be set to true in the web.xml • This will also turn off scanning of annotations > Works in a mode compatible with servlet 2.5 > Can be used in production systems when you are no longer changing any of these features • Can enable / disable certain servlets if you don't want them deployed from a framework using the enable flag in web.xml Sun Proprietary/Confidential: Internal Use Only 9
  • 10. Pluggability – Configuration methods added to ServletContext • In addition to the modularization of web.xml, new methods have been added to ServletContext to declare and configure Servlets and Filters • Can only be invoked at context initialization time • Allows a (framework) developer to > Declare a new Servlet programatically > Define the parameters for it (init params, urlPatterns, etc) > Declare a Filter > Define the parameters for it (init params, urlPatterns, etc) • Enables applications / frameworks to be able to dynamically add Servlets and Fiters. Sun Proprietary/Confidential: Internal Use Only 10
  • 11. ServletContext API usage sample @WebServletContextListener public class MyListener { public void contextInitialized (ServletContextEvent sce) { ServletContext sc = sce.getServletContext(); sc.addServlet(quot;myServletquot;,                        quot;Sample servletquot;,                      quot;foo.bar.MyServletquot;,                         null, -1); sc.addServletMapping(quot;myServletquot;, new String[] {quot;/urlpattern/*quot;}); } } Sun Proprietary/Confidential: Internal Use Only 11
  • 12. ServletContext API usage sample – changes post public review @WebServletContextListener public class MyListener { public void contextInitialized (ServletContextEvent sce) { ServletContext sc = sce.getServletContext(); ServletRegistration sr = sc.addServlet(quot;NewServletquot;, quot;test.NewServletquot;); sr.setInitParameter(quot;servletInitNamequot;, quot;servletInitValuequot;); sc.addServletMapping(quot;NewServletquot;, new String[] {quot;/newServletquot;}); FilterRegistration fr = sc.addFilter(quot;NewFilterquot;, quot;test.NewFilterquot;); fr.setInitParameter(quot;filterInitNamequot;, quot;filterInitValuequot;); sc.addFilterMappingForServletNames(quot;NewFilterquot;, EnumSet.of(DispatcherType.REQUEST), true, quot;NewServletquot;); } } Sun Proprietary/Confidential: Internal Use Only 12
  • 13. Agenda • Overview • Pluggability • Ease of Development • Async support • Security • Status • Summary Sun Proprietary/Confidential: Internal Use Only 13
  • 14. Ease of Development • Focus on Ease of Development in the Servlet 3.0 API • Enhance the API to use the new language features introduced since Java SE 5 • Annotations for declarative style of programming • Generics for better type safety in the API where possible without breaking backwards compatibility • Make descriptors optional • Better defaults and conventions for configuration Sun Proprietary/Confidential: Internal Use Only 14
  • 15. Ease of Development – use of annotations • Specification defines annotations to declare, Servlet, Filter, ServletContextListener and security constraints. • @WebServlet annotation for defining a servlet • The servlet annotation MUST contain at a minimum the url pattern for the servlet. • All other fields optional with reasonable defaults > For example, the default name of the servlet, if not specified, is the fully qualified class name • Class MUST still extends HttpServlet > Method contracts for doGet, doPost etc still derived from the abstract class • Can use the web.xml to override values specified in the annotations > Don't need to recompile code to change configuration at deployment time Sun Proprietary/Confidential: Internal Use Only 15
  • 16. Servlet example - 2.5 web.xml public class SimpleSample <web-app> extends HttpServlet { <servlet> <servlet-name>      MyServlet public void doGet     (HttpServletRequest req, </servlet-name>      HttpServletResponse res) <servlet-class>     { samples.SimpleSample </servlet-class> </servlet> } <servlet-mapping> } <servlet-name> MyServlet </servlet-name> <url-pattern> /MyApp </url-pattern> </servlet-mapping> ... </web-app> Sun Proprietary/Confidential: Internal Use Only 16
  • 17. Servlet example - 3.0 @Servlet(“/foo”) public class SimpleSample extends HttpServlet { public void doGet(HttpServletRequest req,                       HttpServletResponse res) { } } Sun Proprietary/Confidential: Internal Use Only 17
  • 18. Agenda • Overview • Pluggability • Ease of Development • Async support • Security • Status • Summary Sun Proprietary/Confidential: Internal Use Only 18
  • 19. Async Support – Use cases • Wait for a resource to become available (JDBC, call to webservice) • Generate response asynchronously • Use the existing frameworks to generate responses after waiting for the async operation to complete Sun Proprietary/Confidential: Internal Use Only 19
  • 20. Async - API • Annotation attributes in the @WebServlet and @ServletFilter annotations that indicates if a Servlet or a Filter supports async. The attribute is asyncSupported. • To initiate an async operation there are methods on ServletRequest - startAsync(req, res) and startAsync() • Call to startAsync returns an AsyncContext initialized with the request and response objects passed to the startAsync call. • AsyncContext.forward(path) and AsyncContext.forward() that forwards the request back to the container so you can use frameworks like JSP to generate the response. • AsyncContext.complete() indicates that the developer is done processing the request and generating the appropriate response. Sun Proprietary/Confidential: Internal Use Only 20
  • 21. Async API - contd. • There are a few more methods in ServletRequest like isAsyncSupported and isAsyncStarted that can be used by applications to determine if async operations are supported or started. • There is also a new listener - AsyncListener that applications can use to get notified of when async processing is completed or if a timeout occurs. Sun Proprietary/Confidential: Internal Use Only 21
  • 22. Async API usage • Initiate async processing using > startAsync(req, res) > startAsync(). • startAsync() with no parameters implicitly uses the original request and response • startAsync(req, res) uses the request and response objects passed in. • The request and response passed in can be wrapped by filters or other servlets earlier in the request processing chain. • AsyncContext is initialized appropriately with the request and response depending on the method used. • When wrapping the response and calling the no arguments startAsync() if any data has been written to the wrapped response and not flushed to the underlying response stream you could lose the data.. Sun Proprietary/Confidential: Internal Use Only 22
  • 23. Async API usage - contd • After the async processing is over you can forward the request back to run in the context of the web container. • there are three methods that are available in the AsyncContext that enable this. > forward() no args forwards back to the quot;original urlquot; or if a forward (AsyncContext or RequestDispatcher forward) has occured after an async context has been initialized then the no args forward will forward to the path that was used by the AsyncContext / RequestDispatcher to forward to. > forward(path) forwards to the path relative to the context of the request > forward(ServletContext, path) forwards to the path relative to the context specified. Below is an example that shows a simple web application that is waiting for a webservice call to return and then rendering the response Sun Proprietary/Confidential: Internal Use Only 23
  • 24. Async API example @WebServlet(“/foo”, public class AsyncWebService asyncSupported=true) implements Runnable { public class SimpleSample AsyncContext ctx; extends HttpServlet { public public void doGet AsyncWebService(AsyncContex     (HttpServletRequest req, t ctx) {      HttpServletResponse res)     { this.ctx = ctx; ... } AsyncContext aCtx = public void run() { request.startAsync(req, res); // Invoke web ScheduledThreadPoolExecutor service and save result in executor = new request attribute ScheduledThreadPoolExecutor(1 // Forward the 0); request to render the executor.execute(new result to a JSP. AsyncWebService(aCtx)); ctx.forward(quot;/render.jspquot;); } } } } 24 Sun Proprietary/Confidential: Internal Use Only
  • 25. Agenda • Overview • Pluggability • Ease of Development • Async support • Security • Status • Summary Sun Proprietary/Confidential: Internal Use Only 25
  • 26. Security • Not in the public review of the spec – still not closed in the EG • Looking to add programattic login and logout • Method can be used to force a login and ability to logout • Proposal is to add login and logout methods to HttpServletRequest, HttpSession (logout only) • Login method intended to allow an application or framework to force a container mediated authentication from within an unconstrained request context • Login requires access to the HttpResponse object to set the www-authenticate header. > Available through new methods added to the request to give access to the corresponding response object • Logout methods are provided to allow an application to reset the authentication state of a request without requiring that authentication be bound to an HttpSession Sun Proprietary/Confidential: Internal Use Only 26
  • 27. Security - contd. • Add support for annotations defined in Java EE 5 - @RolesAllowed, @PermitAll, @DenyAll • Added support for HttpOnlyCookies • Prevents access to the cookie from client side scripting code • Prevents cross-site scripting attacks. • Method added to Cookie to set and query if it is an HttpOnly cookie Sun Proprietary/Confidential: Internal Use Only 27
  • 28. Agenda • Overview • Pluggability • Ease of Development • Async support • Security • Status • Summary Sun Proprietary/Confidential: Internal Use Only 28
  • 29. Status • Specification currently in Public Review • Proposed final draft and final release will be aligned with Java EE 6 • Implementation of a lot of the Public Review version of the specification is available today in the GlassFish trunk build. > Shing Wai and I are thinking of doing a screencast to demo the features available today after the holidays Sun Proprietary/Confidential: Internal Use Only 29
  • 30. Summary • Lot of exciting things happening in the Java™ Servlet 3.0 API > Pluggability for frameworks > Ease of Development for developers > Async support > Security enhancements • Make the life of the framework developer and users of the frameworks much easier • Implementation being done in the open source as part of GlassFish project. Sun Proprietary/Confidential: Internal Use Only 30
  • 31. Resources • JCP page > http://jcp.org/en/jsr/detail?id=315 • Feedback alias > jsr-315-comments@jcp.org • Mailing list for GlassFish related webtier issues > webtier@glassfish.dev.java.net • Blogs > Rajiv - http://weblogs.java.net/blog/mode > Shing Wai - http://blogs.sun.com/swchan > Jan Luehe - http://blogs.sun.com/jluehe > Jeanfrancois Arcand - http://weblogs.java.net/blog/jfarcand > Aggregated feed for GlassFish webtier - http://planets.sun.com/glassfishwebtier/group/blogs/ or http://feeds.feedburner.com/GlassFish-Webtier Sun Proprietary/Confidential: Internal Use Only 31
  • 32. Servlet 3.0 `` Rajiv Mordani Servlet Specification lead Senior Staff Engineer