SlideShare a Scribd company logo
1   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Servlet 3.1
John Clingan, Principal Product Manager
 2   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
The following 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.




3   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Agenda

    •  Servlet 3.0 recap
    •  Servlet 3.1 Overview
    •  NIO API
    •  Protocol Upgrade
    •  Security
    •  Resources



4   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Servlet 3.0 recap
    •  Part of Java EE 6
    •  Focused on
          –  Ease-of-Development
          –  Pluggability
          –  Asynchronous support
          –  Dynamic registration of servlets, filters and listeners
          –  Security enhancements
    •  Adoption
          –  GlassFish 3.x, Tomcat 7, JBOSS, Caucho, IBM, Weblogic


5   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Servlet 3.0 recap
    Ease of Development
    •  Annotations to declare
          –  Servlets
          –  Filters
          –  Listeners
          –  Security
    •  Defaults for attributes of annotations




6   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Example
    @WebServlet( urlPatterns = {“/foo”} )
    public class SimpleSample extends HttpServlet {

               public void doGet(HttpServletRequest req,
                                 HttpServletResponse res) {

               }
    }


7       Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Servlet 3.0 recap
    Pluggability
    •  Drag-and-drop model
    •  Web frameworks as fully configured libraries
    •  Contain “fragments” of web.xml
    •  META-INF/web-fragment.xml
    •  Extensions can register servlets, filters, listeners
       dynamically
    •  Extensions can also discover and process annotated
       classes
8   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Servlet 3.0 recap
    Using pluggability
    •  Bundle static resources and jsps in a jar that can be re-
       used
    •  Look for ready-to-use frameworks, libraries
    •  Re-factor your libraries into re-usable, auto-configured
       frameworks




9   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Agenda

     •  Servlet 3.0 recap
     •  Servlet 3.1 Overview
     •  NIO API
     •  Protocol Upgrade
     •  Security
     •  Resources



10   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
The content described in the following slides are subject to change
based on expert group discussions




11   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
JAVA EE 7 THEME: CLOUD / PAAS




Java EE 7 platform to be ready for the cloud




12   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Java EE 7 PaaS support

     •  Provide customers and users ability to leverage cloud
        environments
     •  Enable multi-tenancy
           –  One application instance per tenant
           –  Mapping to tenant done by container
           –  Isolation between applications
     •  Define metadata for services


13   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Servlet 3.1
     Feature set
     •  Align with Java EE 7 for cloud support
           –  For web container there will a virtual server mapping per tenant
           –  Ability to load custom web resources per tenant
           –  Use the services exposed in Java EE 7
     •  Scale
           –  Expose NIO2 API
     •  Support newer technologies that leverage http protocol for the
        initial handshake
           –  Support general upgrade mechanism for protocols like WebSocket
     •  Security enhancements

14   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Agenda

     •  Servlet 3.0 recap
     •  Servlet 3.1 Overview
     •  NIO API
     •  Protocol Upgrade
     •  Security
     •  Resources



15   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     Overview: NonBlocking IO
     •  Add two listeners: ReadListener, WriteListener
     •  Add two interfaces:
           –  AsyncIOInputSource with abstract classes ServletInputStream,
              ServletReader
           –  AsyncIOOutputSink with abstract classes ServletOutputStream,
              ServletWriter
     •  Add APIs to ServletRequest, ServletResponse



16   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     javax.servlet.ReadListener
     public interface ReadListener extends EventListener {

                  public void onDataAvailable(ServletRequest request);

                  public void onAllDataRead(ServletRequest request);

                  public void onError(Throwable t);
         }




17   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     javax.servlet.WriteListener
     public interface WriteListener extends EventListener {

                  public void onWritePossible(ServletResponse response);

                  public void onError(Throwable t);
         }




18   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     javax.servlet.AsyncIOInputSource
     public interface AsyncIOInputSource {

                  public int dataAvailable();

                  public boolean isFinished();

                  public isReady();
         }




19   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     ServletInputStream, ServletReader


                     InputStream                                                                   Reader




           ServletInputStream                                               AsyncIOInputSource   ServletReader




20   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     javax.servlet.AsyncIOOutputSink
     public interface AsyncIOOutputSink {

                  public boolean canWrite(int size);

                  public void complete();
         }




21   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     NIOOutputStream, NIOWriter


                  OutputStream                                                                     Writer




     ServletOutputStream                                                    AsyncIOOutputSink   ServletWriter




