apache tomcat 9 - events.static.linuxfound.org · 9/24/2015  · apache tomcat committer since...

38

Upload: others

Post on 28-Jul-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket
Page 2: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

2 © 2015 Pivotal Software, Inc. All rights reserved. 2 © 2015 Pivotal Software, Inc. All rights reserved.

Apache Tomcat 9

Preview

Mark Thomas, September 2015

Page 3: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

3 © 2015 Pivotal Software, Inc. All rights reserved.

Introduction

Apache Tomcat committer since December 2003 – [email protected]

Tomcat 8 release manager

Member of the Servlet, WebSocket and EL expert groups

Consultant Software Engineer @ Pivotal

Currently focused on Apache Tomcat 9

Page 4: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

4 © 2015 Pivotal Software, Inc. All rights reserved.

Agenda

Specification mandated new features

Tomcat specific new features

Tomcat features removed

Internal changes

Page 5: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

5 © 2015 Pivotal Software, Inc. All rights reserved.

Tomcat versions

Tomcat JavaEE Minimum

Java SE Servlet JSP EL WebSocket JASPIC

1st Stable

Release EOL

5.x 4 1.4 2.4 2.0 N/A N/A N/A 08 2004 09 2012

6.x 5 5 2.5 2.1 2.1 N/A N/A 02 2007 12 2016

7.x 6 6 3.0 2.2 2.2 1.1 N/A 01 2011 TBD

8.x 7 7 3.1 2.3 3.0 1.1 N/A 02 2014 TBD

9.x 8 8 4.0 2.4? 3.1? 2.0? 1.1? Q4 2016? TBD

Page 6: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

6 © 2015 Pivotal Software, Inc. All rights reserved.

Specification changes

Page 7: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

7 © 2015 Pivotal Software, Inc. All rights reserved.

JavaEE 8

Specifications

Key elements – HTML 5.0

– HTTP/2

– Simplification

– Better integration for managed beans

– Better infrastructure for the cloud

Page 8: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

8 © 2015 Pivotal Software, Inc. All rights reserved.

Servlet 4.0

Specifications

Work started, stalled and is now starting again – Driven by JavaOne

HTTP/2

Ease of use improvements – HttpFilter, default methods

Clarifications – Starting to make progress

Page 9: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

9 © 2015 Pivotal Software, Inc. All rights reserved.

Servlet 4.0

Specifications

Enhancement requests – Very little progress

Default context root – Tomcat will be ignoring this

Page 10: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

10 © 2015 Pivotal Software, Inc. All rights reserved.

Servlet 4.0: HTTP/2

Specifications

HTTP/2 requires some TLS features – Server Name Indication (SNI)

– Application Layer Protocol Negotiation (ALPN)

Work in progress – not yet considered stable

h2c available with all connectors

h2 requires APR/native due to ALPN requirements

Page 11: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

11 © 2015 Pivotal Software, Inc. All rights reserved.

Servlet 4.0: HTTP/2

Specifications

Basic HTTP requests work

Async support mostly implemented – Just timeouts left to implement

Non-blocking I/O support in progress

Server push has not been implemented yet

Page 12: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

12 © 2015 Pivotal Software, Inc. All rights reserved.

Servlet 4.0

Specifications

Java EE 8 must run on Java 8

Java EE 8 requires Servlet 4.0

Servlet 4.0 requires HTTP/2

HTTP/2 requires ALPN

Java 8 does not, and will not, support ALPN

ALPN support should be available from Java 9

Page 13: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

13 © 2015 Pivotal Software, Inc. All rights reserved.

WebSocket 2.0

Specifications

Work has not started

Assuming 2.0 – Could be 1.2

Standardize extension support – Compression

– Multiplexing

Page 14: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

14 © 2015 Pivotal Software, Inc. All rights reserved.

EL 3.1

Specifications

Work has not started

Nothing obvious to do here

Most issues opened against UEL are implementation bugs

Expect minor changes and clarifications

Page 15: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

15 © 2015 Pivotal Software, Inc. All rights reserved.

JSP 2.4

Specifications

There is no JSP expert group

Just an other maintenance release

Issues to resolve with EL 3.0 and JSPs – Imports (definition and resolution)

Page 16: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

16 © 2015 Pivotal Software, Inc. All rights reserved.

JASPIC 1.1

Specifications

Java Authentication Service Provider Interface for

Containers

Not much demand

There are benefits (e.g. drop-in support for OAuth)

Unsuccessful GSoC 2015 project to implement

I intend to complete the JASPIC work for Tomcat 9

Page 17: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

17 © 2015 Pivotal Software, Inc. All rights reserved.

Other

Specifications

Tomcat 9 isn’t going to implement the web profile – Lack of demand

– TomEE

JACC – Java Authorization Contract for Containers

– Zero demand

– Might be useful

– On the ‘have a look if there is time’ list

Page 18: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

18 © 2015 Pivotal Software, Inc. All rights reserved.

Tomcat New Features

Page 19: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

19 © 2015 Pivotal Software, Inc. All rights reserved.

Tomcat 9 New Features

Major overhaul of TLS support

Tomcat 8 supports – one TLS virtual host per connector

– one certificate per virtual host

