SlideShare a Scribd company logo
1 of 28
Download to read offline
Tomcat 7 & Servlet 3
Mark Thomas
April 2009
Who am I?

•   Apache Tomcat committer
•   Resolved 1,500+ Tomcat bugs
•   Apache Tomcat PMC member
•   Member of the Apache Software Foundation
•   Member of the ASF security committee
•   Created the Tomcat security pages
•   Senior Software Engineer and Consultant at
    SpringSource
Agenda

•   Tomcat versions vs Servlet & JSP specification versions
•   New features for Tomcat 7
•   Specification timeline and process
•   New features / changes in Servlet 3.0
    –   Asynchronous processing
    –   Dynamic configuration
    –   Web fragments
    –   Annotations
    –   Programmatic login
    –   Session cookie configuration
    –   Other possible changes
• Current status of Tomcat 7 development
Tomcat and specification versions

 Tomcat          Servlet    JSP       JDK
 version         version   version   version

 7.0.x            3.0        2.1?     1.6+

 6.0.x            2.5        2.1      1.5+

 5.0.x / 5.5.x    2.4        2.0      1.4+

 4.1.x            2.3        1.2      1.3+

 3.x              2.2        1.2     1.2+ (?)
New for Tomcat 7

•   Servlet 3.0 support
•   Cluster communication via UDP
•   Significantly improved JMX support - GSOC
•   Replace Valves with Filters - GSOC
•   Bayeux
•   Numerous smaller improvements
•   Code clean up
    – Remove unused stuff
    – Resolve inconsistencies
Servlet 3.0 timeline

•   Early draft review – May 2008
•   Public review – December 2008
•   Final release – planned for June 2009
•   Final release probably September 2009
    – Lots of changes since public review
    – JEE needs more time
    – Likely to be another public review
Asynchronous processing

•   One of the major improvements
•   Most containers already have this in some form
•   Tomcat offers the CometProcessor interface
•   What is it?
    – Decouple container request thread from
      ServletRequest/ServletResponse objects
• What is it NOT?
    –   Non blocking servlet IO implementation
    –   This was briefly discussed
    –   Backwards compatibility challenges
    –   Very complex programming model
Asynchronous processing


  doFilter(Request req, Response res, FilterChain chain) {
     //pre filter actions
     chain.doFilter(req,res);
     //post filter action
  }
  // recycle request/response objects


  service(Request req, Response res) {
    //read request
    //write response
  }
  // recycle request/response objects (no filter)
Asynchronous processing

• Backwards compatibility
• Servlet/Filters are non asynchronous by default
   – Asynchronous processing requires explicit support in code
   – Currently done using annotation
   – Still looking at other ways of enabling

                @WebFilter(asyncSupported=true)
                public class MyFilter {
                }

                @WebServlet(asyncSupported=true)
                public class MyServlet {
                }
Asynchronous processing

• Starting

        interface javax.servlet.ServletRequest {

         AsyncContext startAsync();

         AsyncContext startAsync(Request,Response);

        }

        // throws IllegalStateException if
        // isAsyncSupported() returns false
Asynchronous processing

• javax.servlet.AsyncContext

• Similarities to CometEvent in Tomcat
   –   Wraps request/response objects
   –   Can dispatch the request to a URL
   –   Can request a container thread to execute a task
   –   Can notify container that the request is complete
Asynchronous processing

• Example
        service(Request req, Response res) {
          AsyncContext actx = req.startAsync();
          Runnable runnable = new Runnable() {
             public void run() {
               Message m = jmsTemplate.receive();
               res.write(m);
               req.complete();
             }
          };
          executor.submit(runnable);
        }
Asynchronous processing

• Defensive programming

      service(Request req, Response res) {
        if (req.isAsyncSupported() &&
            !req.isAsyncStarted()) {
          AsyncContext actx = req.getAsyncContext():
          req.startAsync();
          ...
        } else {
          ...
        }
      }
Asynchronous processing

• Forwarding to a content generator

      interface javax.servlet.AsyncContext {

       void dispatch();

       void dispatch(String path);

       void dispatch(ServletContext ctx, String path);

      }

      // Dispatches to a container thread
Asynchronous processing

