users@servlet-spec.java.net

[servlet-spec users] Servlet 4.0 Spec comments

From: Martin Mulholland <mmulholl_at_us.ibm.com>
Date: Tue, 1 Dec 2015 18:00:29 -0500

Section 3.7:

        ▪ onDataAvailable(). The onDataAvailable method is invoked
on the ReadListener when data is available to read from the incoming
request stream. The container will invoke the method the first time when
data is available to read. The container will subsequently invoke the
onDataAvailable method if and only if isReady method on ServletInputStream
, described below, returns true.

The last word in this has been changed from “false” to “true” which
changes it from a container perspective to and app perspective. This
should be clarified. I suggest:
The container will subsequently invoke the onDataAvaialble method if and
only if isReady method on ServletOutputStream, described below, previously
returned false but will now return true.

Section 3.8:

Unless explicitly excluded, containers must support server push as
specified in HTTP/2 specification section “Server Push”. Containers must
support server push if the client is capable of speaking HTTP/2, unless
the client has explicitly disabled server push by sending a
SETTINGS_ENABLE_PUSH setting value of 0 (zero).
First sentence appears to suggest that a container can not support HTTP/2
and still be compliant with Servlet 4.0, but the second sentence implies
the opposite. Need to clarify this.
Need to add information about
When push is called the container sends the request to the client and
subsequently sends the content of the request, on a separate stream, if
the client accepts.
If the push fails how should the failure reported?
Use of streams. Each accepted push is sent on a different stream and a
different stream from the response for the inbound request.
To support async servlets should we consider a mechanism for the
dispatched thread to access an existing push builder.
Section 5.3 - onWritePossible
void onWritePossible(). When a WriteListener is registered with the
ServletOutputStream, this method will be invoked by the container the
first time when it is possible to write data. The container will
subsequently invoke the onWritePossible method if and only if isReady
method on ServletOutputStream, described below, returns true.
The last word in this has been changed from “false” to “true” which
changes it from a container perspective to and app perspective. This
should be clarified. I suggest:
The container will subsequently invoke the onWritePossible method if and
only if isReady method on ServletOutputStream, described below, previously
returned false but will now return true.
Section 5.3 - setWriteListener()
“It is illegal to switch to the traditional blocking IO at that point.”
Add a clarification to say how such a illegal switch is reported.
IOException from OutputStream write methods?

Thank you,
Martin Mulholland.
WebSphere Application Server Web Tier Architect
email: mmulholl_at_us.ibm.com

IBM RTP, PO BOX 12195, 503/C227,
3039 Cornwallis Rd, RTP, NC 27709-2195
 t/l 444-4319, external (919)-254-4319