Asynchronous operation was introduced in Servlet 3.0. ServletRequest#startAsync is used to put the request into asynchronous mode. A thread need to be created implicitly or explicitly (see here for an example).
Servlet 3.1, JSR 340 includes clarifications in asynchronous area. Besides Servlet 3,1, Concurreny Utilities for Java EE 1.0, JSR 236 is introduced in Java EE 7. JSR 236 provides a...
on Jun 6, 2013
Update: In Servlet 3.0, the behavior of using response is undefined after invoking #complete or #dispatch. In Servlet 3.1, it is clarified that AsyncContext#getResponse will throw IllegalStateException. The blog has been updated for this.
Asynchronous operation is supported in Servlet 3.0. I have discussed startAsync in my previous blog, startAsync in Servlet 3.0. In this blog, I will discuss...
on May 14, 2013
Update: Invoke WebConnection#close when there is an error.
Servlet 3.1 Specification (JSR 340) is almost ready for the release. One of the new features is the support for protocol upgrade.
HTTP protocol upgrade was introduced in HTTP 1.1 (RFC 2616):
The Upgrade general-header allows the client to specify what additional communication protocols it supports and would like to use if the server...
on May 7, 2013
Servlet 3.1 Specification (JSR 340) and Java Authorization Contract for Containers (JSR 115) MR3 are almost ready for release. Besides "*", the role-name "**" is introduced in the above two specifications.
In a nutshell, "*" means any role defined in web.xml and "**" means any authenticated user.
Prior to Servlet 3.1, web containers use proprietary mechanisms to add security-constraints for any...
on Apr 19, 2013
Servlet 3.1 Specification (JSR 340) is almost ready for the release. Several new security features have been added in this version of Servlet specification.
In this blog, I will explain one of the security features, namely deny-uncovered-http-methods.
Let us take a look at a simple security-constraint in web.xml as follows:
<web-app xmlns="http://www.w3.org/2001/XMLSchema" ...
on Apr 19, 2013
Update: One should not use response in AsyncListener#onComplete. Only print debug in this example.
Servlet 3.1 (JSR 340) is almost ready for the release. One of the new features is the support for non-blocking IO. ReadListener and WriteListener are introduced to allow non-blocking processing in Servlet.
Non-blocking IO can only be used in async (defined in Servlet 3.0) or the upgrade mode. We can...
on Apr 16, 2013
Acteur is a pattern for pipelining work - a little DI functional goodness for Java. I might have been speaking Swahili when I wrote about Acteur last month. So here's a simple explanation of the design pattern behind it, with a simple sample project.
on Jun 5, 2013
Java Web Services and XML
Following the development of Java EE 7 has required reading lots of different posts about the different JSRs that are part of Java EE 7. On Wednesday, June 12 (or Thursday, depending on where you live), you'll have an opportunity to familiarize yourself with Java EE 7 in one sitting, by attending Introducing Java EE 7, a live global interactive webcast that will happen twice: at 9 AM Pacific...
on May 31, 2013
By default, all connections to the Oracle Cloud are encrypted:
Browsers automatically import the necessary certificates, however, trying to access these services from a Java client, you will not be so successful. Take this Java Client:
import com.sun.jersey.api.client.Client;import com.sun.jersey.api.client.WebResource;import com.sun.jersey.api.client.config.ClientConfig;import com....
on May 2, 2013
In this blog entry I outline the steps necessary to deploy JAX-RS (JSR 311) RESTful web services to the Oracle Cloud. We'll be using Jersey, which is the reference implementation for JAX-RS, and JDeveloper, which is my primary Java IDE.
Step 1. Create a Jersey Library in JDeveloper
Download the latest version of jersey-bundle.jar, which at the time of this writing is version 1.17.1.
on Apr 30, 2013
In the most recently completed Java.net poll, developers overwhelmingly considered the HTML 5 related enhancements in Java EE 7 to be the most important. The poll highlighted five of the many areas of enhancement that will be included in Java EE 7, and provided a "Something else" option as well. The 1631 votes that were cast represent one of the highest totals for recent Java.net polls.
on Apr 15, 2013
Java User Groups
Pig from a Bird's Eyeview
by M. Tim Jones, author of Pig in Action
Today, we are being inundated with data. So much so, that IBM estimates that in 2012, 2.5 quintillion bytes of information are generated every day. That's a million trillion bytes of data, more data than we can fathom and considerably more than we can easily process. Online, every web-page we visit, every link we click, every...
on May 20, 2013
The results of the most recently completed Java.net poll suggest that awareness of the Adopt-a-JSR effort within the Java developer community continues to increase, albeit at a perhaps modest pace. Still, growing awareness is a strong positive for any long-term effort. And the Adopt-a-JSR program is certainly intended as a long-term effort in promoting and guiding the future of Java.
on May 20, 2013
Your First Mikado Graph
by Ola Ellnestam and Daniel Brolund, authors of The Mikado Method
The Mikado Method is a structured way to make significant changes to complex code. What that means, is rather than getting caught up in the complexity of moving parts, analyzing the entire codebase and doing guess work, the Mikado Method removes the least amount of obstacles at a time in order to achieve...
on May 15, 2013
Frans Thamura is a leader of JUG Indonesia, a Java Champion, an entrepreneur, and the founder of Meruvian. He has implemented the JEDI program in Indonesia under the goverment's Java education services JENI Project.
In this fourth Java.net "Lightning Interview" I asked Frans about starting and leading a Java User Group.
1. Why did you decide to start JUG Indonesia?
on May 12, 2013
Robert Engels works for OptionsCity, which develops financial service platforms using Java. Their products include Freeway, a multi-asset algorithmic trading platform that won the 2012 Chicago Innovation Awards. Robert is the Chief Architect for Freeway development. If you're familiar with modern automated trading, you'll also be quite aware of the necessity to achieve maximal performance....
on May 3, 2013
Ahmed Ali leads the very active Egyptian Java User Group (EGJUG). EGJUG recently organized Java Developers Conference 2013, the largest Java conference in the Middle East. The conference was, once again, a huge success.
In this second Java.net "Lightning Interview" I asked Ahmed the same questions I asked London Java Community (LJC) co-leader Martijn Verburg (@karianna) in the first Lightning...
on Apr 21, 2013
Tuning Java code presents many challenges and addresses several goals.
One of these goals is to make the application "run faster".
Recently, our end-users were getting multiple-second response times from our web application's home page.
This was unacceptable.
We were asked to see what we can do to make the web application "run faster".
We began by looking at the usual suspects... database access...
on Apr 14, 2013
Setting up SBT and an SBT Build
by Joshua D. Suereth and Matthew Farwell, authors of SBT in Action
The simple build tool (SBT) is a tool for building Java and Scala projects. SBT aims to build well and allow users to customize endlessly, but above all, SBT strives to provide consistency of basic concepts so that, once learned, you don’t have to unlearn them as you dive deeper into the build...
on Apr 12, 2013
There are a number of topics JSR 359 EG is working on. These are on a number of different categories. It includes improving the RFC coverage of SIP specification (SIP outbound), Modernizing programming (using POJOs), better alignment with Java EE (CDI, latest servlet spec), SIP over websockets, Extensibility, Better concurrency control, Updates to B2B etc. In this blog series, I am
on May 6, 2013