• Forwarding to a content generator

        service(Request req, Response res) {
          final AsyncContext actx = req.startAsync();
          Runnable runnable = new Runnable() {
            public void run() {
              Message m = jmsTemplate.receive();
              req.setAttribute(“quote”,m);
              actx.dispatch(“/stock/quote.jsp”);
            }
          };
          executor.submit(runnable);
        }
Asynchronous processing

• Receiving events



          interface javax.servlet.AsyncListener {

           void onComplete(AsyncEvent event);

           void onTimeout(AsyncEvent event);

          }
Web fragments

• Ability to submit web.xml fragments with JAR packaged
  libraries
• Can be disabled using
   – <metadata-complete>true</metadata-complete>
• META-INF/web-fragment.xml
• Essentially same content as web.xml
Web fragments

• mylib.jar/META-INF/web-fragment.xml

    <web-fragment>
     <servlet>
      <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>foo.bar.MyServlet</servlet-class>
      </servlet>
     </servlet>
     <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>*.tsp</url-pattern>
     </servlet-mapping>
    </web-fragment>
Web fragments

• Ordering of web fragments
• Absolute ordering
   – web.xml - <absolute-ordering>
• Relative ordering
   – web-fragment.xml - <ordering>
• Ordering is name based
               <web-fragment>
                 <name>MyWebFragment1</name>
                 <ordering>
                   <after>MyWebFragment2</after>
                   <before><others/></before>
                 </ordering>
               </web-fragment>
Dynamic configuration

• Programatically add
   – Servlets
   – Filters
• To a ServletContext
• Can only be done during the ServletContext initialization
   – contextInitialized() method of ServletContextListener
     interface javax.servlet.ServletContext {
       FilterRegistration addFilter(
         String filterName, String|Class filterClass);

         ServletRegistration addServlet(
           String servletName, String|Class servletClass);
     }
Dynamic configuration

• Registration objects


        interface Servlet/Filter-Registration{
          setDescription(String);

            setInitParameter(String name,Object value);

            setInitParameters(Map<String,Object> p);

            setAsyncSupported(boolean supported);

            addMappingForUrlPatterns(...);
        }
Annotations

• New annotations added
   –   @WebServlet (must extend HttpServlet)
   –   @WebFilter (must implement Filter)
   –   @WebInitParam (both servlets/filters)
   –   @WebListener
        • ServletContextListener (& attr listener)
        • HttpSessionListener (& attr listener)
        • ServletRequestListener (& attr listener)
• Can be on any class in any jar
   – Providing the class implements the right interfaces
Programmatic login

• New methods
          interface HttpServletRequest{

              login(HttpServletResponse resp);

              login(String username, String password);

              logout();

          }

• Allow a login to happen on a non constrained request
• Sensitive to the response being committed
   – In order to set a session cookie, when configured
Session cookie configuration

• Configure the session cookie


       interface javax.servlet.SessionCookieConfig {

           setName(String name);
           setSecure(boolean isSecure);
           setHttpOnly(boolean isHttpOnly);
           setPath(String path);
           setDomain(String domain);
           setComment(String comment);

       }
Other possible changes

•   Generics
•   More deprecation
•   Delete deprecated methods???
•   File upload
    – is being considered for addition
    – challenge: Servlet 3.0 doesn't have non blocking IO
    – removes the usefulness of having yet another file upload API
Current status

• API changes complete
   – Based on public draft
   – We know this is going to change
• Dynamic configuration complete
   – We know this is going to change
• Session cookie configuration complete
   – We know this is going to change
Current status

• Asynchronous processing
   – Filip has a plan :)
• Web fragments
   – I had a plan
   – Spec changes means more complex implementation required
• Annotations
   – I have a plan
Questions?

•   markt@apache.org
•   users@tomcat.apache.org
•   dev@tomcat.apache.org
•   http://people.apache.org/~markt/presentations

• mark.thomas@springsource.com
• http://www.springsource.com/webinars

More Related Content

What's hot

Akka Cluster in Java - JCConf 2015
Akka Cluster in Java - JCConf 2015Akka Cluster in Java - JCConf 2015
Akka Cluster in Java - JCConf 2015Jiayun Zhou
 
Web Tech Java Servlet Update1
Web Tech   Java Servlet Update1Web Tech   Java Servlet Update1
Web Tech Java Servlet Update1vikram singh
 
Http programming in play
Http programming in playHttp programming in play
Http programming in playKnoldus Inc.
 
Javax.servlet,http packages
Javax.servlet,http packagesJavax.servlet,http packages
Javax.servlet,http packagesvamsi krishna
 
