SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
<Insert Picture Here>




Servlets 3.0
Asynchronous, Extensible, Ease-of-use
Arun Gupta, Java EE & GlassFish Guy
blogs.oracle.com/arungupta, @arungupta
The preceding is intended to outline our general product
direction. It is intended for information purposes only,
and may not be incorporated into any contract. It is
not a commitment to deliver any material, code, or
functionality, and should not be relied upon in making
purchasing decisions.
The development, release, and timing of any features
or functionality described for Oracle’s products remains
at the sole discretion of Oracle.


                                                           2
Agenda
• Overview
• Ease of Development
• Dynamic Registration of Servlets etc
• Pluggability
• Asynchronous Support
• Security Enhancements
• Miscellaneous




                                         3
Overview
l
    Java Servlet 3.0 done as part of JSR 315
l
    ~20 members in the expert group
    –Major Java EE vendors, open source web container developers, framework
     authors
l
    Main areas of focus
    –Ease of Development
    –Pluggability
    –Asynchronous support
    –Security



                                                                          4
Ease of Development

l
    Enhanced APIs to use new Java SE language features introduced
    since J2SE 5.0
    l
        Generics for type safety in API where possible
l
    Annotations for declarative style of programming
    l
        Optional web.xml
l
    Convention over configuration




                                                                5
Ease of Development
       Use of annotations

l
    Annotations to declare Servlets, Filters, Listeners and servlet
    security
    –@WebServlet – Define a Servlet
    –@WebFilter – Define a Filter
    –@WebListener – Define a Listener
    –@WebInitParam – Define init param
    –@MultipartConfig – Define file upload properties
    –@ServletSecurity – Define security constraints
l
    Can override using “web.xml”

                                                                      6
Servlet 2.5 example
      At least 2 files

