users@jersey.java.net

Re: [Jersey] RESTful using jetty fails when called used "multi curl" from a PHP script

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Thu, 05 Nov 2009 10:16:38 +0100

Hi,

The cause is a:

Caused by: java.net.SocketTimeoutException: Read timed out
         at java.net.SocketInputStream.socketRead0(Native Method)
         at java.net.SocketInputStream.read(SocketInputStream.java:129)
         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 org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:
621)
         at
org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:559)
         at
org.apache.jk.common.JkInputStream.receive(JkInputStream.java:200)
         at
org.apache.jk.common.JkInputStream.doRead(JkInputStream.java:179)
         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:372)
         at
org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:317)
         at
org
.apache
.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
         at org.apache.xerces.impl.XMLEntityManager
$RewindableInputStream.read(Unknown Source)
         at
org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown
Source)
         at
org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown
Source)
         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
         at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown
Source)
         at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
         at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
Source)
         at
com
.sun
.xml
.bind
.v2
.runtime
.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211)
         ... 38 more

that is occurring when Jersey is using JAXB to unmarshall an XML
document, and specifically suggests the exception is thrown when
attempting to read the first byte of the request entity.

I do not think this is a Jersey issue and may be a configuration issue
with your setup.

Perhaps there is some blocking going on when concurrent requests are
being executed that makes one request block when reading until another
request/response has finished, and sometimes the blocked request times
out.

Paul.

On Nov 5, 2009, at 3:01 AM, Subbu wrote:

> Hi,
>
> We have an RESTful URI implemented in jetty. Now a consumer is
> trying to access RESTful using from a PHP script.
>
> Everything works fine when request are executed in sequence calls to
> RESTful URI ( hosted on Apache (connected using jk_mod) + Tomcat +
> Jetty) request - response working fine, Things start failing when we
> switch to multiple curl calls.
>
>
> Find stack trace
>
> tContainerFilter - ServletContainerFilter:ServletException:
> doFilter: ServletException in processing.
> 166098280 [TP-Processor1] ERROR
> com.myschool.profile.restful.servlet.filter.ServletContainerFilter
> - ServletContainerFilter:ServletException: doFilter:
> ServletException in processing.
> javax.servlet.ServletException:
> com.sun.jersey.api.container.ContainerException: Exception injecting
> parameters to Web resource method
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:346)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:
> 717)
> at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 290)
> at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> com
> .myschool
> .profile
> .restful
> .servlet
> .filter.ServletContainerFilter.doFilter(ServletContainerFilter.java:
> 165)
> at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
> at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org
> .apache
> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
> 233)
> at
> org
> .apache
> .catalina.core.StandardContextValve.invoke(StandardContextValve.java:
> 191)
> at
> org
> .apache
> .catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at
> org
> .apache
> .catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at
> org
> .apache
> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
> 109)
> at
> org
> .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
> 293)
> at
> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
> at
> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
> at
> org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
> at
> org
> .apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:
> 698)
> at org.apache.jk.common.ChannelSocket
> $SocketConnection.runIt(ChannelSocket.java:891)
> at org.apache.tomcat.util.threads.ThreadPool
> $ControlRunnable.run(ThreadPool.java:690)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: com.sun.jersey.api.container.ContainerException:
> Exception injecting parameters to Web resource method
> at
> com.sun.jersey.impl.model.method.dispatch.EntityParamDispatchProvider
> $EntityParamInInvoker.getParams(EntityParamDispatchProvider.java:105)
> at
> com.sun.jersey.impl.model.method.dispatch.EntityParamDispatchProvider
> $TypeOutInvoker._dispatch(EntityParamDispatchProvider.java:134)
> at
> com
> .sun
> .jersey
> .impl
> .model
> .method
> .dispatch
> .ResourceJavaMethodDispatcher
> .dispatch(ResourceJavaMethodDispatcher.java:85)
> at
> com
> .sun.jersey.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:
> 123)
> at
> com
> .sun.jersey.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:
> 88)
> at
> com
> .sun
> .jersey
> .impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
> at
> com
> .sun
> .jersey
> .impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71)
> at
> com
> .sun
> .jersey
> .impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
> at
> com
> .sun
> .jersey
> .impl
> .uri
> .rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:63)
> at
> com
> .sun
> .jersey
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:722)
> at
> com
> .sun
> .jersey
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:692)
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:344)
> ... 19 more
> Caused by: java.lang.IllegalArgumentException: java.io.IOException:
> Error unmarshalling JAXB object of type "class
> com.myschool.profile.restful.converter.RequestConverter".
> at
> com
> .sun
> .jersey
> .spi.container.ContainerRequest.getEntity(ContainerRequest.java:350)
> at
> com.sun.jersey.impl.model.method.dispatch.EntityParamDispatchProvider
> $EntityInjectable.getValue(EntityParamDispatchProvider.java:81)
> at
> com.sun.jersey.impl.model.method.dispatch.EntityParamDispatchProvider
> $EntityParamInInvoker.getParams(EntityParamDispatchProvider.java:99)
> ... 30 more
> Caused by: java.io.IOException: Error unmarshalling JAXB object of
> type "class com.myschool.profile.restful.converter.RequestConverter".
> at
> com
> .sun
> .jersey
> .impl
> .provider
> .entity
> .AbstractRootElementProvider
> .readFrom(AbstractRootElementProvider.java:91)
> at
> com
> .sun
> .jersey
> .spi.container.ContainerRequest.getEntity(ContainerRequest.java:348)
> ... 32 more
> Caused by: javax.xml.bind.UnmarshalException
> - with linked exception:
> [java.net.SocketTimeoutException: Read timed out]
> at
> com
> .sun
> .xml
> .bind
> .v2
> .runtime
> .unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:213)
> at
> com
> .sun
> .xml
> .bind
> .v2
> .runtime
> .unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184)
> at
> javax
> .xml
> .bind
> .helpers
> .AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
> at
> javax
> .xml
> .bind
> .helpers
> .AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:184)
> at
> com
> .sun
> .jersey
> .impl
> .provider
> .entity.XMLRootElementProvider.readFrom(XMLRootElementProvider.java:
> 92)
> at
> com
> .sun
> .jersey
> .impl
> .provider
> .entity
> .AbstractRootElementProvider
> .readFrom(AbstractRootElementProvider.java:89)
> ... 33 more
> Caused by: java.net.SocketTimeoutException: Read timed out
> at java.net.SocketInputStream.socketRead0(Native Method)
> at java.net.SocketInputStream.read(SocketInputStream.java:129)
> 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
> org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:621)
> at
> org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:559)
> at
> org.apache.jk.common.JkInputStream.receive(JkInputStream.java:200)
> at
> org.apache.jk.common.JkInputStream.doRead(JkInputStream.java:179)
> 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:372)
> at
> org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:
> 317)
> at
> org
> .apache
> .catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
> at org.apache.xerces.impl.XMLEntityManager
> $RewindableInputStream.read(Unknown Source)
> at
> org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown
> Source)
> at
> org
> .apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown
> Source)
> at
> org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown
> Source)
> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
> Source)
> at
> com
> .sun
> .xml
> .bind
> .v2
> .runtime
> .unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211)
> ... 38 more
>
>
> Thanks,
> Subbu
>
>
>
>
>
> --
>
> Mike Ditka - "If God had wanted man to play soccer, he wouldn't
> have given us arms."