You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Benson Margulies <bi...@gmail.com> on 2011/11/13 02:12:13 UTC

Exception provider registration apparently ineffectual

I seem to have run into a problem with exception providers in 2.5.0.
Am I confused? Should I file a JIRA?

In my context XML:

   <jaxrs:server id="services" address="/">
     <jaxrs:inInterceptors>
     <ref bean="logInbound"/>
    </jaxrs:inInterceptors>
    <jaxrs:serviceBeans>
      <ref bean="document-service-impl" />
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
        <bean class="com.basistech.rlp.ws.EofExceptionProvider"/>
    </jaxrs:providers>
    </jaxrs:server>

Yet:

2011-11-12 20:09:24,435 ["http-bio-15000"-exec-1] ERROR
org.apache.cxf.jaxrs.utils.JAXRSUtils - Error deserializing input
stream into target class PlainTextInputOptions, content type :
application/json
2011-11-12 20:09:24,437 ["http-bio-15000"-exec-1] WARN
org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper -
WebApplicationException has been caught : No content to map to Object
due to end of input
2011-11-12 20:09:24,438 ["http-bio-15000"-exec-1] DEBUG
org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper - No content
to map to Object due to end of input
javax.ws.rs.WebApplicationException: java.io.EOFException: No content
to map to Object due to end of input
	at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1040)
	at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:612)
	at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:577)
	at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
	at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123)
	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:206)
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:126)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:184)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:112)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:163)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Caused by: java.io.EOFException: No content to map to Object due to end of input
	at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2437)
	at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2370)
	at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1166)
	at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:410)
	at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1032)
	... 30 more

Re: Exception provider registration apparently ineffectual

Posted by Sergey Beryozkin <sb...@gmail.com>.
OK, I'll have a look, thanks

Sergey