Tomcat 9 supports – multiple virtual hosts per connector (SNI)

– multiple certificates per virtual host

TLS configuration has changed to support this

Page 20: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

20 © 2015 Pivotal Software, Inc. All rights reserved.

Tomcat 9 New Features

SNI and multiple certificates supported by all connectors – APR/native support via the OpenSSL API

– JSSE support via parsing the initial handshake

ALPN supported by APR/native – JSSE support is currently TBD

Common (where possible) configuration for all connectors – Some JSSE / OpenSSL differences remain

Page 21: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

21 © 2015 Pivotal Software, Inc. All rights reserved.

Tomcat 9 New Features

OpenSSL engine option for NIO and NIO2

JSSE supports pluggable provides – OpenSSL based provider?

Simpler to replace the SSLContext implementation – Netty’s approach

– Uses same native library as APR/native connector

Allows OpenSSL performance with NIO/NIO2 APIs

Not yet tested with HTTP/2 & ALPN

Page 22: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

22 © 2015 Pivotal Software, Inc. All rights reserved.

Tomcat 9 New Features

Other possibilities – HTTP upgrade support for AJP

– Needs help with the C code

Suggestions welcome – Suggestions with patches are even better ;)

Page 23: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

23 © 2015 Pivotal Software, Inc. All rights reserved.

Tomcat 9 New Features

With OpenSSL engine support for NIO and NIO2 why bother

with the APR/native connector?

NIO and NIO2 are very similar in performance – NIO is more stable

– NIO2 API is (arguably) better suited to WebSocket and HTTP2

Do we need both NIO and NIO2?

Is a single connector implementation viable? – Maybe…

Page 24: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

24 © 2015 Pivotal Software, Inc. All rights reserved.

Removed Features

Page 25: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

25 © 2015 Pivotal Software, Inc. All rights reserved.

BIO HTTP and BIO AJP connectors

Removed Features

Both WebSocket and Servlet 3.1 require non-blocking IO

BIO connectors currently pretend to be non-blocking – Creates complexity

– No scalability benefits

– Opportunity for things to break

Therefore decided to remove them

Page 26: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

26 © 2015 Pivotal Software, Inc. All rights reserved.

BIO HTTP and BIO AJP connectors

Removed Features

NIO implementation remains the default – HTTP and AJP

NIO2 introduced in Tomcat 8

APR/native still available – Requires native library

Page 27: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

27 © 2015 Pivotal Software, Inc. All rights reserved.

Comet

Removed Features

Proprietary interface for asynchronous I/O

Users are moving (have moved) to WebSocket

Adds complexity to all the connectors

Therefore decided to remove it

Page 28: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

28 © 2015 Pivotal Software, Inc. All rights reserved.

Internal Changes

Page 29: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

29 © 2015 Pivotal Software, Inc. All rights reserved.

Connectors

Internal Changes

HTTP 2.0 support adds complexity

Connectors were already complex

Connector code was fragile in some areas

Cleaned up the code up before starting on HTTP 2.0

Page 30: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

30 © 2015 Pivotal Software, Inc. All rights reserved.

Connectors

Internal Changes

Removed – BIO

– Comet

Implementation specific per connector code – Move to Endpoint

Implementation specific per connection code – Move to SocketWrapper

Page 31: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

31 © 2015 Pivotal Software, Inc. All rights reserved.

Connectors

Internal Changes

Used to have connector specific HTTP, AJP and upgrade

implementations

Reduce duplication – HTTP upgrade reduced to 3 classes from 12

– Removed ~400 loc (of ~120,000)

– HTTP 1.1 removed ~50% / 2500 loc

– AJP 1.3 removed ~30% / 400 loc

No connector specific HTTP/2 code

Page 32: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

32 © 2015 Pivotal Software, Inc. All rights reserved.

WebSocket

Internal Changes

Refactored I/O implementation – Direct to Tomcat’s I/O layer

– Not via Servlet 3.1 non-blocking API

Simpler

Faster

Extension support likely to require further refactoring

Page 33: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

33 © 2015 Pivotal Software, Inc. All rights reserved.

Other

Internal Changes

Remove use of system properties for configuration – Move to per Context / Host / Server / Connector

– May keep the system property for one version as a default

Made RFC 6265 CookieProcessor the default – Note UTF-8 extension

Page 34: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

34 © 2015 Pivotal Software, Inc. All rights reserved.

Get Involved

Page 35: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

35 © 2015 Pivotal Software, Inc. All rights reserved.

Get Involved

Ask questions – [email protected]

Report bugs – https://issues.apache.org/bugzilla

Provide patches – https://issues.apache.org/bugzilla

– GitHub pull request

Page 36: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

36 © 2015 Pivotal Software, Inc. All rights reserved.

Get Involved

Development – https://svn.apache.org/repos/asf/tomcat/trunk (9.0.x)

[email protected]

Update the wiki – https://wiki.apache.org/tomcat

You don’t need to be an expert

Documentation needs patches too

Page 37: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket

37 © 2015 Pivotal Software, Inc. All rights reserved.

Questions

Page 38: Apache Tomcat 9 - events.static.linuxfound.org · 9/24/2015  · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member of the Servlet, WebSocket