<!--Deployment descriptor web.xml -->   /* Code in Java Class */
<web-app>
  <servlet>                             package com.sun;
    <servlet-name>MyServlet             public class MyServlet extends HttpServlet
                   </servlet-name>      {
        <servlet-class>                     public void
          com.sun.MyServlet                 doGet(HttpServletRequest
        </servlet-class>                    req,HttpServletResponse res)
   </servlet>                                {
   <servlet-mapping>
                                                  ...
     <servlet-name>MyServlet
        </servlet-name>                      }
     <url-pattern>/myApp/*                  ...
        </url-pattern>
   </servlet-mapping>                   }
    ...
 </web-app>




                                                                                     7
@WebServlet – Sample Code
@WebServlet(urlPatterns={“/myApp”})
public class SimpleSample extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) {


    }
}




                                                                           8
@WebServlet Async – Sample Code
@WebServlet(urlPatterns=“/myApp”, name=”MyServlet”, asyncSupported=true)
public class SimpleSample extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) {


    }
}




                                                                           9
Dynamic Registration
        Create and/or register
• ServletContext#add[Servlet | Filter]
        • Overloaded versions take [Servlet | Filter] name and
           – Fully qualified [Servlet | Filter] class name or
           – Class <? extends [Servlet | Filter]> or
           – [Servlet | Filter] instance
        • User returned Registration handle to configure all aspects of [Servlet |
          Filter]
l
    ServletContext#create[Servlet | Filter]
    –Takes Class<? Extends [Servlet | Filter]> argument
    –Supports resource injection by container
    –Returned [Servlet | Filter] instance may be fully customized before it is registered

                                                                                      10
Dynamic Registration
       Lookup


l
    ServletContext#find[Servlet |Filter]Registration
    –Takes [Servlet | Filter] name as argument
    –Returned Registration handle provides subset of configuration methods
    –May only be used to add initialization parameters and mappings
    –Conflict returned as java.util.Set




                                                                             11
Dynamic Registration
  Register example


ServletRegistration.Dynamic dynamic =
    servletContext.addServlet(
         "DynamicServlet",
         "com.mycom.MyServlet");
dynamic.addMapping("/dynamicServlet");
dynamic.setAsyncSupported(true);




                                         12
Dynamic Registration
    Lookup example


ServletRegistration declared =
    servletContext.getServletRegistration("DeclaredServlet");
declared.addMapping("/declaredServlet");
declared.setInitParameter("param", "value");




                                                                13
Pluggability
• Plugin libraries using web fragments
  – Modular web.xml
  – Absolute ordering: <absolute-ordering>
  – Relative ordering: <ordering>, <before>, <after>
• Bundled in framework *.jar/META-INF
• Zero-configuration, drag-and-drop for web frameworks
  – Servlets, servlet filters, context listeners for a framework get discovered
    and registered by the container
• Only JAR files in WEB-INF/lib are used


                                                                                  14
Pluggability – Sample Code


<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://blogs.oracle.com/arungupta/entry/totd_91_applying_java_ee


                                                                                       15
Pluggability – Sample Code

<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://blogs.oracle.com/arungupta/entry/totd_101_applying_servlet_3


                                                                         16
Extensibility
  ServletContainerInitializer

• Shared copies of frameworks
• Container installed JARs
  – App or Library
• Discovered using the service provider API
  – META-INF/services/javax.servlet.ServletContainerInitializer
• Expresses interest in classes via @HandlesTypes




                                                                  17
Extensibility
  ServletContainerInitializer

• Who uses it ?
  – Mojarra (JSF2) is bootstrapped into GlassFish
     • No “faces-config.xml” or “web.xml”
  – Jersey (JAX-RS) registers root Application
     • No (or portable) “web.xml”




                                                    18
Dynamic Registration
Java Server Faces
@SuppressWarnings({"UnusedDeclaration"})
@HandlesTypes({
ManagedBean.class,
FacesComponent.class,
FacesValidator.class,
FacesConverter.class,
FacesBehaviorRenderer.class,
ResourceDependency.class,
ResourceDependencies.class,
ListenerFor.class,
ListenersFor.class,
UIComponent.class,
Validator.class,
Converter.class,
Renderer.class
})
public class FacesInitializer implements ServletContainerInitializer {
    // NOTE: Loggins should not be used with this class.
    private static final String FACES_SERVLET_CLASS = FacesServlet.class.getName();




                                                                                      19
Dynamic Registration
Java Server Faces


public void onStartup(Set<Class<?>> classes, ServletContext servletContext)
throws ServletException {
       if (shouldCheckMappings(classes, servletContext)) {
            Map<String,? extends ServletRegistration> existing =
servletContext.getServletRegistrations();
            for (ServletRegistration registration : existing.values()) {
                if (FACES_SERVLET_CLASS.equals(registration.getClassName())) {
                    // FacesServlet has already been defined, so we're
                    // not going to add additional mappings;
                    return;
                }
            }
            ServletRegistration reg =
                  servletContext.addServlet("FacesServlet",
                                            "javax.faces.webapp.FacesServlet");
            reg.addMapping("/faces/*", "*.jsf", "*.faces");
            servletContext.setAttribute(RIConstants.FACES_INITIALIZER_MAPPINGS_ADDED,
Boolean.TRUE);




                                                                                        20
Resource Sharing

• Static and JSP not confined to document root of the web
  application
• May be placed in WEB-INF/lib/[*.jar]/META-
  INF/resources
• Resources in root take precedence over those in bundled JAR
• Container must honor this new location when
  – Processing HTTP requests
  – Calls to ServletContext#getResource[AsStream]



                                                                21
Resource Sharing – Sample Code




myapp.war
  WEB-INF/lib/catalog.jar
             /META-INF/resources/catalog/books.html



http://localhost:8080/myapp/catalog/books.html




                                                      22
Why Asynchronous Servlets?

l
    Not for Async IO
    –Requests mostly small (single packet)
    –Hard to asynchronously produce large responses
    –Async IO support waiting for NIO2

l
    Async Servlets are for:
    –Waiting for resources (eg JDBC connection)
    –Waiting for events (eg Chat)
    –Waiting for responses (eg web services)


                                                      23
Blocking waiting consumes resources

l
    Web Application using remote web services
    –Handling 1000 requests / sec
    –50% requests call remote web service
    –500 threads in container thread pool

l
    If remote web service is slow (1000ms)
    –Thread starvation in 1 second!
    –50% of requests use all 500 threads




                                                24
Asynchronous API
    Enable asynchronous support


l
    Configured in
    –web.xml:
     <async-supported>true</async-supported>
    –With annotation: @WebServlet(asyncSupported=true)
    –Programmatic: registration.setAsyncSupported(true)




                                                          25
Asynchronous Servlets – Sample Code

    AsyncContext context = request.startAsync();
    context.addListener(new AsyncListener() { … });
    context.dispatch(“/request.jsp”);
    //context.start(Runnable action);
    . . .
    context.complete();




http://blogs.oracle.com/arungupta/entry/totd_139_asynchronous_request_processing


                                                                                   26
Security
    Annotations to define security constraints

l
  @ServletSecurity used to define access control constraints
l
  @HttpConstraint for all HTTP methods
l
  @HttpMethodConstraint for specific HTTP methods
l
  More specific wins




                                                               27
Security – Sample Code


@ServletSecurity(
  httpMethodConstraints = {
      @HttpMethodConstraint(value = "GET", rolesAllowed = "R1"),
      @HttpMethodConstraint(value = "POST", rolesAllowed = "R2")
    }
)
public class MyServlet extends HttpServlet {
    // Servlet methods
}




                                                                   28
Security
   Programmatic container authentication and logout


>HttpServletRequest#login(String username, String
 password)
–Replacement for FBL
–Application supervises credential collection
>HttpServletRequest#authenticate(HttpServletRespo
 nse)
–Application initiates container mediated authentication from a resource that is
 not covered by any authentication constraints
–Application decides when authentication must occur


                                                                                   29
Miscellaneous Features
l
    Session tracking cookie configuration
    –Via web.xml
    –Programmatic via javax.servlet.SessionCookieConfig
l
    Support for HttpOnly cookie attribute
    –Example:
     servletContext.getSessionCookieConfig().setHttpOnly(true)
l
    Default error page                        <error-page>
                                       <error-code>...</error-code>
                                  <exception-type>...</exception-type>
                                     <location>/404.html</location>
                                             </error-page>



                                                                         30
Miscellaneous Features / API (contd)


ServletRequest#getServletContext
ServletRequest#getDispatcherType
Servlet[Request|
Response]Wrapper#isWrapperFor
HttpServletResponse#getStatus
HttpServletResponse#getHeader
HttpServletResponse#getHeaders
HttpServletResponse#getHeaderNames

                                        31
Miscellaneous Features / API (contd)
 File upload


ServletRequest#getParts
ServletRequest#getPart
@MultipartConfig
Changes to web.xml




                                        32
Summary
l
  Major revision since Servlet 2.5
l
  Comprehensive set of new features enable modern style of web
  applications and greatly increases developer productivity
l
  Simplifies assembly of large applications from reusable
  components




                                                                 33
Servlets 3.1 (JSR 340)
    http://jcp.org/en/jsr/detail?id=340
                                                        NEW

• Cloud support
• Multi-tenancy
     – Security / Session state / Resources isolation
•   Asynchronous IO based on NIO2
•   Simplified Asynchronous Servlets
•   Utilize Java EE concurrency utilities
•   Enable support for Web Sockets


                                                              34
References


•   oracle.com/javaee
•   glassfish.org
•   oracle.com/goto/glassfish
•   blogs.oracle.com/theaquarium
•   youtube.com/GlassFishVideos
•   Follow @glassfish




                                   35
<Insert Picture Here>




Servlets 3.0
Asynchronous, Extensible, Ease-of-use
Arun Gupta, Java EE & GlassFish Guy
blogs.oracle.com/arungupta, @arungupta

Más contenido relacionado

La actualidad más candente

Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with SpringJoshua Long
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with SpringJoshua Long
 
RESTful Web services using JAX-RS
RESTful Web services using JAX-RSRESTful Web services using JAX-RS
RESTful Web services using JAX-RSArun Gupta
 
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGJava EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGArun Gupta
 
Spring Portlet MVC
Spring Portlet MVCSpring Portlet MVC
Spring Portlet MVCJohn Lewis
 
Weblogic Administration Managed Server migration
Weblogic Administration Managed Server migrationWeblogic Administration Managed Server migration
Weblogic Administration Managed Server migrationRakesh Gujjarlapudi
 
Knowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletKnowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletFahmi Jafar
 
Multi client Development with Spring
Multi client Development with SpringMulti client Development with Spring
Multi client Development with SpringJoshua Long
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, mavenFahad Golra
 
Servlet api &amp; servlet http package
Servlet api &amp; servlet http packageServlet api &amp; servlet http package
Servlet api &amp; servlet http packagerenukarenuka9
 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVCDzmitry Naskou
 
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Skills Matter
 
java servlet and servlet programming
java servlet and servlet programmingjava servlet and servlet programming
java servlet and servlet programmingKumar
 
Java Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsJava Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsBG Java EE Course
 
Web Tech Java Servlet Update1
Web Tech   Java Servlet Update1Web Tech   Java Servlet Update1
Web Tech Java Servlet Update1vikram singh
 

La actualidad más candente (20)

Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
 
RESTing with JAX-RS
RESTing with JAX-RSRESTing with JAX-RS
RESTing with JAX-RS
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
 
RESTful Web services using JAX-RS
RESTful Web services using JAX-RSRESTful Web services using JAX-RS
RESTful Web services using JAX-RS
 
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUGJava EE 6 & GlassFish = Less Code + More Power at CEJUG
Java EE 6 & GlassFish = Less Code + More Power at CEJUG
 
Spring Portlet MVC
Spring Portlet MVCSpring Portlet MVC
Spring Portlet MVC
 
Weblogic Administration Managed Server migration
Weblogic Administration Managed Server migrationWeblogic Administration Managed Server migration
Weblogic Administration Managed Server migration
 
Knowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletKnowledge Sharing : Java Servlet
Knowledge Sharing : Java Servlet
 
JDBC
JDBCJDBC
JDBC
 
Multi client Development with Spring
Multi client Development with SpringMulti client Development with Spring
Multi client Development with Spring
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, maven
 
Weblogic
WeblogicWeblogic
Weblogic
 
Servlet api &amp; servlet http package
Servlet api &amp; servlet http packageServlet api &amp; servlet http package
Servlet api &amp; servlet http package
 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVC
 
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
 
java servlet and servlet programming
java servlet and servlet programmingjava servlet and servlet programming
java servlet and servlet programming
 
Java server pages
Java server pagesJava server pages
Java server pages
 
Java Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsJava Server Faces (JSF) - Basics
Java Server Faces (JSF) - Basics
 
Web Tech Java Servlet Update1
Web Tech   Java Servlet Update1Web Tech   Java Servlet Update1
Web Tech Java Servlet Update1
 

Destacado

S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010
S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010
S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010Arun Gupta
 
XML-Free Programming : Java Server and Client Development without &lt;>
XML-Free Programming : Java Server and Client Development without &lt;>XML-Free Programming : Java Server and Client Development without &lt;>
XML-Free Programming : Java Server and Client Development without &lt;>Arun Gupta
 
GlassFish in the Virtual World
GlassFish in the Virtual WorldGlassFish in the Virtual World
GlassFish in the Virtual WorldArun Gupta
 
Jfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE ApplicationJfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE ApplicationArun Gupta
 
Sarah grier passport1
Sarah grier passport1Sarah grier passport1
Sarah grier passport1Janet Painter
 
Cregg Laws having+what+it+takes
Cregg Laws having+what+it+takesCregg Laws having+what+it+takes
Cregg Laws having+what+it+takesJanet Painter
 
Alex global+education
Alex global+educationAlex global+education
Alex global+educationJanet Painter
 
Servlets 3.0 - Asynchronous, Easy, Extensible @ Silicon Valley Code Camp 2010
Servlets 3.0 - Asynchronous, Easy, Extensible @ Silicon Valley Code Camp 2010Servlets 3.0 - Asynchronous, Easy, Extensible @ Silicon Valley Code Camp 2010
Servlets 3.0 - Asynchronous, Easy, Extensible @ Silicon Valley Code Camp 2010Arun Gupta
 
leadership beyond words-nspra
leadership beyond words-nspraleadership beyond words-nspra
leadership beyond words-nspraBrianWoodland
 
Healthcare Reform Seminar May 2010
Healthcare Reform Seminar May 2010Healthcare Reform Seminar May 2010
Healthcare Reform Seminar May 2010cliff_rudolph
 
2013 03-12 Change – How long does it take?
2013 03-12 Change – How long does it take?2013 03-12 Change – How long does it take?
2013 03-12 Change – How long does it take?Staffan Nöteberg
 
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the CloudJfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the CloudArun Gupta
 

Destacado (17)

S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010
S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010
S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010
 
XML-Free Programming : Java Server and Client Development without &lt;>
XML-Free Programming : Java Server and Client Development without &lt;>XML-Free Programming : Java Server and Client Development without &lt;>
XML-Free Programming : Java Server and Client Development without &lt;>
 
GlassFish in the Virtual World
GlassFish in the Virtual WorldGlassFish in the Virtual World
GlassFish in the Virtual World
 
Jfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE ApplicationJfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE Application
 
Sarah grier passport1
Sarah grier passport1Sarah grier passport1
Sarah grier passport1
 
Cregg Laws having+what+it+takes
Cregg Laws having+what+it+takesCregg Laws having+what+it+takes
Cregg Laws having+what+it+takes
 
Alex global+education
Alex global+educationAlex global+education
Alex global+education
 
Servlets 3.0 - Asynchronous, Easy, Extensible @ Silicon Valley Code Camp 2010
Servlets 3.0 - Asynchronous, Easy, Extensible @ Silicon Valley Code Camp 2010Servlets 3.0 - Asynchronous, Easy, Extensible @ Silicon Valley Code Camp 2010
Servlets 3.0 - Asynchronous, Easy, Extensible @ Silicon Valley Code Camp 2010
 
leadership beyond words-nspra
leadership beyond words-nspraleadership beyond words-nspra
leadership beyond words-nspra
 
Healthcare Reform Seminar May 2010
Healthcare Reform Seminar May 2010Healthcare Reform Seminar May 2010
Healthcare Reform Seminar May 2010
 
Power Csba
Power CsbaPower Csba
Power Csba
 
Basketball Camp Spanien 2011
Basketball Camp  Spanien 2011Basketball Camp  Spanien 2011
Basketball Camp Spanien 2011
 
Dia 8
Dia 8Dia 8
Dia 8
 
Stage baskete Epagne flyer
Stage baskete Epagne flyerStage baskete Epagne flyer
Stage baskete Epagne flyer
 
2013 03-12 Change – How long does it take?
2013 03-12 Change – How long does it take?2013 03-12 Change – How long does it take?
2013 03-12 Change – How long does it take?
 
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the CloudJfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
Jfokus 2012 : The Java EE 7 Platform: Developing for the Cloud
 
Kindercamps in Spanien 2009
Kindercamps in Spanien 2009Kindercamps in Spanien 2009
Kindercamps in Spanien 2009
 

Similar a JavaOne India 2011 - Servlets 3.0

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
 
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 servlet technology
Java servlet technologyJava servlet technology
Java servlet technologyMinal Maniar
 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Arun Gupta
 
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...Arun Gupta
 
ADP - Chapter 2 Exploring the java Servlet Technology
ADP - Chapter 2 Exploring the java Servlet TechnologyADP - Chapter 2 Exploring the java Servlet Technology
ADP - Chapter 2 Exploring the java Servlet TechnologyRiza Nurman
 
JAX-RS 2.0 and OData
JAX-RS 2.0 and ODataJAX-RS 2.0 and OData
JAX-RS 2.0 and ODataAnil Allewar
 
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnitionJava EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnitionArun Gupta
 
Java EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerJava EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerArun Gupta
 
UNIT-3 Servlet
UNIT-3 ServletUNIT-3 Servlet
UNIT-3 Servletssbd6985
 
Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Tuna Tore
 
springmvc-150923124312-lva1-app6892
springmvc-150923124312-lva1-app6892springmvc-150923124312-lva1-app6892
springmvc-150923124312-lva1-app6892Tuna Tore
 
Java Servlets
Java ServletsJava Servlets
Java ServletsNitin Pai
 
SCWCD : Thread safe servlets : CHAP : 8
SCWCD : Thread safe servlets : CHAP : 8SCWCD : Thread safe servlets : CHAP : 8
SCWCD : Thread safe servlets : CHAP : 8Ben Abdallah Helmi
 
Introduction tomcat7 servlet3
Introduction tomcat7 servlet3Introduction tomcat7 servlet3
Introduction tomcat7 servlet3JavaEE Trainers
 

Similar a JavaOne India 2011 - Servlets 3.0 (20)

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
 
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 servlet technology
Java servlet technologyJava servlet technology
Java servlet technology
 
Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6Boston 2011 OTN Developer Days - Java EE 6
Boston 2011 OTN Developer Days - Java EE 6
 
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
 
Servlets
ServletsServlets
Servlets
 
ADP - Chapter 2 Exploring the java Servlet Technology
ADP - Chapter 2 Exploring the java Servlet TechnologyADP - Chapter 2 Exploring the java Servlet Technology
ADP - Chapter 2 Exploring the java Servlet Technology
 
JAX-RS 2.0 and OData
JAX-RS 2.0 and ODataJAX-RS 2.0 and OData
JAX-RS 2.0 and OData
 
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnitionJava EE 6 & GlassFish = Less Code + More Power @ DevIgnition
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnition
 
Java EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerJava EE 6 = Less Code + More Power
Java EE 6 = Less Code + More Power
 
UNIT-3 Servlet
UNIT-3 ServletUNIT-3 Servlet
UNIT-3 Servlet
 
JAVA Servlets
JAVA ServletsJAVA Servlets
JAVA Servlets
 
Wt unit 3
Wt unit 3 Wt unit 3
Wt unit 3
 
Servlet30 20081218
Servlet30 20081218Servlet30 20081218
Servlet30 20081218
 
Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5
 
springmvc-150923124312-lva1-app6892
springmvc-150923124312-lva1-app6892springmvc-150923124312-lva1-app6892
springmvc-150923124312-lva1-app6892
 
Unit 07: Design Patterns and Frameworks (3/3)
Unit 07: Design Patterns and Frameworks (3/3)Unit 07: Design Patterns and Frameworks (3/3)
Unit 07: Design Patterns and Frameworks (3/3)
 
Java Servlets
Java ServletsJava Servlets
Java Servlets
 
SCWCD : Thread safe servlets : CHAP : 8
SCWCD : Thread safe servlets : CHAP : 8SCWCD : Thread safe servlets : CHAP : 8
SCWCD : Thread safe servlets : CHAP : 8
 
Introduction tomcat7 servlet3
Introduction tomcat7 servlet3Introduction tomcat7 servlet3
Introduction tomcat7 servlet3
 

Más de Arun Gupta

5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdfArun Gupta
 
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Arun Gupta
 
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesMachine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesArun Gupta
 
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerSecure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerArun Gupta
 
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Arun Gupta
 
Why Amazon Cares about Open Source
Why Amazon Cares about Open SourceWhy Amazon Cares about Open Source
Why Amazon Cares about Open SourceArun Gupta
 
Machine learning using Kubernetes
Machine learning using KubernetesMachine learning using Kubernetes
Machine learning using KubernetesArun Gupta
 
Building Cloud Native Applications
Building Cloud Native ApplicationsBuilding Cloud Native Applications
Building Cloud Native ApplicationsArun Gupta
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with KubernetesArun Gupta
 
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMHow to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMArun Gupta
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Arun Gupta
 
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteThe Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteArun Gupta
 
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Arun Gupta
 
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitMastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitArun Gupta
 
Top 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's LandscapeTop 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's LandscapeArun Gupta
 
Container Landscape in 2017
Container Landscape in 2017Container Landscape in 2017
Container Landscape in 2017Arun Gupta
 
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShiftJava EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShiftArun Gupta
 
Docker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developersDocker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developersArun Gupta
 
Thanks Managers!
Thanks Managers!Thanks Managers!
Thanks Managers!Arun Gupta
 
Migrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to ContainersMigrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to ContainersArun Gupta
 

Más de Arun Gupta (20)

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

Último

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
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.pptxRustici Software
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
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...Jeffrey Haguewood
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
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...DianaGray10
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
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, Adobeapidays
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
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 businesspanagenda
 

Último (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
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
 

JavaOne India 2011 - Servlets 3.0

  • 1. <Insert Picture Here> Servlets 3.0 Asynchronous, Extensible, Ease-of-use Arun Gupta, Java EE & GlassFish Guy blogs.oracle.com/arungupta, @arungupta
  • 2. The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 2
  • 3. Agenda • Overview • Ease of Development • Dynamic Registration of Servlets etc • Pluggability • Asynchronous Support • Security Enhancements • Miscellaneous 3
  • 4. Overview l Java Servlet 3.0 done as part of JSR 315 l ~20 members in the expert group –Major Java EE vendors, open source web container developers, framework authors l Main areas of focus –Ease of Development –Pluggability –Asynchronous support –Security 4
  • 5. Ease of Development l Enhanced APIs to use new Java SE language features introduced since J2SE 5.0 l Generics for type safety in API where possible l Annotations for declarative style of programming l Optional web.xml l Convention over configuration 5
  • 6. Ease of Development Use of annotations l Annotations to declare Servlets, Filters, Listeners and servlet security –@WebServlet – Define a Servlet –@WebFilter – Define a Filter –@WebListener – Define a Listener –@WebInitParam – Define init param –@MultipartConfig – Define file upload properties –@ServletSecurity – Define security constraints l Can override using “web.xml” 6
  • 7. Servlet 2.5 example At least 2 files <!--Deployment descriptor web.xml --> /* Code in Java Class */ <web-app> <servlet> package com.sun; <servlet-name>MyServlet public class MyServlet extends HttpServlet </servlet-name> { <servlet-class> public void com.sun.MyServlet doGet(HttpServletRequest </servlet-class> req,HttpServletResponse res) </servlet> { <servlet-mapping> ... <servlet-name>MyServlet </servlet-name> } <url-pattern>/myApp/* ... </url-pattern> </servlet-mapping> } ... </web-app> 7
  • 8. @WebServlet – Sample Code @WebServlet(urlPatterns={“/myApp”}) public class SimpleSample extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) { } } 8
  • 9. @WebServlet Async – Sample Code @WebServlet(urlPatterns=“/myApp”, name=”MyServlet”, asyncSupported=true) public class SimpleSample extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) { } } 9
  • 10. Dynamic Registration Create and/or register • ServletContext#add[Servlet | Filter] • Overloaded versions take [Servlet | Filter] name and – Fully qualified [Servlet | Filter] class name or – Class <? extends [Servlet | Filter]> or – [Servlet | Filter] instance • User returned Registration handle to configure all aspects of [Servlet | Filter] l ServletContext#create[Servlet | Filter] –Takes Class<? Extends [Servlet | Filter]> argument –Supports resource injection by container –Returned [Servlet | Filter] instance may be fully customized before it is registered 10
  • 11. Dynamic Registration Lookup l ServletContext#find[Servlet |Filter]Registration –Takes [Servlet | Filter] name as argument –Returned Registration handle provides subset of configuration methods –May only be used to add initialization parameters and mappings –Conflict returned as java.util.Set 11
  • 12. Dynamic Registration Register example ServletRegistration.Dynamic dynamic = servletContext.addServlet( "DynamicServlet", "com.mycom.MyServlet"); dynamic.addMapping("/dynamicServlet"); dynamic.setAsyncSupported(true); 12
  • 13. Dynamic Registration Lookup example ServletRegistration declared = servletContext.getServletRegistration("DeclaredServlet"); declared.addMapping("/declaredServlet"); declared.setInitParameter("param", "value"); 13
  • 14. Pluggability • Plugin libraries using web fragments – Modular web.xml – Absolute ordering: <absolute-ordering> – Relative ordering: <ordering>, <before>, <after> • Bundled in framework *.jar/META-INF • Zero-configuration, drag-and-drop for web frameworks – Servlets, servlet filters, context listeners for a framework get discovered and registered by the container • Only JAR files in WEB-INF/lib are used 14
  • 15. Pluggability – Sample Code <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://blogs.oracle.com/arungupta/entry/totd_91_applying_java_ee 15
  • 16. Pluggability – Sample Code <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://blogs.oracle.com/arungupta/entry/totd_101_applying_servlet_3 16
  • 17. Extensibility ServletContainerInitializer • Shared copies of frameworks • Container installed JARs – App or Library • Discovered using the service provider API – META-INF/services/javax.servlet.ServletContainerInitializer • Expresses interest in classes via @HandlesTypes 17
  • 18. Extensibility ServletContainerInitializer • Who uses it ? – Mojarra (JSF2) is bootstrapped into GlassFish • No “faces-config.xml” or “web.xml” – Jersey (JAX-RS) registers root Application • No (or portable) “web.xml” 18
  • 19. Dynamic Registration Java Server Faces @SuppressWarnings({"UnusedDeclaration"}) @HandlesTypes({ ManagedBean.class, FacesComponent.class, FacesValidator.class, FacesConverter.class, FacesBehaviorRenderer.class, ResourceDependency.class, ResourceDependencies.class, ListenerFor.class, ListenersFor.class, UIComponent.class, Validator.class, Converter.class, Renderer.class }) public class FacesInitializer implements ServletContainerInitializer { // NOTE: Loggins should not be used with this class. private static final String FACES_SERVLET_CLASS = FacesServlet.class.getName(); 19
  • 20. Dynamic Registration Java Server Faces public void onStartup(Set<Class<?>> classes, ServletContext servletContext) throws ServletException { if (shouldCheckMappings(classes, servletContext)) { Map<String,? extends ServletRegistration> existing = servletContext.getServletRegistrations(); for (ServletRegistration registration : existing.values()) { if (FACES_SERVLET_CLASS.equals(registration.getClassName())) { // FacesServlet has already been defined, so we're // not going to add additional mappings; return; } } ServletRegistration reg = servletContext.addServlet("FacesServlet", "javax.faces.webapp.FacesServlet"); reg.addMapping("/faces/*", "*.jsf", "*.faces"); servletContext.setAttribute(RIConstants.FACES_INITIALIZER_MAPPINGS_ADDED, Boolean.TRUE); 20
  • 21. Resource Sharing • Static and JSP not confined to document root of the web application • May be placed in WEB-INF/lib/[*.jar]/META- INF/resources • Resources in root take precedence over those in bundled JAR • Container must honor this new location when – Processing HTTP requests – Calls to ServletContext#getResource[AsStream] 21
  • 22. Resource Sharing – Sample Code myapp.war WEB-INF/lib/catalog.jar /META-INF/resources/catalog/books.html http://localhost:8080/myapp/catalog/books.html 22
  • 23. Why Asynchronous Servlets? l Not for Async IO –Requests mostly small (single packet) –Hard to asynchronously produce large responses –Async IO support waiting for NIO2 l Async Servlets are for: –Waiting for resources (eg JDBC connection) –Waiting for events (eg Chat) –Waiting for responses (eg web services) 23
  • 24. Blocking waiting consumes resources l Web Application using remote web services –Handling 1000 requests / sec –50% requests call remote web service –500 threads in container thread pool l If remote web service is slow (1000ms) –Thread starvation in 1 second! –50% of requests use all 500 threads 24
  • 25. Asynchronous API Enable asynchronous support l Configured in –web.xml: <async-supported>true</async-supported> –With annotation: @WebServlet(asyncSupported=true) –Programmatic: registration.setAsyncSupported(true) 25
  • 26. Asynchronous Servlets – Sample Code AsyncContext context = request.startAsync(); context.addListener(new AsyncListener() { … }); context.dispatch(“/request.jsp”); //context.start(Runnable action); . . . context.complete(); http://blogs.oracle.com/arungupta/entry/totd_139_asynchronous_request_processing 26
  • 27. Security Annotations to define security constraints l @ServletSecurity used to define access control constraints l @HttpConstraint for all HTTP methods l @HttpMethodConstraint for specific HTTP methods l More specific wins 27
  • 28. Security – Sample Code @ServletSecurity( httpMethodConstraints = { @HttpMethodConstraint(value = "GET", rolesAllowed = "R1"), @HttpMethodConstraint(value = "POST", rolesAllowed = "R2") } ) public class MyServlet extends HttpServlet { // Servlet methods } 28
  • 29. Security Programmatic container authentication and logout >HttpServletRequest#login(String username, String password) –Replacement for FBL –Application supervises credential collection >HttpServletRequest#authenticate(HttpServletRespo nse) –Application initiates container mediated authentication from a resource that is not covered by any authentication constraints –Application decides when authentication must occur 29
  • 30. Miscellaneous Features l Session tracking cookie configuration –Via web.xml –Programmatic via javax.servlet.SessionCookieConfig l Support for HttpOnly cookie attribute –Example: servletContext.getSessionCookieConfig().setHttpOnly(true) l Default error page <error-page> <error-code>...</error-code> <exception-type>...</exception-type> <location>/404.html</location> </error-page> 30
  • 31. Miscellaneous Features / API (contd) ServletRequest#getServletContext ServletRequest#getDispatcherType Servlet[Request| Response]Wrapper#isWrapperFor HttpServletResponse#getStatus HttpServletResponse#getHeader HttpServletResponse#getHeaders HttpServletResponse#getHeaderNames 31
  • 32. Miscellaneous Features / API (contd) File upload ServletRequest#getParts ServletRequest#getPart @MultipartConfig Changes to web.xml 32
  • 33. Summary l Major revision since Servlet 2.5 l Comprehensive set of new features enable modern style of web applications and greatly increases developer productivity l Simplifies assembly of large applications from reusable components 33
  • 34. Servlets 3.1 (JSR 340) http://jcp.org/en/jsr/detail?id=340 NEW • Cloud support • Multi-tenancy – Security / Session state / Resources isolation • Asynchronous IO based on NIO2 • Simplified Asynchronous Servlets • Utilize Java EE concurrency utilities • Enable support for Web Sockets 34
  • 35. References • oracle.com/javaee • glassfish.org • oracle.com/goto/glassfish • blogs.oracle.com/theaquarium • youtube.com/GlassFishVideos • Follow @glassfish 35
  • 36. <Insert Picture Here> Servlets 3.0 Asynchronous, Extensible, Ease-of-use Arun Gupta, Java EE & GlassFish Guy blogs.oracle.com/arungupta, @arungupta