Hi Thomas,
I would put my money in List<List<Trace>> is not being properly
deserialized and thus you get a null traces object reference.
Could you please also paste what request are you making to the endpoint?
Carlos.
El 10/1/20 a las 13:27, Thomas Driessen escribió:
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
@JSONRequired
public 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