users@jersey.java.net

Re: [Jersey] NullPointerException in GrizzlyOutputStream.write

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Tue, 04 May 2010 10:37:01 +0200

Hi Martin,

What version of grizzly are you using?

I have not seen this type of error before and need more information.

Can you send me a reproducible test case, preferably maven based?

Paul.

On May 4, 2010, at 9:42 AM, Martin Scholl wrote:

> Hi all,
>
> Recently I started to use Jersey for the purpose of adding a REST
> interface to our server application. I have implemented some
> operations of the server interface and a corresponding client part.
> Additionally I wrote some very short JUnit tests that use the client
> part to simply "see" whether the methods actually return stuff or
> cause some kind of exception. The weird thing is that all those
> tests succeed if they are run solely (putting an @Ignore flag at the
> other tests) but if the complete test class is run some of the
> service requests cause errors (or to be exact: If the error occurs
> once all further service requests will fail, too):
>
> May 4, 2010 9:28:51 AM com.sun.grizzly.http.servlet.ServletAdapter
> service
> SEVERE: service exception:
> java.lang.NullPointerException
> at
> com
> .sun
> .grizzly
> .tcp.http11.GrizzlyOutputStream.write(GrizzlyOutputStream.java:128)
> at
> com
> .sun
> .grizzly
> .http
> .servlet.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:
> 84)
> at com.sun.jersey.spi.container.servlet.WebComponent
> $Writer.write(WebComponent.java:276)
> at com.sun.jersey.spi.container.ContainerResponse
> $CommittingOutputStream.write(ContainerResponse.java:130)
> at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
> at
> sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)
> at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276)
> at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)
> at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:
> 212)
> at java.io.BufferedWriter.flush(BufferedWriter.java:236)
> at
> com
> .sun.jersey.core.util.ReaderWriter.writeToAsString(ReaderWriter.java:
> 178)
> at
> com
> .sun
> .jersey
> .core
> .provider
> .AbstractMessageReaderWriterProvider
> .writeToAsString(AbstractMessageReaderWriterProvider.java:125)
> at
> com
> .sun
> .jersey
> .core
> .impl.provider.entity.StringProvider.writeTo(StringProvider.java:85)
> at
> com
> .sun
> .jersey
> .core
> .impl.provider.entity.StringProvider.writeTo(StringProvider.java:57)
> at
> com
> .sun
> .jersey.spi.container.ContainerResponse.write(ContainerResponse.java:
> 289)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl._handleRequest(WebApplicationImpl.java:1029)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:941)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:932)
> at
> com
> .sun
> .jersey.spi.container.servlet.WebComponent.service(WebComponent.java:
> 384)
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:451)
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:632)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at
> com
> .sun
> .grizzly.http.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:
> 188)
> at
> com
> .sun
> .grizzly
> .http.servlet.FilterChainImpl.invokeFilterChain(FilterChainImpl.java:
> 137)
> at
> com
> .sun.grizzly.http.servlet.ServletAdapter.service(ServletAdapter.java:
> 278)
> at
> com
> .sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:
> 165)
> at
> com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:
> 726)
> at
> com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:615)
> at
> com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:895)
> at
> com
> .sun
> .grizzly
> .http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:162)
> at
> com
> .sun
> .grizzly
> .DefaultProtocolChain
> .executeProtocolFilter(DefaultProtocolChain.java:136)
> at
> com
> .sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:
> 103)
> at
> com
> .sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:
> 89)
> at
> com
> .sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
> at
> com
> .sun
> .grizzly
> .ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:67)
> at
> com
> .sun
> .grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
> at java.util.concurrent.FutureTask
> $Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 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:637)
>
> So the request is received correctly but when it comes to returning
> a response Grizzly somehow runs into this NPE.
>
> I started up the Grizzly server as described in the Jersey Tutorial.
> Will I have to fine-tune this initialization? Or is this error a
> result of an erroneous implementation of the server interface
> methods? Does anybody have a clue why this happens? Help is highly
> appreciated.
>
> Thanks in advance.
>
> Best regards.
>
> Martin
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>