users@jersey.java.net

read time-out when processing form post

From: Michael Mogley <mmogley_at_wirefreethought.com>
Date: Mon, 2 Mar 2009 17:53:17 -0800

I am trying to process a simple post request. Whenever I invoke the post, I
get a 'read timed out' error from Jersey. I've browsed the mailing list for
similar issues. One appeared related, but in my case, Tomcat has no valves
enabled. My rest method is:

  @Consumes("application/x-www-form-urlencoded")
  @POST @Path("/storeHoursProfile/add")
  @Produces("text/html")
  public String addProfile(@FormParam("groupId") Long groupId,
@FormParam("fromDate") String fromDateString, @FormParam("toDate") String
toDateString, @FormParam("fromTime") String fromTimeString,
@FormParam("toTime") String toTimeString)
  {
    String response = PlainTextResponseCode.OK;

   ....

   return response;
}

The Jersey stack-trace:

java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at
org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:746)
    at
org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:776)
    at
org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:116)
    at
org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:705)
    at org.apache.coyote.Request.doRead(Request.java:428)
    at
org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:304)
    at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:405)
    at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:327)
    at
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
    at java.io.InputStreamReader.read(InputStreamReader.java:167)
    at java.io.Reader.read(Reader.java:123)
    at
com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider.readFromAsString(AbstractMessageReaderWriterProvider.java:89)
    at
com.sun.jersey.core.impl.provider.entity.FormProvider.readFrom(FormProvider.java:76)
    at
com.sun.jersey.core.impl.provider.entity.FormProvider.readFrom(FormProvider.java:63)
    at
com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:391)
    at
com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:400)
    at
com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.processForm(FormDispatchProvider.java:76)
    at
com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider$FormParamInInvoker.getParams(FormDispatchProvider.java:91)
    at
com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider$TypeOutInvoker._dispatch(FormDispatchProvider.java:132)
    at
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)

Is there something I'm not understanding here? I should not that GET
requests are mapped to corresponding REST methods without a hitch.

I'm on Jersey 1.0.2 / Tomcat 6.0.18.

Thanks for any help.

Michael