22   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     ServletRequest, ServletResponse
     •  ServletRequest
           –  Public ServletInputStream getServletInputStream()
           –  Public ServletReader getServletReader()
           –  public void addListener(ReadListener listener)
     •  ServletResponse
           –  Public ServletOutputStream getServletOutputStream()
           –  Public ServletWriter getServletWriter()
           –  public addListener(WriteListener listener)


23   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     Sample Usage
     public class NIOSampleServlet extends HttpServlet
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
       {
             request.addListener(new ReadListener() {
                public void onDataAvailable(ServletRequest request) {
                  ServletInputStream nis = request.getServletInputStream();
                  try {
                       nis.read(new byte[nis.dataAvailable()]);
                       …
               }




24   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     Sample Usage (cont’d)

                              public void onAllDataRead(ServletRequest request) {
                                try {
                                   request.getServletInputStream().close();
                                   ….
                              }

                              public void onError(Throwable t) { … }
                       });

                final byte[] b = new byte[100];
                ….



25   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API
     Sample Usage (cont’d 2)
     •               response.addListener(new WriteListener() {
                         public void onWritePossible(ServletResponse response) {
                           AsyncIOOutputStream nos = response.getAsyncIOOutputStream();
                           try {
                                                 nos.write(b);
                                                 nos.complete();
                                                 …
                               }

                               public void onError(Throwable t) { … }
                        });
                 }
          }

26    Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Expose NIO API

     •  Discussion with expert group on alternate approach
     •  Use NIO 2 approach




27   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Program Agenda

     •  Servlet 3.0 recap
     •  Servlet 3.1 Overview
     •  NIO API
     •  Protocol Upgrade
     •  Security
     •  Resources



28   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Upgrade

 •  HTTP 1.1
 •  Connection
 •  Transition to some other, incompatible protocol
 •  For example,
    Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9




29   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Upgrade
     Example: WebSocket
 •  Protocol: IETF
 •  API: W3C (JavaScript)
 •  Bi-directional, full-duplex / TCP




30   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Upgrade
WebSocket Example
•  GET /chat HTTP/1.1            •  HTTP/1.1 101 Switching Protocols
   Host: server.example.com         Upgrade: websocket
   Upgrade: websocket               Connection: Upgrade
   Connection: Upgrade              Sec-WebSocket-Accept:
   Sec-WebSocket-Key:               s3pPLMBiTxaQ9kYGzzhZRbK
   dGhlIHNhbXBsZSBub25jZQ==         +xOo=
   Origin: http://example.com       Sec-WebSocket-Protocol: chat
   Sec-WebSocket-Protocol: chat,
   superchat
   Sec-WebSocket-Version: 13

 31   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Upgrade


     HTTP Request

                                                                            Servlet


                                                                                ….
                                                                                upgrade(…);   ProtocolHandler




32   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Agenda

     •  Servlet 3.0 recap
     •  Servlet 3.1 Overview
     •  NIO API
     •  Protocol Upgrade
     •  Security
     •  Resources



33   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Security Enhancement

     •  Made good progress in Servlet 3.0
     •  Continue from where we left off
     •  Include support for preventing against CSRF
     •  Provide an easy way to support denying all unlisted http
        methods
     •  Encoding / escaping support to prevent XSS



34   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Align with other Java EE JSRs

     •  Integrate with Concurrency Utilities for Java EE
           –  Utilize it Async programming model
     •  Align with CDI
     •  Align with Bean Validation
     •  Align with Jcache (JSR 107)




35   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Transparency
     •  High level of transparency for all Java EE JSRs
     •  Use java.net project to run our JSRs in the open
        –  One java.net project per specification
     •  Publicly viewable Expert Group mailing list archive
     •  Users observer list gets copies of all emails to the EG
     •  Download area
     •  JIRA for issue tracking
     •  Wiki and source repository at EG’s discretion
     •  JCP.org private mailing list for administrative / confidential info


36   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Agenda

     •  Servlet 3.0 recap
     •  Servlet 3.1 Overview
     •  NIO API
     •  Protocol Upgrade
     •  Security
     •  Resources



37   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Webtier related projects

     •  https://servlet-spec.java.net
     •  http://jcp.org/en/jsr/summary?id=340
     •  webtier@glassfish.java.net
           –  For users of GlassFish webtier




38   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Tokyo 2012
                                                                            April 4–6, 2012




39   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Q&A


40   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
41   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
42   Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

More Related Content

PPT
Tomcat New Evolution
DOC
Jetty Vs Tomcat
PDF
What's next for Java API for WebSocket (JSR 356)
PDF
JavaOne 2014 BOF4241 What's Next for JSF?
PDF
Batch Applications for Java Platform 1.0: Java EE 7 and GlassFish
PPT
Hackingtomcat
PPT
Apache Tomcat 7 by Filip Hanik
PPTX
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Tomcat New Evolution
Jetty Vs Tomcat
What's next for Java API for WebSocket (JSR 356)
JavaOne 2014 BOF4241 What's Next for JSF?
Batch Applications for Java Platform 1.0: Java EE 7 and GlassFish
Hackingtomcat
Apache Tomcat 7 by Filip Hanik
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you

What's hot (20)

PDF
Java EE 7 for WebLogic 12c Developers
PPT
Reactive Java EE - Let Me Count the Ways!
PDF
Changes in WebLogic 12.1.3 Every Administrator Must Know
PPTX
Introduction to-osgi
PDF
Grizzly 20080925 V2
PPT
What's New in WebLogic 12.1.3 and Beyond
PDF
Native REST Web Services with Oracle 11g
PDF
Introduction to ActiveMQ Apollo
PDF
Tomcatx performance-tuning
PPTX
Java EE 8
PPT
Web Server/App Server Connectivity
PDF
Whats New in the Http Service Specification - Felix Meschberger
PPTX
Don't Wait! Develop Responsive Applications with Java EE7 Instead
PDF
Maximize the power of OSGi
PDF
RESTful web service with JBoss Fuse
PPTX
Java Servlets
PDF
Java troubleshooting thread dump
PDF
Servlets 3.0 - Asynchronous, Easy, Extensible @ Silicon Valley Code Camp 2010
PDF
Tomcat Optimisation & Performance Tuning
PDF
Monitoring OSGi Applications with the Web Console - Carsten Ziegeler
Java EE 7 for WebLogic 12c Developers
Reactive Java EE - Let Me Count the Ways!
Changes in WebLogic 12.1.3 Every Administrator Must Know
Introduction to-osgi
Grizzly 20080925 V2
What's New in WebLogic 12.1.3 and Beyond
Native REST Web Services with Oracle 11g
Introduction to ActiveMQ Apollo
Tomcatx performance-tuning
Java EE 8
Web Server/App Server Connectivity
Whats New in the Http Service Specification - Felix Meschberger
Don't Wait! Develop Responsive Applications with Java EE7 Instead
Maximize the power of OSGi
RESTful web service with JBoss Fuse
Java Servlets
Java troubleshooting thread dump
Servlets 3.0 - Asynchronous, Easy, Extensible @ Silicon Valley Code Camp 2010
Tomcat Optimisation & Performance Tuning
Monitoring OSGi Applications with the Web Console - Carsten Ziegeler
Ad

Similar to Servlet 3.1 (20)

PPTX
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
PDF
JavaOne San Francisco 2013 - Servlet 3.1 (JSR 340)
PPTX
Java ee7 1hour
PDF
WebSockets - Realtime em Mundo Conectado
PDF
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
PPTX
Java EE7
PPTX
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
PDF
112815 java ee8_davidd
PDF
JAX-RS.next
PPTX
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
PDF
GeekAustin DevOps
PDF
Lambdas and Streams in Java SE 8: Making Bulk Operations simple - Simon Ritter
PDF
Lambdas And Streams in JDK8
PPTX
New and smart way to develop microservice for istio with micro profile
PPTX
Interactive Java Support to your tool -- The JShell API and Architecture
PPTX
JDK8 Streams
PDF
JAX-RS 2.0: RESTful Web Services
PDF
Introduction to java servlet 3.0 api javaone 2008
PDF
20100730 phpstudy
PDF
Lambdas & Streams
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
JavaOne San Francisco 2013 - Servlet 3.1 (JSR 340)
Java ee7 1hour
WebSockets - Realtime em Mundo Conectado
Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delab...
Java EE7
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
112815 java ee8_davidd
JAX-RS.next
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
GeekAustin DevOps
Lambdas and Streams in Java SE 8: Making Bulk Operations simple - Simon Ritter
Lambdas And Streams in JDK8
New and smart way to develop microservice for istio with micro profile
Interactive Java Support to your tool -- The JShell API and Architecture
JDK8 Streams
JAX-RS 2.0: RESTful Web Services
Introduction to java servlet 3.0 api javaone 2008
20100730 phpstudy
Lambdas & Streams
Ad

More from Arun Gupta (20)

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

Recently uploaded (20)

PDF
Encapsulation theory and applications.pdf
PPTX
Machine Learning_overview_presentation.pptx
PPTX
Tartificialntelligence_presentation.pptx
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPTX
OMC Textile Division Presentation 2021.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Mushroom cultivation and it's methods.pdf
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PPTX
TLE Review Electricity (Electricity).pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
1. Introduction to Computer Programming.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
Encapsulation theory and applications.pdf
Machine Learning_overview_presentation.pptx
Tartificialntelligence_presentation.pptx
Univ-Connecticut-ChatGPT-Presentaion.pdf
OMC Textile Division Presentation 2021.pptx
Programs and apps: productivity, graphics, security and other tools
Mobile App Security Testing_ A Comprehensive Guide.pdf
Assigned Numbers - 2025 - Bluetooth® Document
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Spectral efficient network and resource selection model in 5G networks
Encapsulation_ Review paper, used for researhc scholars
Mushroom cultivation and it's methods.pdf
Group 1 Presentation -Planning and Decision Making .pptx
TLE Review Electricity (Electricity).pptx
Machine learning based COVID-19 study performance prediction
A comparative analysis of optical character recognition models for extracting...
Network Security Unit 5.pdf for BCA BBA.
1. Introduction to Computer Programming.pptx
Digital-Transformation-Roadmap-for-Companies.pptx

Servlet 3.1

  • 1. 1 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 2. Servlet 3.1 John Clingan, Principal Product Manager 2 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 3. The following 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. 3 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 4. Agenda •  Servlet 3.0 recap •  Servlet 3.1 Overview •  NIO API •  Protocol Upgrade •  Security •  Resources 4 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 5. Servlet 3.0 recap •  Part of Java EE 6 •  Focused on –  Ease-of-Development –  Pluggability –  Asynchronous support –  Dynamic registration of servlets, filters and listeners –  Security enhancements •  Adoption –  GlassFish 3.x, Tomcat 7, JBOSS, Caucho, IBM, Weblogic 5 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 6. Servlet 3.0 recap Ease of Development •  Annotations to declare –  Servlets –  Filters –  Listeners –  Security •  Defaults for attributes of annotations 6 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 7. Example @WebServlet( urlPatterns = {“/foo”} ) public class SimpleSample extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) { } } 7 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 8. Servlet 3.0 recap Pluggability •  Drag-and-drop model •  Web frameworks as fully configured libraries •  Contain “fragments” of web.xml •  META-INF/web-fragment.xml •  Extensions can register servlets, filters, listeners dynamically •  Extensions can also discover and process annotated classes 8 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 9. Servlet 3.0 recap Using pluggability •  Bundle static resources and jsps in a jar that can be re- used •  Look for ready-to-use frameworks, libraries •  Re-factor your libraries into re-usable, auto-configured frameworks 9 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 10. Agenda •  Servlet 3.0 recap •  Servlet 3.1 Overview •  NIO API •  Protocol Upgrade •  Security •  Resources 10 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 11. The content described in the following slides are subject to change based on expert group discussions 11 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 12. JAVA EE 7 THEME: CLOUD / PAAS Java EE 7 platform to be ready for the cloud 12 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 13. Java EE 7 PaaS support •  Provide customers and users ability to leverage cloud environments •  Enable multi-tenancy –  One application instance per tenant –  Mapping to tenant done by container –  Isolation between applications •  Define metadata for services 13 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 14. Servlet 3.1 Feature set •  Align with Java EE 7 for cloud support –  For web container there will a virtual server mapping per tenant –  Ability to load custom web resources per tenant –  Use the services exposed in Java EE 7 •  Scale –  Expose NIO2 API •  Support newer technologies that leverage http protocol for the initial handshake –  Support general upgrade mechanism for protocols like WebSocket •  Security enhancements 14 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 15. Agenda •  Servlet 3.0 recap •  Servlet 3.1 Overview •  NIO API •  Protocol Upgrade •  Security •  Resources 15 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 16. Expose NIO API Overview: NonBlocking IO •  Add two listeners: ReadListener, WriteListener •  Add two interfaces: –  AsyncIOInputSource with abstract classes ServletInputStream, ServletReader –  AsyncIOOutputSink with abstract classes ServletOutputStream, ServletWriter •  Add APIs to ServletRequest, ServletResponse 16 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 17. Expose NIO API javax.servlet.ReadListener public interface ReadListener extends EventListener { public void onDataAvailable(ServletRequest request); public void onAllDataRead(ServletRequest request); public void onError(Throwable t); } 17 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 18. Expose NIO API javax.servlet.WriteListener public interface WriteListener extends EventListener { public void onWritePossible(ServletResponse response); public void onError(Throwable t); } 18 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 19. Expose NIO API javax.servlet.AsyncIOInputSource public interface AsyncIOInputSource { public int dataAvailable(); public boolean isFinished(); public isReady(); } 19 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 20. Expose NIO API ServletInputStream, ServletReader InputStream Reader ServletInputStream AsyncIOInputSource ServletReader 20 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 21. Expose NIO API javax.servlet.AsyncIOOutputSink public interface AsyncIOOutputSink { public boolean canWrite(int size); public void complete(); } 21 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 22. Expose NIO API NIOOutputStream, NIOWriter OutputStream Writer ServletOutputStream AsyncIOOutputSink ServletWriter 22 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 23. Expose NIO API ServletRequest, ServletResponse •  ServletRequest –  Public ServletInputStream getServletInputStream() –  Public ServletReader getServletReader() –  public void addListener(ReadListener listener) •  ServletResponse –  Public ServletOutputStream getServletOutputStream() –  Public ServletWriter getServletWriter() –  public addListener(WriteListener listener) 23 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 24. Expose NIO API Sample Usage public class NIOSampleServlet extends HttpServlet protected void doGet(HttpServletRequest request, HttpServletResponse response) { request.addListener(new ReadListener() { public void onDataAvailable(ServletRequest request) { ServletInputStream nis = request.getServletInputStream(); try { nis.read(new byte[nis.dataAvailable()]); … } 24 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 25. Expose NIO API Sample Usage (cont’d) public void onAllDataRead(ServletRequest request) { try { request.getServletInputStream().close(); …. } public void onError(Throwable t) { … } }); final byte[] b = new byte[100]; …. 25 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 26. Expose NIO API Sample Usage (cont’d 2) •  response.addListener(new WriteListener() { public void onWritePossible(ServletResponse response) { AsyncIOOutputStream nos = response.getAsyncIOOutputStream(); try { nos.write(b); nos.complete(); … } public void onError(Throwable t) { … } }); } } 26 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 27. Expose NIO API •  Discussion with expert group on alternate approach •  Use NIO 2 approach 27 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 28. Program Agenda •  Servlet 3.0 recap •  Servlet 3.1 Overview •  NIO API •  Protocol Upgrade •  Security •  Resources 28 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 29. Upgrade •  HTTP 1.1 •  Connection •  Transition to some other, incompatible protocol •  For example, Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9 29 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 30. Upgrade Example: WebSocket •  Protocol: IETF •  API: W3C (JavaScript) •  Bi-directional, full-duplex / TCP 30 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 31. Upgrade WebSocket Example •  GET /chat HTTP/1.1 •  HTTP/1.1 101 Switching Protocols Host: server.example.com Upgrade: websocket Upgrade: websocket Connection: Upgrade Connection: Upgrade Sec-WebSocket-Accept: Sec-WebSocket-Key: s3pPLMBiTxaQ9kYGzzhZRbK dGhlIHNhbXBsZSBub25jZQ== +xOo= Origin: http://example.com Sec-WebSocket-Protocol: chat Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13 31 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 32. Upgrade HTTP Request Servlet …. upgrade(…); ProtocolHandler 32 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 33. Agenda •  Servlet 3.0 recap •  Servlet 3.1 Overview •  NIO API •  Protocol Upgrade •  Security •  Resources 33 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 34. Security Enhancement •  Made good progress in Servlet 3.0 •  Continue from where we left off •  Include support for preventing against CSRF •  Provide an easy way to support denying all unlisted http methods •  Encoding / escaping support to prevent XSS 34 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 35. Align with other Java EE JSRs •  Integrate with Concurrency Utilities for Java EE –  Utilize it Async programming model •  Align with CDI •  Align with Bean Validation •  Align with Jcache (JSR 107) 35 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 36. Transparency •  High level of transparency for all Java EE JSRs •  Use java.net project to run our JSRs in the open –  One java.net project per specification •  Publicly viewable Expert Group mailing list archive •  Users observer list gets copies of all emails to the EG •  Download area •  JIRA for issue tracking •  Wiki and source repository at EG’s discretion •  JCP.org private mailing list for administrative / confidential info 36 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 37. Agenda •  Servlet 3.0 recap •  Servlet 3.1 Overview •  NIO API •  Protocol Upgrade •  Security •  Resources 37 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 38. Webtier related projects •  https://servlet-spec.java.net •  http://jcp.org/en/jsr/summary?id=340 •  webtier@glassfish.java.net –  For users of GlassFish webtier 38 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 39. Tokyo 2012 April 4–6, 2012 39 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 40. Q&A 40 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 41. 41 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
  • 42. 42 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.