Chapter 3 servlet & jsp
Chapter 3 servlet & jspChapter 3 servlet & jsp
Chapter 3 servlet & jspJafar Nesargi
 
Gwt and rpc use 2007 1
Gwt and rpc use 2007 1Gwt and rpc use 2007 1
Gwt and rpc use 2007 1Sam Muhanguzi
 
An Introduction To Java Web Technology
An Introduction To Java Web TechnologyAn Introduction To Java Web Technology
An Introduction To Java Web Technologyvikram singh
 
Everything you wanted to know about writing async, concurrent http apps in java
Everything you wanted to know about writing async, concurrent http apps in java Everything you wanted to know about writing async, concurrent http apps in java
Everything you wanted to know about writing async, concurrent http apps in java Baruch Sadogursky
 
Presentation: Everything you wanted to know about writing async, high-concurr...
Presentation: Everything you wanted to know about writing async, high-concurr...Presentation: Everything you wanted to know about writing async, high-concurr...
Presentation: Everything you wanted to know about writing async, high-concurr...Baruch Sadogursky
 
Above the clouds: introducing Akka
Above the clouds: introducing AkkaAbove the clouds: introducing Akka
Above the clouds: introducing Akkanartamonov
 
Apache Commons Pool and DBCP - Version 2 Update
Apache Commons Pool and DBCP - Version 2 UpdateApache Commons Pool and DBCP - Version 2 Update
Apache Commons Pool and DBCP - Version 2 UpdatePhil Steitz
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaYevgeniy Brikman
 
Exploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservicesExploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservices💡 Tomasz Kogut
 

What's hot (20)

Tomcatx performance-tuning
Tomcatx performance-tuningTomcatx performance-tuning
Tomcatx performance-tuning
 
Tomcat next
Tomcat nextTomcat next
Tomcat next
 
Async fun
Async funAsync fun
Async fun
 
Akka Cluster in Java - JCConf 2015
Akka Cluster in Java - JCConf 2015Akka Cluster in Java - JCConf 2015
Akka Cluster in Java - JCConf 2015
 
Web Tech Java Servlet Update1
Web Tech   Java Servlet Update1Web Tech   Java Servlet Update1
Web Tech Java Servlet Update1
 
Http programming in play
Http programming in playHttp programming in play
Http programming in play
 
Javax.servlet,http packages
Javax.servlet,http packagesJavax.servlet,http packages
Javax.servlet,http packages
 
Chapter 3 servlet & jsp
Chapter 3 servlet & jspChapter 3 servlet & jsp
Chapter 3 servlet & jsp
 
Celery introduction
Celery introductionCelery introduction
Celery introduction
 
Servlets
ServletsServlets
Servlets
 
Gwt and rpc use 2007 1
Gwt and rpc use 2007 1Gwt and rpc use 2007 1
Gwt and rpc use 2007 1
 
An Introduction To Java Web Technology
An Introduction To Java Web TechnologyAn Introduction To Java Web Technology
An Introduction To Java Web Technology
 
Everything you wanted to know about writing async, concurrent http apps in java
Everything you wanted to know about writing async, concurrent http apps in java Everything you wanted to know about writing async, concurrent http apps in java
Everything you wanted to know about writing async, concurrent http apps in java
 
Presentation: Everything you wanted to know about writing async, high-concurr...
Presentation: Everything you wanted to know about writing async, high-concurr...Presentation: Everything you wanted to know about writing async, high-concurr...
Presentation: Everything you wanted to know about writing async, high-concurr...
 
Above the clouds: introducing Akka
Above the clouds: introducing AkkaAbove the clouds: introducing Akka
Above the clouds: introducing Akka
 
Apache Commons Pool and DBCP - Version 2 Update
Apache Commons Pool and DBCP - Version 2 UpdateApache Commons Pool and DBCP - Version 2 Update
Apache Commons Pool and DBCP - Version 2 Update
 
Servlet life cycle
Servlet life cycleServlet life cycle
Servlet life cycle
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
Servlet lifecycle
Servlet lifecycleServlet lifecycle
Servlet lifecycle
 
Exploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservicesExploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservices
 

Viewers also liked

Ob1k presentation at Java.IL
Ob1k presentation at Java.ILOb1k presentation at Java.IL
Ob1k presentation at Java.ILEran Harel
 
Enterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdEnterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdVaclav Tunka
 
Websockets on the JVM: Atmosphere to the rescue!
Websockets on the JVM: Atmosphere to the rescue!Websockets on the JVM: Atmosphere to the rescue!
Websockets on the JVM: Atmosphere to the rescue!jfarcand
 
Asynchronous design with Spring and RTI: 1M events per second
Asynchronous design with Spring and RTI: 1M events per secondAsynchronous design with Spring and RTI: 1M events per second
Asynchronous design with Spring and RTI: 1M events per secondStuart (Pid) Williams
 
Multithreading, Blocking IO and Async IO
Multithreading, Blocking IO and Async IOMultithreading, Blocking IO and Async IO
Multithreading, Blocking IO and Async IODirecti Group
 
Async IO and Multithreading explained
Async IO and Multithreading explainedAsync IO and Multithreading explained
Async IO and Multithreading explainedDirecti Group
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationTomcat Expert
 
NetflixOSS season 2 episode 2 - Reactive / Async
NetflixOSS   season 2 episode 2 - Reactive / AsyncNetflixOSS   season 2 episode 2 - Reactive / Async
NetflixOSS season 2 episode 2 - Reactive / AsyncRuslan Meshenberg
 
MicroServices at Netflix - challenges of scale
MicroServices at Netflix - challenges of scaleMicroServices at Netflix - challenges of scale
MicroServices at Netflix - challenges of scaleSudhir Tonse
 

Viewers also liked (12)

Ob1k presentation at Java.IL
Ob1k presentation at Java.ILOb1k presentation at Java.IL
Ob1k presentation at Java.IL
 
Enterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdEnterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpd
 
Websockets on the JVM: Atmosphere to the rescue!
Websockets on the JVM: Atmosphere to the rescue!Websockets on the JVM: Atmosphere to the rescue!
Websockets on the JVM: Atmosphere to the rescue!
 
Fastest Servlets in the West
Fastest Servlets in the WestFastest Servlets in the West
Fastest Servlets in the West
 
Asynchronous design with Spring and RTI: 1M events per second
Asynchronous design with Spring and RTI: 1M events per secondAsynchronous design with Spring and RTI: 1M events per second
Asynchronous design with Spring and RTI: 1M events per second
 
Multithreading, Blocking IO and Async IO
Multithreading, Blocking IO and Async IOMultithreading, Blocking IO and Async IO
Multithreading, Blocking IO and Async IO
 
Async IO and Multithreading explained
Async IO and Multithreading explainedAsync IO and Multithreading explained
Async IO and Multithreading explained
 
Auxiliary : Tomcat
Auxiliary : TomcatAuxiliary : Tomcat
Auxiliary : Tomcat
 
Async servlets
Async servletsAsync servlets
Async servlets
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 Presentation
 
NetflixOSS season 2 episode 2 - Reactive / Async
NetflixOSS   season 2 episode 2 - Reactive / AsyncNetflixOSS   season 2 episode 2 - Reactive / Async
NetflixOSS season 2 episode 2 - Reactive / Async
 
MicroServices at Netflix - challenges of scale
MicroServices at Netflix - challenges of scaleMicroServices at Netflix - challenges of scale
MicroServices at Netflix - challenges of scale
 

Similar to Introduction tomcat7 servlet3

Java Servlets.pdf
Java Servlets.pdfJava Servlets.pdf
Java Servlets.pdfArumugam90
 
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
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session ManagementFahad Golra
 
Servlet and JSP
Servlet and JSPServlet and JSP
Servlet and JSPGary Yeh
 
JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0Arun Gupta
 
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Arun Gupta
 
Java Servlet Programming under Ubuntu Linux by Tushar B Kute
Java Servlet Programming under Ubuntu Linux by Tushar B KuteJava Servlet Programming under Ubuntu Linux by Tushar B Kute
Java Servlet Programming under Ubuntu Linux by Tushar B KuteTushar B Kute
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsitricks
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsitricks
 
GWT Web Socket and data serialization
GWT Web Socket and data serializationGWT Web Socket and data serialization
GWT Web Socket and data serializationGWTcon
 
Advance Java Topics (J2EE)
Advance Java Topics (J2EE)Advance Java Topics (J2EE)
Advance Java Topics (J2EE)slire
 

Similar to Introduction tomcat7 servlet3 (20)

