Hi,

I stumbled upon a bug/NPE in the Aries JAX-RS Whiteboard. In order to see
it in action you can just open the example repo with steps to reproduce
this bug that I prepared in GitPod.

https://gitpod.io/#https://github.com/Sandared/osgi-pg/tree/jaxrs

Long version:

I'm currently trying to set up a simple JAX-RS Resource in OSGi.
All I did so far was adding a PUT endpoint that receives a "Traces" object,
and adding `org.apache.aries.jax.rs.jackson` to the project in order to be
able to serialize and deserialize JSON.
Each time I send a PUT request to my endpoint, I get this error response
back:

<ns1:XMLFault 
xmlns:ns1="http://cxf.apache.org/bindings/xformat";><ns1:faultstring
xmlns:ns1="http://cxf.apache.org/bindings/xformat";>java.lang.NullPointerException</ns1:faultstring></ns1:XMLFault>


The log of the JAX-RS Whiteboard shows a NPE:

java.nio.channels.ClosedChannelException: null
        at org.eclipse.jetty.io.WriteFlusher.onClose(WriteFlusher.java:502)
        at 
org.eclipse.jetty.io.AbstractEndPoint.onClose(AbstractEndPoint.java:353)
        at 
org.eclipse.jetty.io.ChannelEndPoint.onClose(ChannelEndPoint.java:216)
        at 
org.eclipse.jetty.io.AbstractEndPoint.doOnClose(AbstractEndPoint.java:225)
        at 
org.eclipse.jetty.io.AbstractEndPoint.close(AbstractEndPoint.java:192)
        at 
org.eclipse.jetty.io.AbstractEndPoint.close(AbstractEndPoint.java:175)
        at 
org.eclipse.jetty.io.AbstractConnection.close(AbstractConnection.java:248)
        at 
org.eclipse.jetty.server.HttpChannelOverHttp.earlyEOF(HttpChannelOverHttp.java:234)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1551)
        at 
org.eclipse.jetty.server.HttpConnection.parseRequestBuffer(HttpConnection.java:360)
        at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:250)
        at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
        at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
        at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
        at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
        at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
        at java.base/java.lang.Thread.run(Thread.java:834)


The endpoint looks like this:

@Component(service =
ComponentImpl.class)@JaxrsResource@JSONRequiredpublic class
ComponentImpl {

    @Path("/v0.4/traces")
    @PUT
    @Consumes(MediaType.APPLICATION_JSON)
    public void receiveTraces(List<List<Trace>> traces) {
        System.out.println("recieveTraces was called, traces were " + traces);
    }
    }

My bundles look like this:

lb
START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|OSGi System Bundle
(3.13.100.v20180827-1536)|3.13.100.v20180827-1536
    1|Active     |    1|Logback Classic Module (1.2.3)|1.2.3
    2|Active     |    1|Logback Core Module (1.2.3)|1.2.3
    3|Active     |    1|jaxb-api (2.2.11)|2.2.11
    4|Active     |    1|Apache Aries JAX-RS Specification API (1.0.0)|1.0.0
    5|Active     |    1|Apache Aries JAX-RS Whiteboard (1.0.1)|1.0.1
    6|Active     |    1|Apache Commons FileUpload (1.3.3)|1.3.3
    7|Active     |    1|Apache Commons IO (2.6.0)|2.6.0
    8|Active     |    1|Apache Felix Configuration Admin Service (1.9.8)|1.9.8
    9|Active     |    1|Apache Felix Gogo Command (1.0.2)|1.0.2
   10|Active     |    1|Apache Felix Gogo Runtime (1.0.10)|1.0.10
   11|Active     |    1|Apache Felix Gogo Shell (1.0.0)|1.0.0
   12|Active     |    1|Apache Felix Http Jetty (4.0.6)|4.0.6
   13|Active     |    1|Apache Felix Servlet API (1.1.2)|1.1.2
   14|Active     |    1|Apache Felix Inventory (1.0.4)|1.0.4
   15|Active     |    1|Apache Felix Declarative Services (2.1.10)|2.1.10
   16|Active     |    1|Apache Felix Web Management Console (4.3.4)|4.3.4
   17|Active     |    1|Apache Felix Web Console Service Component
Runtime/Declarative Services Plugin (2.0.8)|2.0.8
   18|Active     |    1|Apache ServiceMix :: Specs :: Activation API
1.4 (2.9.0)|2.9.0
   19|Active     |    1|Apache ServiceMix :: Specs :: Annotation API
1.3 (1.3.0.1)|1.3.0.1
   20|Active     |    1|Apache ServiceMix :: Specs :: JAXWS API 2.2
(2.9.0)|2.9.0
   21|Active     |    1|Apache ServiceMix :: Specs :: SAAJ API 1.3 (2.9.0)|2.9.0
   22|Active     |    1|org.osgi:org.osgi.service.jaxrs
(1.0.0.201802012106)|1.0.0.201802012106
   23|Active     |    1|org.osgi:org.osgi.util.function
(1.1.0.201802012106)|1.1.0.201802012106
   24|Active     |    1|org.osgi:org.osgi.util.promise
(1.1.0.201802012106)|1.1.0.201802012106
   25|Active     |    1|slf4j-api (1.7.25)|1.7.25
   26|Active     |    1|processagent.app (1.0.0.202001101124)|1.0.0.202001101124
   27|Active     |    1|processagent.impl
(1.0.0.202001101124)|1.0.0.202001101124
   28|Active     |    1|Byte Buddy agent (1.10.6)|1.10.6
   29|Active     |    1|Apache Felix Configurator Service (1.0.6)|1.0.6
   30|Active     |    1|Apache ServiceMix :: Specs :: JSon API 1.1 (2.9.0)|2.9.0
   31|Active     |    1|org.osgi:org.osgi.util.converter
(1.0.0.201802012108)|1.0.0.201802012108
   32|Active     |    1|Jackson-annotations (2.9.0)|2.9.0
   33|Active     |    1|Jackson-core (2.9.6)|2.9.6
   34|Active     |    1|jackson-databind (2.9.6)|2.9.6
   35|Active     |    1|Jackson-JAXRS-base (2.9.6)|2.9.6
   36|Active     |    1|Jackson-JAXRS-JSON (2.9.6)|2.9.6
   37|Active     |    1|Jackson module: JAXB Annotations (2.9.6)|2.9.6
   38|Active     |    1|Apache Aries JAX-RS JAX-RS Jackson (1.0.2)|1.0.2


Any suggestions what I'm doing wrong?

Kind regards,
Thomas

Reply via email to