On 14/11/11 19:07, Benson Margulies wrote:
> I hit other problems on trunk that I filed in a JIRA.
>
> On Mon, Nov 14, 2011 at 12:06 PM, Sergey Beryozkin<sb...@gmail.com>  wrote:
>> Hi Benson
>>
>> On 14/11/11 15:33, Benson Margulies wrote:
>>>
>>> Sergey,
>>>
>>> I'm going to build you a testcase for this
>>
>> I hope it is sorted out now, I was not really sure though how to update a
>> Jackson based test to reproduce this issue, please try the trunk snapshot
>> when you get a chance; I just updated the code to check for mappers before
>> wrapping IOExceptions, so it should fix it
>>
>>> and my 'disappearing JSON'
>>> mystery.
>>
>> Please do, thanks
>> Sergey
>>
>>> But I got distracted by building an archetype for JAX-RS
>>> first. So it will be another day or two.
>>>
>>> --benson
>>>
>>>
>>> On Mon, Nov 14, 2011 at 4:36 AM, Sergey Beryozkin<sb...@gmail.com>
>>>   wrote:
>>>>
>>>> I think it is a bug, as at the moment all the exceptions thrown from
>>>> MessageBodyReaders are wrapped in WebApplicationException, without giving
>>>> a
>>>> chance to custom IOException handlers, I think we had a similar query
>>>> recently...
>>>>
>>>> You can provide your own WebApplicationException mapper and get to the
>>>> cause
>>>> of it in that mapper, but I agree that a fix is needed anyway,
>>>>
>>>> Sergey
>>>>
>>>> On 13/11/11 01:12, Benson Margulies wrote:
>>>>>
>>>>> I seem to have run into a problem with exception providers in 2.5.0.
>>>>> Am I confused? Should I file a JIRA?
>>>>>
>>>>> In my context XML:
>>>>>
>>>>>     <jaxrs:server id="services" address="/">
>>>>>       <jaxrs:inInterceptors>
>>>>>       <ref bean="logInbound"/>
>>>>>      </jaxrs:inInterceptors>
>>>>>      <jaxrs:serviceBeans>
>>>>>        <ref bean="document-service-impl" />
>>>>>      </jaxrs:serviceBeans>
>>>>>      <jaxrs:providers>
>>>>>          <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
>>>>>          <bean class="com.basistech.rlp.ws.EofExceptionProvider"/>
>>>>>      </jaxrs:providers>
>>>>>      </jaxrs:server>
>>>>>
>>>>> Yet:
>>>>>
>>>>> 2011-11-12 20:09:24,435 ["http-bio-15000"-exec-1] ERROR
>>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils - Error deserializing input
>>>>> stream into target class PlainTextInputOptions, content type :
>>>>> application/json
>>>>> 2011-11-12 20:09:24,437 ["http-bio-15000"-exec-1] WARN
>>>>> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper -
>>>>> WebApplicationException has been caught : No content to map to Object
>>>>> due to end of input
>>>>> 2011-11-12 20:09:24,438 ["http-bio-15000"-exec-1] DEBUG
>>>>> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper - No content
>>>>> to map to Object due to end of input
>>>>> javax.ws.rs.WebApplicationException: java.io.EOFException: No content
>>>>> to map to Object due to end of input
>>>>>         at
>>>>>
>>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1040)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:612)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:577)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:206)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:126)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:184)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:112)
>>>>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:163)
>>>>>         at
>>>>>
>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>>>>>         at
>>>>>
>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>>>         at
>>>>>
>>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
>>>>>         at
>>>>>
>>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
>>>>>         at
>>>>>
>>>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
>>>>>         at
>>>>>
>>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
>>>>>         at
>>>>>
>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>>>>         at
>>>>>
>>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>>>         at
>>>>>
>>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
>>>>>         at
>>>>>
>>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
>>>>>         at
>>>>>
>>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
>>>>>         at
>>>>>
>>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
>>>>>         at
>>>>>
>>>>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
>>>>>         at
>>>>>
>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>>         at
>>>>>
>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>>         at java.lang.Thread.run(Thread.java:680)
>>>>> Caused by: java.io.EOFException: No content to map to Object due to end
>>>>> of
>>>>> input
>>>>>         at
>>>>>
>>>>> org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2437)
>>>>>         at
>>>>> org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2370)
>>>>>         at
>>>>> org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1166)
>>>>>         at
>>>>>
>>>>> org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:410)
>>>>>         at
>>>>>
>>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1032)
>>>>>         ... 30 more
>>>>
>>>>
>>
>>


Re: Exception provider registration apparently ineffectual

Posted by Benson Margulies <bi...@gmail.com>.
I hit other problems on trunk that I filed in a JIRA.

