Patterns for Servlet 3.0 suspend usage.
This blog presents 5 patterns of suspend usage for servlet-3.0, which can help explain the generic cases, provide a template for specific implementations and/or be the basis of frameworks to help developers.
JSR-315 Needs YOU!
Putting the C back into JCP for Servlet-3.0
The expert group for JSR 315 (servlet-3.0) has come to a bit of an impasse regarding some new features for auto discovery of servlets and filters. Some members of the EG have some security/flexibility concerns regarding these features, but others do not think the concerns significant enough to warrant additional complexity in configuration options.
In order to resolve this impasse, the EG has decided to solicit more community feedback. So this is my biased blog soliciting that feedback.
In order to resolve this impasse, the EG has decided to solicit more community feedback. So this is my biased blog soliciting that feedback.
Use-Cases for Async Servlets
Servlet-3.0 API previews in Jetty-7.0.0pre0
Pre-release 0 of Jetty 7.0.0 is now available and includes a preview of the proposed Servlet 3.0 API for asynchronous servlets. This blog looks at 4 cool things you can do with asynchronous servlets and how they can be implemented using the proposed API.
Jetty Improves in Netcraft survey (again)
Jetty has 80% of Tomcats public servers
As with most open source projects, it's very hard to get a measure of who/how/where/why Jetty is being used a deployed. Downloads long ago became meaningless with the advent of many available bundling and distribution channels. The Netcraft Web Survey is one good measure, as it scans the internet and identifies which server sites run. In the results released April 2008, Jetty is identified for 278,501 public server, which is 80% of the market share of our closest "competitor" tomcat. If we exclude unknowns and others catagory, Jetty is currently 12th in the league table of identified servers of all types and closing in on a top 10 ranking .
Jesse Mcconnell at Webtide
and demonstrates asynchronous servlets
Jesse Mcconnell (of maven background) has joined Webtide. Jesse has been with us for several months now and we are really please to have his experience and skills being applied to the Jetty project and for Webtide clients.
Jesse has started a blog, and his first technical entry is a cracker! He's used the proposed async servlet 3.0 API to implement an asynchronous web services demonstration. This demonstration clearly shows the huge gains that are possible with an asynchronous approach.
Jesse has started a blog, and his first technical entry is a cracker! He's used the proposed async servlet 3.0 API to implement an asynchronous web services demonstration. This demonstration clearly shows the huge gains that are possible with an asynchronous approach.
Servlet 3.0 sampler patch
Suspendable Requests and disabling responses.
A patch is now available for the development version of Jetty that introduces some of the proposed features for Servlet 3.0. Key among these is a suspend/resume API on the request object that is a proposed standardization the Jetty Continuation mechanism for asynchronous servlets.
Client-side session replication for clusters
using cometd/bayeux
Techniques for replicating session data include distributing: to all nodes in a cluster; to a subset of the nodes in the cluster; to a database; to a cluster server; etc. etc. To this range of solutions, cometd/bayeux now adds the possibility of using the client machine to store replicated session.
20,000 reasons why Jetty scales
Benchmarking Jetty's Cometd Bayeux implementation
I have published a comet Daily article that describes how I have benchmarked Jetty's Cometd implementationof dojox Bayeux protocol to 20,000 simultaneous clients. This blog looks at the same results from a more Jetty centric view point.
Blocking Servlets, Asynchronous Transport
Lies damn lies and benchmarks
The web-2.0 Ajax Comet use-cases have been getting most the attention when it comes to asynchronous features of servlet containers. The Asynchronous features are needed so that a request may wait without a thread allocated while waiting for a comet event to deliver to the Ajax client.
However, there are some compelling use-cases for traditional web-1.0 applications to benefit greatly from asynchronous features. Previously I have looked at how threadless waiting for resources can improve quality of service. In this blog, I look at how an asynchronous servlet container like Jetty can greatly improve the scalability for serving medium and large content. Furthermore, I reveal how your benchmarking is probably not giving you the full story when it comes to scalability.
However, there are some compelling use-cases for traditional web-1.0 applications to benefit greatly from asynchronous features. Previously I have looked at how threadless waiting for resources can improve quality of service. In this blog, I look at how an asynchronous servlet container like Jetty can greatly improve the scalability for serving medium and large content. Furthermore, I reveal how your benchmarking is probably not giving you the full story when it comes to scalability.
Asynchronous IO is hard!
an example from tomcat
The tomcat 6 developers have proposed an asynchronous IO extension as their solution for Comet and Ajax push. I have long argued that asynchronous handling is needed for Servlets (for comet and other use-cases), but that it is very important to make the distinction between asynchronous IO and asynchronous handling of requests. Asynchronous programming is hard and asynchronous IO even harder. I maintain that asynchronous IO should be implemented by the container and that only asynchronous events should be delivered to an asynchronous servlet. As if to illustrate my point,the example code that tomcat provide for their asynchronous IO contains some classic bugs and inefficiencies that I examine here as they well illustrate why we should be making all efforts possible to encapsulate asynchronous IO below the level of the servlet API.