Java Servlets.pdf
Java Servlets.pdfJava Servlets.pdf
Java Servlets.pdf
 
Java Servlets
Java ServletsJava Servlets
Java Servlets
 
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
 
JAVA Servlets
JAVA ServletsJAVA Servlets
JAVA Servlets
 
Servlets
ServletsServlets
Servlets
 
Wt unit 3 server side technology
Wt unit 3 server side technologyWt unit 3 server side technology
Wt unit 3 server side technology
 
Wt unit 3 server side technology
Wt unit 3 server side technologyWt unit 3 server side technology
Wt unit 3 server side technology
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session Management
 
Servlet and JSP
Servlet and JSPServlet and JSP
Servlet and JSP
 
JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0JavaOne India 2011 - Servlets 3.0
JavaOne India 2011 - Servlets 3.0
 
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
 
Java Servlet Programming under Ubuntu Linux by Tushar B Kute
Java Servlet Programming under Ubuntu Linux by Tushar B KuteJava Servlet Programming under Ubuntu Linux by Tushar B Kute
Java Servlet Programming under Ubuntu Linux by Tushar B Kute
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
GWT Web Socket and data serialization
GWT Web Socket and data serializationGWT Web Socket and data serialization
GWT Web Socket and data serialization
 
Advance Java Topics (J2EE)
Advance Java Topics (J2EE)Advance Java Topics (J2EE)
Advance Java Topics (J2EE)
 
Servlet
ServletServlet
Servlet
 
SERVIET
SERVIETSERVIET
SERVIET
 
Servlet 3.0
Servlet 3.0Servlet 3.0
Servlet 3.0
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
 

More from JavaEE Trainers

Introduction to java servlet 3.0 api javaone 2009
Introduction to java servlet 3.0 api javaone 2009Introduction to java servlet 3.0 api javaone 2009
Introduction to java servlet 3.0 api javaone 2009JavaEE Trainers
 
Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008JavaEE Trainers
 
Servlet/JSP course chapter 2: Introduction to JavaServer Pages (JSP)
Servlet/JSP course chapter 2: Introduction to JavaServer Pages (JSP)Servlet/JSP course chapter 2: Introduction to JavaServer Pages (JSP)
Servlet/JSP course chapter 2: Introduction to JavaServer Pages (JSP)JavaEE Trainers
 
Servlet/JSP course chapter 1: Introduction to servlets
Servlet/JSP course chapter 1: Introduction to servletsServlet/JSP course chapter 1: Introduction to servlets
Servlet/JSP course chapter 1: Introduction to servletsJavaEE Trainers
 
Introduction to the Servlet / JSP course
Introduction to the Servlet / JSP course Introduction to the Servlet / JSP course
Introduction to the Servlet / JSP course JavaEE Trainers
 
Jsp quick reference card
Jsp quick reference cardJsp quick reference card
Jsp quick reference cardJavaEE Trainers
 
jsp, javaserver pages, Card20
jsp, javaserver pages, Card20jsp, javaserver pages, Card20
jsp, javaserver pages, Card20JavaEE Trainers
 
Struts2 course chapter 2: installation and configuration
Struts2 course chapter 2: installation and configurationStruts2 course chapter 2: installation and configuration
Struts2 course chapter 2: installation and configurationJavaEE Trainers
 
Struts2 course chapter 1: Evolution of Web Applications
Struts2 course chapter 1: Evolution of Web ApplicationsStruts2 course chapter 1: Evolution of Web Applications
Struts2 course chapter 1: Evolution of Web ApplicationsJavaEE Trainers
 
Struts2 Course: Introduction
Struts2 Course: IntroductionStruts2 Course: Introduction
Struts2 Course: IntroductionJavaEE Trainers
 

More from JavaEE Trainers (10)

Introduction to java servlet 3.0 api javaone 2009
Introduction to java servlet 3.0 api javaone 2009Introduction to java servlet 3.0 api javaone 2009
Introduction to java servlet 3.0 api javaone 2009
 
Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008Introduction to java servlet 3.0 api javaone 2008
Introduction to java servlet 3.0 api javaone 2008
 
Servlet/JSP course chapter 2: Introduction to JavaServer Pages (JSP)
Servlet/JSP course chapter 2: Introduction to JavaServer Pages (JSP)Servlet/JSP course chapter 2: Introduction to JavaServer Pages (JSP)
Servlet/JSP course chapter 2: Introduction to JavaServer Pages (JSP)
 