On Mon, Nov 14, 2011 at 12:06 PM, Sergey Beryozkin <sb...@gmail.com> wrote:
> Hi Benson
>
> On 14/11/11 15:33, Benson Margulies wrote:
>>
>> Sergey,
>>
>> I'm going to build you a testcase for this
>
> I hope it is sorted out now, I was not really sure though how to update a
> Jackson based test to reproduce this issue, please try the trunk snapshot
> when you get a chance; I just updated the code to check for mappers before
> wrapping IOExceptions, so it should fix it
>
>> and my 'disappearing JSON'
>> mystery.
>
> Please do, thanks
> Sergey
>
>> But I got distracted by building an archetype for JAX-RS
>> first. So it will be another day or two.
>>
>> --benson
>>
>>
>> On Mon, Nov 14, 2011 at 4:36 AM, Sergey Beryozkin<sb...@gmail.com>
>>  wrote:
>>>
>>> I think it is a bug, as at the moment all the exceptions thrown from
>>> MessageBodyReaders are wrapped in WebApplicationException, without giving
>>> a
>>> chance to custom IOException handlers, I think we had a similar query
>>> recently...
>>>
>>> You can provide your own WebApplicationException mapper and get to the
>>> cause
>>> of it in that mapper, but I agree that a fix is needed anyway,
>>>
>>> Sergey
>>>
>>> On 13/11/11 01:12, Benson Margulies wrote:
>>>>
>>>> I seem to have run into a problem with exception providers in 2.5.0.
>>>> Am I confused? Should I file a JIRA?
>>>>
>>>> In my context XML:
>>>>
>>>>    <jaxrs:server id="services" address="/">
>>>>      <jaxrs:inInterceptors>
>>>>      <ref bean="logInbound"/>
>>>>     </jaxrs:inInterceptors>
>>>>     <jaxrs:serviceBeans>
>>>>       <ref bean="document-service-impl" />
>>>>     </jaxrs:serviceBeans>
>>>>     <jaxrs:providers>
>>>>         <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
>>>>         <bean class="com.basistech.rlp.ws.EofExceptionProvider"/>
>>>>     </jaxrs:providers>
>>>>     </jaxrs:server>
>>>>
>>>> Yet:
>>>>
>>>> 2011-11-12 20:09:24,435 ["http-bio-15000"-exec-1] ERROR
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils - Error deserializing input
>>>> stream into target class PlainTextInputOptions, content type :
>>>> application/json
>>>> 2011-11-12 20:09:24,437 ["http-bio-15000"-exec-1] WARN
>>>> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper -
>>>> WebApplicationException has been caught : No content to map to Object
>>>> due to end of input
>>>> 2011-11-12 20:09:24,438 ["http-bio-15000"-exec-1] DEBUG
>>>> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper - No content
>>>> to map to Object due to end of input
>>>> javax.ws.rs.WebApplicationException: java.io.EOFException: No content
>>>> to map to Object due to end of input
>>>>        at
>>>>
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1040)
>>>>        at
>>>>
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:612)
>>>>        at
>>>>
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:577)
>>>>        at
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
>>>>        at
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
>>>>        at
>>>>
>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
>>>>        at
>>>>
>>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123)
>>>>        at
>>>>
>>>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:206)
>>>>        at
>>>>
>>>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
>>>>        at
>>>>
>>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
>>>>        at
>>>>
>>>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:126)
>>>>        at
>>>>
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:184)
>>>>        at
>>>>
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:112)
>>>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>>>>        at
>>>>
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:163)
>>>>        at
>>>>
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>>>>        at
>>>>
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>>        at
>>>>
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
>>>>        at
>>>>
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
>>>>        at
>>>>
>>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
>>>>        at
>>>>
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
>>>>        at
>>>>
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>>>        at
>>>>
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>>        at
>>>>
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
>>>>        at
>>>>
>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
>>>>        at
>>>>
>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
>>>>        at
>>>>
>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
>>>>        at
>>>>
>>>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
>>>>        at
>>>>
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>        at
>>>>
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>        at java.lang.Thread.run(Thread.java:680)
>>>> Caused by: java.io.EOFException: No content to map to Object due to end
>>>> of
>>>> input
>>>>        at
>>>>
>>>> org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2437)
>>>>        at
>>>> org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2370)
>>>>        at
>>>> org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1166)
>>>>        at
>>>>
>>>> org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:410)
>>>>        at
>>>>
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1032)
>>>>        ... 30 more
>>>
>>>
>
>

Re: Exception provider registration apparently ineffectual

Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Benson

On 14/11/11 15:33, Benson Margulies wrote:
> Sergey,
>
> I'm going to build you a testcase for this

I hope it is sorted out now, I was not really sure though how to update 
a Jackson based test to reproduce this issue, please try the trunk 
snapshot when you get a chance; I just updated the code to check for 
mappers before wrapping IOExceptions, so it should fix it

> and my 'disappearing JSON'
> mystery.

Please do, thanks
Sergey

