Hi, May be you are missing the JAX_RS_SERVICE_ENDPOINT, there is a description in the specification :
https://osgi.org/specification/osgi.cmpn/7.0.0/service.jaxrs.html#org.osgi.service.jaxrs.runtime.JaxrsServiceRuntimeConstants.JAX_RS_SERVICE_ENDPOINT regards, François Papon fpa...@apache.org Le 05/09/2018 à 22:47, atouat a écrit : > Hi @all, > > Wow! Very active community here in the forum. I appreciate this, thanks. > > @jbonofre In a current project at work, we already have rest services > running in karaf by using cxf and blueprint. > I also tried out @cschneider's propositon wiht cxf-dosgi and I got that > running too. > > I just wanted to try out publishing rest services via whiteboard, and since > aries jax rs whiteboard is the reference implementation I took that. > > About your example. My code looks like this: > > /import org.osgi.service.component.annotations.Activate; > import org.osgi.service.component.annotations.Component; > import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; > > import javax.ws.rs.GET; > import javax.ws.rs.Path; > import javax.ws.rs.PathParam; > > > @Component( > immediate = true, > property = { > JaxrsWhiteboardConstants.JAX_RS_APPLICATION_SELECT + > "=(osgi.jaxrs.name=.default)", > JaxrsWhiteboardConstants.JAX_RS_RESOURCE + "=true" > }, > service = ExampleRest.class > ) > public class ExampleRest { > > @Activate > public void onActivate(){ > System.out.println("ExampleRest activating!"); > } > > @GET > @Path("/{name}") > public String sayHello(@PathParam("name") String name) { > return "Hello " + name; > } > > }/ > > The generated service.component.xml under OSGI-INF looks like this: > > /<?xml version="1.0" encoding="UTF-8"?> > <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" > name="de.rest.test.ExampleRest" immediate="true" activate="onActivate"> > <implementation class="de.rest.test.ExampleRest"/> > <service> > <provide interface="de.rest.test.ExampleRest"/> > </service> > <property name="osgi.jaxrs.application.select" type="String" > value="(osgi.jaxrs.name=.default)"/> > <property name="osgi.jaxrs.resource" type="String" value="true"/> > </scr:component>/ > > > And the generated Manifest like this: > > /Manifest-Version: 1.0 > Bnd-LastModified: 1536171585428 > Build-Jdk: 1.8.0_171 > Built-By: adnan > Bundle-Description: de.rest.test.whiteboard.ds OSGi bundle project. > Bundle-ManifestVersion: 2 > Bundle-Name: de.rest.test.whiteboard.ds Bundle > Bundle-SymbolicName: de.rest.test.whiteboard.ds > Bundle-Version: 1.0.0.SNAPSHOT > Created-By: Apache Maven Bundle Plugin > Export-Package: de.rest.test;version="1.0.0.SNAPSHOT";uses:="javax.ws. > rs" > Import-Package: javax.ws.rs;version="[2.1,3)" > Provide-Capability: osgi.service;objectClass:List<String>="de.rest.tes > t.ExampleRest" > Require-Capability: osgi.extender;filter:="(&(osgi.extender=osgi.compo > nent)(version>=1.3.0)(!(version>=2.0.0)))",osgi.ee;filter:="(&(osgi.e > e=JavaSE)(version=1.8))" > Service-Component: OSGI-INF/de.rest.test.ExampleRest.xml > Tool: Bnd-3.5.0.201709291849/ > > I also already had a look at the osgienroute example @Tim-Ward-2 mentioned. > I created the rest bundle based on the osgi enroute maven archetype. The > code looks very similar (The following is the code generated by the enroute > archetype): > > /import javax.ws.rs.GET; > import javax.ws.rs.Path; > > import org.osgi.service.component.annotations.Component; > import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; > > @Component(service=RestComponentImpl.class) > @JaxrsResource > public class RestComponentImpl { > > //TODO add an implementation > > @Path("rest") > @GET > public String toUpper() { > return "Hello World!"; > } > } > / > > I couldnt get a well generetaed manifest by the bnd-tool, so I used the > maven-bundle.-plugin and the generetd service.component.xml and the genrated > Manifest look similar too. > > > After installing the feature as mentioned in my previous post and deploying > the bundle with you corde examples @jbonofre > (bundle symbolic name is de.rest.test.whiteboard.ds Bundle) and also the > enroute exmaple bunlde (bundly symbolic name is rest-enroute), I have the > following in karaf: > > / > karaf@root()> list > > START LEVEL 100 , List Threshold: 50 > ID │ State │ Lvl │ Version │ Name > ────┼────────┼─────┼────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────── > 23 │ Active │ 80 │ 4.2.1 │ Apache Karaf :: OSGi Services :: > Event > 45 │ Active │ 80 │ 0.0.0 │ aries-jaxrs-whiteboard.xml > 49 │ Active │ 80 │ 1.0.0 │ Apache Aries JAX-RS Specification > API > 50 │ Active │ 80 │ 1.0.0 │ Apache Aries JAX-RS Whiteboard > 52 │ Active │ 80 │ 1.1.2 │ Apache Felix Servlet API > 59 │ Active │ 80 │ 1.3.0.1 │ Apache ServiceMix :: Specs :: > Annotation API 1.3 > 60 │ Active │ 80 │ 4.6.0 │ Apache XBean OSGI Bundle Utilities > 61 │ Active │ 80 │ 4.6.0 │ Apache XBean :: Classpath Resource > Finder > 89 │ Active │ 80 │ 6.2.0 │ org.objectweb.asm > 90 │ Active │ 80 │ 6.2.0 │ org.objectweb.asm.commons > 91 │ Active │ 80 │ 6.2.0 │ org.objectweb.asm.tree > 98 │ Active │ 80 │ 1.1.0.201802012106 │ > org.osgi:org.osgi.service.http.whiteboard > 99 │ Active │ 80 │ 1.0.0.201802012106 │ org.osgi:org.osgi.service.jaxrs > 100 │ Active │ 80 │ 1.1.0.201802012106 │ org.osgi:org.osgi.util.function > 101 │ Active │ 80 │ 1.1.0.201802012106 │ org.osgi:org.osgi.util.promise > 102 │ Active │ 80 │ 1.0.0.SNAPSHOT │ de.rest.test.whiteboard.ds Bundle > 103 │ Active │ 80 │ 1.0.0.SNAPSHOT │ rest-enroute > karaf@root()> / > > > With the command karaf@root()> service:list , I get (excerpt) : > > /karaf@root()> service:list > > [de.rest.test.ExampleRest] > -------------------------- > component.id = 2 > component.name = de.rest.test.ExampleRest > osgi.jaxrs.application.select = (osgi.jaxrs.name=.default) > osgi.jaxrs.resource = true > service.bundleid = 102 > service.id = 123 > service.scope = bundle > Provided by : > de.rest.test.whiteboard.ds Bundle (102) > > [val.rest.enroute.RestComponentImpl] > ------------------------------------ > component.id = 3 > component.name = val.rest.enroute.RestComponentImpl > service.bundleid = 103 > service.id = 124 > service.scope = bundle > Provided by : > rest-enroute (103)/ > > With the command karaf@root()> http:list , I get : > > /karaf@root()> http:list > ID │ Servlet │ Servlet-Name │ State │ Alias │ Url > ───┼─────────┼──────────────┼───────┼───────┼──── > karaf@root()> / > > Yes, nothing. So no servlet or something in that regard is registered. It > can not work, right? > > When I install the feature cxf-jaxrs I get this: > > /karaf@root(feature)> http:list > ID │ Servlet │ Servlet-Name │ State │ Alias > │ Url > ────┼─────────────────────┼────────────────────────────┼─────────────┼───────┼───────── > 114 │ CXFNonSpringServlet │ cxf-osgi-transport-servlet │ Deployed │ /cxf > │ [/cxf/*] > karaf@root(feature)/ > > > I assume I am missing something obvious and substantial. Can someone point > me to what I am missing? > > Thanks in advance! > > > Greetings, > > Adnan > > > > > > > -- > Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html