Servlet/JSP course chapter 1: Introduction to servlets
Servlet/JSP course chapter 1: Introduction to servletsServlet/JSP course chapter 1: Introduction to servlets
Servlet/JSP course chapter 1: Introduction to servlets
 
Introduction to the Servlet / JSP course
Introduction to the Servlet / JSP course Introduction to the Servlet / JSP course
Introduction to the Servlet / JSP course
 
Jsp quick reference card
Jsp quick reference cardJsp quick reference card
Jsp quick reference card
 
jsp, javaserver pages, Card20
jsp, javaserver pages, Card20jsp, javaserver pages, Card20
jsp, javaserver pages, Card20
 
Struts2 course chapter 2: installation and configuration
Struts2 course chapter 2: installation and configurationStruts2 course chapter 2: installation and configuration
Struts2 course chapter 2: installation and configuration
 
Struts2 course chapter 1: Evolution of Web Applications
Struts2 course chapter 1: Evolution of Web ApplicationsStruts2 course chapter 1: Evolution of Web Applications
Struts2 course chapter 1: Evolution of Web Applications
 
Struts2 Course: Introduction
Struts2 Course: IntroductionStruts2 Course: Introduction
Struts2 Course: Introduction
 

Recently uploaded

The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Recently uploaded (20)

The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