> But I got distracted by building an archetype for JAX-RS
> first. So it will be another day or two.
>
> --benson
>
>
> On Mon, Nov 14, 2011 at 4:36 AM, Sergey Beryozkin<sb...@gmail.com>  wrote:
>> I think it is a bug, as at the moment all the exceptions thrown from
>> MessageBodyReaders are wrapped in WebApplicationException, without giving a
>> chance to custom IOException handlers, I think we had a similar query
>> recently...
>>
>> You can provide your own WebApplicationException mapper and get to the cause
>> of it in that mapper, but I agree that a fix is needed anyway,
>>
>> Sergey
>>
>> On 13/11/11 01:12, Benson Margulies wrote:
>>>
>>> I seem to have run into a problem with exception providers in 2.5.0.
>>> Am I confused? Should I file a JIRA?
>>>
>>> In my context XML:
>>>
>>>     <jaxrs:server id="services" address="/">
>>>       <jaxrs:inInterceptors>
>>>       <ref bean="logInbound"/>
>>>      </jaxrs:inInterceptors>
>>>      <jaxrs:serviceBeans>
>>>        <ref bean="document-service-impl" />
>>>      </jaxrs:serviceBeans>
>>>      <jaxrs:providers>
>>>          <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
>>>          <bean class="com.basistech.rlp.ws.EofExceptionProvider"/>
>>>      </jaxrs:providers>
>>>      </jaxrs:server>
>>>
>>> Yet:
>>>
>>> 2011-11-12 20:09:24,435 ["http-bio-15000"-exec-1] ERROR
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils - Error deserializing input
>>> stream into target class PlainTextInputOptions, content type :
>>> application/json
>>> 2011-11-12 20:09:24,437 ["http-bio-15000"-exec-1] WARN
>>> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper -
>>> WebApplicationException has been caught : No content to map to Object
>>> due to end of input
>>> 2011-11-12 20:09:24,438 ["http-bio-15000"-exec-1] DEBUG
>>> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper - No content
>>> to map to Object due to end of input
>>> javax.ws.rs.WebApplicationException: java.io.EOFException: No content
>>> to map to Object due to end of input
>>>         at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1040)
>>>         at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:612)
>>>         at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:577)
>>>         at
>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
>>>         at
>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
>>>         at
>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
>>>         at
>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123)
>>>         at
>>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:206)
>>>         at
>>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
>>>         at
>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
>>>         at
>>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:126)
>>>         at
>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:184)
>>>         at
>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:112)
>>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>>>         at
>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:163)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>>>         at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>         at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
>>>         at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
>>>         at
>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
>>>         at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
>>>         at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>>         at
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>         at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
>>>         at
>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
>>>         at
>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
>>>         at
>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
>>>         at
>>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>         at java.lang.Thread.run(Thread.java:680)
>>> Caused by: java.io.EOFException: No content to map to Object due to end of
>>> input
>>>         at
>>> org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2437)
>>>         at
>>> org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2370)
>>>         at
>>> org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1166)
>>>         at
>>> org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:410)
>>>         at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1032)
>>>         ... 30 more
>>
>>


Re: Exception provider registration apparently ineffectual

Posted by Benson Margulies <bi...@gmail.com>.
Sergey,

I'm going to build you a testcase for this and my 'disappearing JSON'
mystery. But I got distracted by building an archetype for JAX-RS
first. So it will be another day or two.

--benson


