+ All Categories
Home > Technology > Servlet 3.1

Servlet 3.1

Date post: 11-May-2015
Category:
Upload: arun-gupta
View: 7,649 times
Download: 3 times
Share this document with a friend
Description:
Servlet 3.1 at JavaOne Latin America 2011
Popular Tags:
42
1 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Transcript
Page 1: Servlet 3.1

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

Page 2: Servlet 3.1

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

Servlet 3.1 John Clingan, Principal Product Manager

Page 3: Servlet 3.1

3 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.

Page 4: Servlet 3.1

4 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

Page 5: Servlet 3.1

5 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

Page 6: Servlet 3.1

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

Servlet 3.0 recap

•  Annotations to declare – Servlets –  Filters –  Listeners – Security

• Defaults for attributes of annotations

Ease of Development

Page 7: Servlet 3.1

7 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) {

} }

Page 8: Servlet 3.1

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

Servlet 3.0 recap

• 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

Pluggability

Page 9: Servlet 3.1

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

Servlet 3.0 recap

•  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

Using pluggability

Page 10: Servlet 3.1

10 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

Page 11: Servlet 3.1

11 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

Page 12: Servlet 3.1

12 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

Page 13: Servlet 3.1

13 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

Page 14: Servlet 3.1

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

Servlet 3.1

•  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

Feature set

Page 15: Servlet 3.1

15 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

Page 16: Servlet 3.1

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

Expose NIO API

•  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

Overview: NonBlocking IO

Page 17: Servlet 3.1

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

Expose NIO API

public interface ReadListener extends EventListener {

public void onDataAvailable(ServletRequest request);

public void onAllDataRead(ServletRequest request);

public void onError(Throwable t); }

javax.servlet.ReadListener

Page 18: Servlet 3.1

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

Expose NIO API

public interface WriteListener extends EventListener {

public void onWritePossible(ServletResponse response);

public void onError(Throwable t); }

javax.servlet.WriteListener

Page 19: Servlet 3.1

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

Expose NIO API

public interface AsyncIOInputSource {

public int dataAvailable();

public boolean isFinished();

public isReady(); }

javax.servlet.AsyncIOInputSource

Page 20: Servlet 3.1

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

Expose NIO API ServletInputStream, ServletReader

InputStream

ServletInputStream

Reader

ServletReader AsyncIOInputSource

Page 21: Servlet 3.1

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

Expose NIO API

public interface AsyncIOOutputSink {

public boolean canWrite(int size);

public void complete(); }

javax.servlet.AsyncIOOutputSink

Page 22: Servlet 3.1

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

Expose NIO API NIOOutputStream, NIOWriter

OutputStream

ServletOutputStream

Writer

ServletWriter AsyncIOOutputSink

Page 23: Servlet 3.1

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

Expose NIO API

•  ServletRequest – Public ServletInputStream getServletInputStream() – Public ServletReader getServletReader() –  public void addListener(ReadListener listener)

•  ServletResponse – Public ServletOutputStream getServletOutputStream() – Public ServletWriter getServletWriter() –  public addListener(WriteListener listener)

ServletRequest, ServletResponse

Page 24: Servlet 3.1

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

Expose NIO API

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()]); … }

Sample Usage

Page 25: Servlet 3.1

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

Expose NIO API

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

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

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

Sample Usage (cont’d)

Page 26: Servlet 3.1

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

Expose NIO API

•  response.addListener(new WriteListener() { public void onWritePossible(ServletResponse response) { AsyncIOOutputStream nos = response.getAsyncIOOutputStream(); try {

nos.write(b); nos.complete(); …

}

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

Sample Usage (cont’d 2)

Page 27: Servlet 3.1

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

Expose NIO API

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

Page 28: Servlet 3.1

28 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

Page 29: Servlet 3.1

29 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

Page 30: Servlet 3.1

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

Upgrade

•  Protocol: IETF •  API: W3C (JavaScript) •  Bi-directional, full-duplex / TCP

Example: WebSocket

Page 31: Servlet 3.1

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

Upgrade

WebSocket Example •  GET /chat HTTP/1.1

Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13

•  HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Sec-WebSocket-Protocol: chat

Page 32: Servlet 3.1

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

Upgrade

Servlet

ProtocolHandler

HTTP Request

…. upgrade(…);

Page 33: Servlet 3.1

33 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

Page 34: Servlet 3.1

34 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

Page 35: Servlet 3.1

35 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)

Page 36: Servlet 3.1

36 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

Page 37: Servlet 3.1

37 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

Page 38: Servlet 3.1

38 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 • [email protected]

–  For users of GlassFish webtier

Page 39: Servlet 3.1

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

Tokyo 2012

April 4–6, 2012

Page 40: Servlet 3.1

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

Q&A

Page 41: Servlet 3.1

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

Page 42: Servlet 3.1

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


Recommended