Introduction tomcat7 servlet3

  • 1. Tomcat 7 & Servlet 3 Mark Thomas April 2009
  • 2. Who am I? • Apache Tomcat committer • Resolved 1,500+ Tomcat bugs • Apache Tomcat PMC member • Member of the Apache Software Foundation • Member of the ASF security committee • Created the Tomcat security pages • Senior Software Engineer and Consultant at SpringSource
  • 3. Agenda • Tomcat versions vs Servlet & JSP specification versions • New features for Tomcat 7 • Specification timeline and process • New features / changes in Servlet 3.0 – Asynchronous processing – Dynamic configuration – Web fragments – Annotations – Programmatic login – Session cookie configuration – Other possible changes • Current status of Tomcat 7 development
  • 4. Tomcat and specification versions Tomcat Servlet JSP JDK version version version version 7.0.x 3.0 2.1? 1.6+ 6.0.x 2.5 2.1 1.5+ 5.0.x / 5.5.x 2.4 2.0 1.4+ 4.1.x 2.3 1.2 1.3+ 3.x 2.2 1.2 1.2+ (?)
  • 5. New for Tomcat 7 • Servlet 3.0 support • Cluster communication via UDP • Significantly improved JMX support - GSOC • Replace Valves with Filters - GSOC • Bayeux • Numerous smaller improvements • Code clean up – Remove unused stuff – Resolve inconsistencies
  • 6. Servlet 3.0 timeline • Early draft review – May 2008 • Public review – December 2008 • Final release – planned for June 2009 • Final release probably September 2009 – Lots of changes since public review – JEE needs more time – Likely to be another public review
  • 7. Asynchronous processing • One of the major improvements • Most containers already have this in some form • Tomcat offers the CometProcessor interface • What is it? – Decouple container request thread from ServletRequest/ServletResponse objects • What is it NOT? – Non blocking servlet IO implementation – This was briefly discussed – Backwards compatibility challenges – Very complex programming model
  • 8. Asynchronous processing doFilter(Request req, Response res, FilterChain chain) { //pre filter actions chain.doFilter(req,res); //post filter action } // recycle request/response objects service(Request req, Response res) { //read request //write response } // recycle request/response objects (no filter)
  • 9. Asynchronous processing • Backwards compatibility • Servlet/Filters are non asynchronous by default – Asynchronous processing requires explicit support in code – Currently done using annotation – Still looking at other ways of enabling @WebFilter(asyncSupported=true) public class MyFilter { } @WebServlet(asyncSupported=true) public class MyServlet { }
  • 10. Asynchronous processing • Starting interface javax.servlet.ServletRequest { AsyncContext startAsync(); AsyncContext startAsync(Request,Response); } // throws IllegalStateException if // isAsyncSupported() returns false
  • 11. Asynchronous processing • javax.servlet.AsyncContext • Similarities to CometEvent in Tomcat – Wraps request/response objects – Can dispatch the request to a URL – Can request a container thread to execute a task – Can notify container that the request is complete
  • 12. Asynchronous processing • Example service(Request req, Response res) { AsyncContext actx = req.startAsync(); Runnable runnable = new Runnable() { public void run() { Message m = jmsTemplate.receive(); res.write(m); req.complete(); } }; executor.submit(runnable); }
  • 13. Asynchronous processing • Defensive programming service(Request req, Response res) { if (req.isAsyncSupported() && !req.isAsyncStarted()) { AsyncContext actx = req.getAsyncContext(): req.startAsync(); ... } else { ... } }
  • 14. Asynchronous processing • Forwarding to a content generator interface javax.servlet.AsyncContext { void dispatch(); void dispatch(String path); void dispatch(ServletContext ctx, String path); } // Dispatches to a container thread
  • 15. Asynchronous processing • Forwarding to a content generator service(Request req, Response res) { final AsyncContext actx = req.startAsync(); Runnable runnable = new Runnable() { public void run() { Message m = jmsTemplate.receive(); req.setAttribute(“quote”,m); actx.dispatch(“/stock/quote.jsp”); } }; executor.submit(runnable); }
  • 16. Asynchronous processing • Receiving events interface javax.servlet.AsyncListener { void onComplete(AsyncEvent event); void onTimeout(AsyncEvent event); }
  • 17. Web fragments • Ability to submit web.xml fragments with JAR packaged libraries • Can be disabled using – <metadata-complete>true</metadata-complete> • META-INF/web-fragment.xml • Essentially same content as web.xml
  • 18. Web fragments • mylib.jar/META-INF/web-fragment.xml <web-fragment> <servlet> <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>foo.bar.MyServlet</servlet-class> </servlet> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>*.tsp</url-pattern> </servlet-mapping> </web-fragment>
  • 19. Web fragments • Ordering of web fragments • Absolute ordering – web.xml - <absolute-ordering> • Relative ordering – web-fragment.xml - <ordering> • Ordering is name based <web-fragment> <name>MyWebFragment1</name> <ordering> <after>MyWebFragment2</after> <before><others/></before> </ordering> </web-fragment>
  • 20. Dynamic configuration • Programatically add – Servlets – Filters • To a ServletContext • Can only be done during the ServletContext initialization – contextInitialized() method of ServletContextListener interface javax.servlet.ServletContext { FilterRegistration addFilter( String filterName, String|Class filterClass); ServletRegistration addServlet( String servletName, String|Class servletClass); }
  • 21. Dynamic configuration • Registration objects interface Servlet/Filter-Registration{ setDescription(String); setInitParameter(String name,Object value); setInitParameters(Map<String,Object> p); setAsyncSupported(boolean supported); addMappingForUrlPatterns(...); }
  • 22. Annotations • New annotations added – @WebServlet (must extend HttpServlet) – @WebFilter (must implement Filter) – @WebInitParam (both servlets/filters) – @WebListener • ServletContextListener (& attr listener) • HttpSessionListener (& attr listener) • ServletRequestListener (& attr listener) • Can be on any class in any jar – Providing the class implements the right interfaces
  • 23. Programmatic login • New methods interface HttpServletRequest{ login(HttpServletResponse resp); login(String username, String password); logout(); } • Allow a login to happen on a non constrained request • Sensitive to the response being committed – In order to set a session cookie, when configured
  • 24. Session cookie configuration • Configure the session cookie interface javax.servlet.SessionCookieConfig { setName(String name); setSecure(boolean isSecure); setHttpOnly(boolean isHttpOnly); setPath(String path); setDomain(String domain); setComment(String comment); }
  • 25. Other possible changes • Generics • More deprecation • Delete deprecated methods??? • File upload – is being considered for addition – challenge: Servlet 3.0 doesn't have non blocking IO – removes the usefulness of having yet another file upload API
  • 26. Current status • API changes complete – Based on public draft – We know this is going to change • Dynamic configuration complete – We know this is going to change • Session cookie configuration complete – We know this is going to change
  • 27. Current status • Asynchronous processing – Filip has a plan :) • Web fragments – I had a plan – Spec changes means more complex implementation required • Annotations – I have a plan
  • 28. Questions? • markt@apache.org • users@tomcat.apache.org • dev@tomcat.apache.org • http://people.apache.org/~markt/presentations • mark.thomas@springsource.com • http://www.springsource.com/webinars