Hi,
  I do release my resources in a interceptor. Just when error happens when
releasing resources in my intereceptor, I like to construct my response.
But since the intereceptor is after jaxrs, I cannot access jaxrs api but
servlet api. So I construct my response with HttpServletResponse directly.
How do I construct my response in a more cxf-friendly way?
I try to use message.setContent(Response.class, ...) but it does not work.

On Sun, May 15, 2016 at 10:13 PM, Andrei Shakirin <[email protected]>
wrote:

> Hi Rice,
>
> The error said that you try to use Jetty Response in Writer mode
> (getWriter()), although it was originally opened in stream mode
> (getOutputStream()).
> Generally I am not sure that setting headers and content directly in
> Response is a good idea - this makes your code fragile and dependent on
> internal CXF implementation.
>
> Why don't release your resources in JX-RS Filter (
> http://cxf.apache.org/docs/jax-rs-filters.html) or Interceptor (
> http://cxf.apache.org/docs/jax-rs-basics.html#JAX-RSBasics-Interceptors)?
>
> Regards,
> Andrei.
>
> > -----Original Message-----
> > From: Rice Yeh [mailto:[email protected]]
> > Sent: Samstag, 14. Mai 2016 09:48
> > To: [email protected]
> > Subject: Error handling in out interceptor in jaxrs
> >
> > Hi,
> >   I write a outward interceptor and put it after JAXRSOutInterceptor to
> clean
> > up some resouces. When cleaning up the resources, there might be some
> > exceptions happening. Then I directly set the HttpServletResponse's
> headers
> > and content to send back an appropriate response. This works even there
> is
> > a IllegalStateException thrown when later cxf's jaxrs implementation try
> flush
> > http headers to the HttpServletResponse like below. Any more appropriate
> > way to achieve my goal without this exception?
> >
> > 2016-05-13T16:58:36.514 [qtp1980982961-89] WARN
> > o.a.cxf.phase.PhaseInterceptorChain - Interceptor for {
> > http://rs.security.xs/}Resource has thrown exception, unwinding now
> >
> > java.lang.IllegalStateException: WRITER
> >
> > at org.eclipse.jetty.server.Response.getOutputStream(Response.java:906)
> > ~[na:na]
> >
> > at
> > org.apache.cxf.transport.http.AbstractHTTPDestination.flushHeaders(Abstra
> > ctHTTPDestination.java:585)
> > [cxf-rt-transports-http-2.7.11.jar:2.7.11]
> >
> > at
> > org.apache.cxf.transport.http.AbstractHTTPDestination$WrappedOutputStre
> > am.close(AbstractHTTPDestination.java:743)
> > ~[cxf-rt-transports-http-2.7.11.jar:2.7.11]
>

Reply via email to