On Mon, Nov 14, 2011 at 4:36 AM, Sergey Beryozkin <sb...@gmail.com> wrote:
> I think it is a bug, as at the moment all the exceptions thrown from
> MessageBodyReaders are wrapped in WebApplicationException, without giving a
> chance to custom IOException handlers, I think we had a similar query
> recently...
>
> You can provide your own WebApplicationException mapper and get to the cause
> of it in that mapper, but I agree that a fix is needed anyway,
>
> Sergey
>
> On 13/11/11 01:12, Benson Margulies wrote:
>>
>> I seem to have run into a problem with exception providers in 2.5.0.
>> Am I confused? Should I file a JIRA?
>>
>> In my context XML:
>>
>>    <jaxrs:server id="services" address="/">
>>      <jaxrs:inInterceptors>
>>      <ref bean="logInbound"/>
>>     </jaxrs:inInterceptors>
>>     <jaxrs:serviceBeans>
>>       <ref bean="document-service-impl" />
>>     </jaxrs:serviceBeans>
>>     <jaxrs:providers>
>>         <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
>>         <bean class="com.basistech.rlp.ws.EofExceptionProvider"/>
>>     </jaxrs:providers>
>>     </jaxrs:server>
>>
>> Yet:
>>
>> 2011-11-12 20:09:24,435 ["http-bio-15000"-exec-1] ERROR
>> org.apache.cxf.jaxrs.utils.JAXRSUtils - Error deserializing input
>> stream into target class PlainTextInputOptions, content type :
>> application/json
>> 2011-11-12 20:09:24,437 ["http-bio-15000"-exec-1] WARN
>> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper -
>> WebApplicationException has been caught : No content to map to Object
>> due to end of input
>> 2011-11-12 20:09:24,438 ["http-bio-15000"-exec-1] DEBUG
>> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper - No content
>> to map to Object due to end of input
>> javax.ws.rs.WebApplicationException: java.io.EOFException: No content
>> to map to Object due to end of input
>>        at
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1040)
>>        at
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:612)
>>        at
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:577)
>>        at
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
>>        at
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
>>        at
>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
>>        at
>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123)
>>        at
>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:206)
>>        at
>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
>>        at
>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
>>        at
>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:126)
>>        at
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:184)
>>        at
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:112)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>>        at
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:163)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>        at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
>>        at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
>>        at
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
>>        at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
>>        at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>        at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>        at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
>>        at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
>>        at
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
>>        at
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
>>        at
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>        at java.lang.Thread.run(Thread.java:680)
>> Caused by: java.io.EOFException: No content to map to Object due to end of
>> input
>>        at
>> org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2437)
>>        at
>> org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2370)
>>        at
>> org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1166)
>>        at
>> org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:410)
>>        at
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1032)
>>        ... 30 more
>
>

Re: Exception provider registration apparently ineffectual

Posted by Sergey Beryozkin <sb...@gmail.com>.
I think it is a bug, as at the moment all the exceptions thrown from 
MessageBodyReaders are wrapped in WebApplicationException, without 
giving a chance to custom IOException handlers, I think we had a similar 
query recently...

You can provide your own WebApplicationException mapper and get to the 
cause of it in that mapper, but I agree that a fix is needed anyway,

Sergey

On 13/11/11 01:12, Benson Margulies wrote:
> I seem to have run into a problem with exception providers in 2.5.0.
> Am I confused? Should I file a JIRA?
>
> In my context XML:
>
>     <jaxrs:server id="services" address="/">
>       <jaxrs:inInterceptors>
>       <ref bean="logInbound"/>
>      </jaxrs:inInterceptors>
>      <jaxrs:serviceBeans>
>        <ref bean="document-service-impl" />
>      </jaxrs:serviceBeans>
>      <jaxrs:providers>
>          <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
>          <bean class="com.basistech.rlp.ws.EofExceptionProvider"/>
>      </jaxrs:providers>
>      </jaxrs:server>
>
> Yet:
>
> 2011-11-12 20:09:24,435 ["http-bio-15000"-exec-1] ERROR
> org.apache.cxf.jaxrs.utils.JAXRSUtils - Error deserializing input
> stream into target class PlainTextInputOptions, content type :
> application/json
> 2011-11-12 20:09:24,437 ["http-bio-15000"-exec-1] WARN
> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper -
> WebApplicationException has been caught : No content to map to Object
> due to end of input
> 2011-11-12 20:09:24,438 ["http-bio-15000"-exec-1] DEBUG
> org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper - No content
> to map to Object due to end of input
> javax.ws.rs.WebApplicationException: java.io.EOFException: No content
> to map to Object due to end of input
> 	at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1040)
> 	at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:612)
> 	at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:577)
> 	at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:236)
> 	at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
> 	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123)
> 	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:206)
> 	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
> 	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
> 	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:126)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:184)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:112)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:163)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
> 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
> 	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:680)
> Caused by: java.io.EOFException: No content to map to Object due to end of input
> 	at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2437)
> 	at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2370)
> 	at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1166)
> 	at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:410)
> 	at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1032)
> 	... 30 more