Think this json api doesnt use yet providerlocator but should Le 24 nov. 2016 00:07, "Mark Struberg" <[email protected]> a écrit :
> Hi Robert! > > I guess our lookup code does pretty much the same like with every other > Geronimo spec. > > We first try to pickup a JsonProvider via the ServiceLoader mechanism. Of > course that means that META-INF/services/javax.json.spi.JsonProvider > needs to be 'visible' via OSGi tricks. > If we don't find that then we try to load the hardcoded default provider > which is > DEFAULT_PROVIDER = "org.apache.johnzon.core.JsonProviderImpl"; > I assume since we do not OSGi-import johnzon in the > geronimo-json_1.1-spec.jar, we also don't see the JsonProviderImpl from > Johnzon from the spec jar? > I'm not really deep into OSGi, but I assume Romain can help you. > > LieGrue, > strub > > > > > Am 23.11.2016 um 23:37 schrieb Robert Munteanu <[email protected]>: > > > > Hi, > > > > I noticed that Johnzon has OSGi headers, which is nice :-) > > > > I am trying to setup Johnzon in a minimal OSGi container. I have a > > bundle which performs a very simple JSON rendering: > > > > try ( JsonGenerator g = > > Json.createGenerator(resp.getOutputStream())) { > > resp.setContentType("application/json"); > > g.writeStartObject() > > .write("enabled", routerAdmin.isWlanEnabled() ) > > .writeEnd(); > > } catch (AuthException e) { > > resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR > > ); > > } > > > > I am deploying the following bundles to my container: > > > > - Johnzon :: Core (0.9.4) - org.apache.johnzon:johnzon-core:0.9.4 > > - Apache Geronimo JSon Spec 1.0 (1.0.0.alpha-1) - > > org.apache.geronimo.specs:geronimo-json_1.0_spec:1.0-alpha-1 > > > > The code fails with > > > > javax.json.JsonException: org.apache.johnzon.core.JsonProviderImpl > > not found > > > > (full stack trace at the end ). > > > > My question is - is this a supported scenario? Looking at the bundle > > headers I don't see how the wiring could happen between these the JSON > > API and Johnzon Core bundles, as they know nothing about each other. > > > > (Please keep me in CC, I am not subscribed). > > > > Thanks, > > > > Robert > > > > javax.json.JsonException: org.apache.johnzon.core.JsonProviderImpl not > > found > > at > > javax.json.spi.JsonProvider.doLoadProvider(JsonProvider.java:132) > > at javax.json.spi.JsonProvider.provider(JsonProvider.java:64) > > at javax.json.Json.createGenerator(Json.java:48) > > at > > ro.lmn.routeradmin.web.impl.AdminServlet.doGet(AdminServlet.java:33) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:618) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) > > at > > org.apache.felix.http.base.internal.handler.ServletHandler.handle(Servl > > etHandler.java:85) > > at > > org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(I > > nvocationChain.java:79) > > at > > org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispat > > cher.java:124) > > at > > org.apache.felix.http.base.internal.DispatcherServlet.service(Dispatche > > rServlet.java:61) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) > > at > > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) > > at > > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:5 > > 83) > > at > > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler > > .java:224) > > at > > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler > > .java:1174) > > at > > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:51 > > 1) > > at > > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler. > > java:185) > > at > > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler. > > java:1106) > > at > > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.jav > > a:141) > > at > > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(Contex > > tHandlerCollection.java:213) > > at > > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.j > > ava:134) > > at org.eclipse.jetty.server.Server.handle(Server.java:524) > > at > > org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319) > > at > > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java: > > 253) > > at > > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(Abstract > > Connection.java:273) > > at > > org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) > > at > > org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint. > > java:93) > > at > > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executePro > > duceConsume(ExecuteProduceConsume.java:303) > > at > > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceCon > > sume(ExecuteProduceConsume.java:148) > > at > > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(Execut > > eProduceConsume.java:136) > > at > > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool. > > java:671) > > at > > org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.j > > ava:589) > > at java.lang.Thread.run(Thread.java:745) > > Caused by: java.lang.ClassNotFoundException: > > org.apache.johnzon.core.JsonProviderImpl > > at java.net.URLClassLoader.findClass(URLClassLoader.java:381) > > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) > > at > > sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) > > at java.lang.ClassLoader.loadClass(ClassLoader.java:357) > > at > > javax.json.spi.JsonProvider.doLoadProvider(JsonProvider.java:129) > > ... 32 more > >
