Hi,

So there have been a number of suggestions on this thread which are 
unnecessary, and will confuse matters.

There is no need to provide a JAX-RS Application to use the JAX-RS whiteboard. 
The whiteboard always has a default application which is, unsurprisingly, what 
is used by default.
The “osgi.jaxrs.endpoint” property is a service property of the 
JaxrsServiceRuntime service. You can use it to work out what URI the JAX-RS 
whiteboard is available on. It does absolutely nothing when used as a property 
on your resource
The JAX_RS_APPLICATION_SELECT filter is not needed if you just want to use the 
default application to host your resource.

If you trim out the extra bits that have been added you should be back to a 
simple JAX-RS resource service that has the property 
“osgi.jaxrs.resource=true”. If you update to bnd 4.0 (the maven bundle plugin 
release was at the end of last week), then you can use the @JaxrsResource 
annotation to do this, otherwise you will need to keep using the String 
property name.

Verifying that the Aries JAX-RS whiteboard is working should be pretty simple. 
Once you have the bundle installed and running it will use the Http Whiteboard 
to register a Servlet. Once this is activated the whiteboard will register a 
JaxrsServiceRuntime service. If you look at the osgi.jaxrs.endpoint property of 
the JaxrsServiceRuntime service it will give you one or more URIs that you can 
use to reach the whiteboard. If you use a browser to connect to this URI you 
should get a welcome page.

If you don’t see a JaxrsServiceRuntime service then this indicates that the 
whiteboard servlet it uses hasn’t been picked up. This would be a problem with 
the Karaf web container.
If the URI presented as a service property of the JaxrsServiceRuntime service 
does not give you a welcome page then it indicates that Karaf is doing some 
level of context root setting. You will need to query the Karaf Http Whiteboard 
to work out what it might have done

Once you’ve validated that part it should be a case of installing/starting the 
bundle containing your resource, and navigating to it using the URI from 
before, plus the path of your resource method.

I hope this helps,

Best Regards,

Tim

> On 6 Sep 2018, at 06:56, Nicolas Brasey <nicolas.bra...@gmail.com> wrote:
> 
> Hi,
> 
> Are you sure you are not missing the "cxf" prefix in the URL to access your 
> endpoint? By default, cxf deploys your endpoint with the CXFNonSpringServlet, 
> which listens on the cxf context path, so your endpoint should be available 
> here:
> 
> http://localhost:8181/cxf/hello <http://localhost:8181/hello>
> 
> my 2 cents...
> 
> Nicolas
> 
> 
> 
> 
> 
> On Thu, Sep 6, 2018 at 5:58 AM Jean-Baptiste Onofré <j...@nanthrax.net 
> <mailto:j...@nanthrax.net>> wrote:
> Hi,
> 
> did you try to add a application with your context.
> 
> Something like:
> 
> @Component(
>                 service = Application.class,
>                 property= {
>                                 "osgi.jaxrs.name 
> <http://osgi.jaxrs.name/>=RestApp",
>                                 JAX_RS_APPLICATION_BASE + "=/rest",     
>                                 "authentication.with=keycloak"
>                 }
>         )
> public class RestApiApp extends Application{
> 
>         @Override
>   public Set<Object> getSingletons() {
>       return Collections.singleton(this);
>   }
> }
> 
> The resource can refer this application:
> 
> @Component(
>         service = Api.class,
>         property = {
>                         "osgi.jaxrs.name <http://osgi.jaxrs.name/>=RestApi",
>                         "osgi.jaxrs.resource=true",
>                         "osgi.jaxrs.application.select=(osgi.jaxrs.name 
> <http://osgi.jaxrs.name/>=RestApp)"
>         }
> )
> @Path("/object")
> public final class Api {
>         public static final Response EMPTY_RESPONSE =
> Response.noContent().type(MediaType.TEXT_HTML_TYPE).build();
>         @GET
>         @Path("/getObject")
>         @Produces(MediaType.APPLICATION_JSON)
>         public String getObject() {
>             //return some json
>         }
> }
> 
> Regards
> JB
> 
> On 05/09/2018 22:38, atouat wrote:
> > Hi Francois,
> > 
> > I treid that too. See this excerpt:
> > 
> > karaf@root()> service:list | grep -C 10 rest
> > [de.rest.test.ExampleRest]
> > --------------------------
> >  component.id <http://component.id/> = 4
> >  component.name <http://component.name/> = de.rest.test.ExampleRest
> >  osgi.jaxrs.application.select = (osgi.jaxrs.name 
> > <http://osgi.jaxrs.name/>=.default)
> > * osgi.jaxrs.endpoint = /hello* 
> > osgi.jaxrs.resource = true
> >  service.bundleid = 102
> >  service.id <http://service.id/> = 139
> >  service.scope = bundle
> > Provided by : 
> >  de.rest.test.whiteboard.ds Bundle (102)
> > 
> > 
> > But when calling http://localhost:8181/hello <http://localhost:8181/hello>, 
> > I get a 404 not found error.
> > 
> > 
> > Thansk for your input :)
> > 
> > 
> > Greetings,
> > 
> > Adnan
> > 
> > 
> > 
> > --
> > Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html 
> > <http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html>
> > 
> 
> -- 
> Jean-Baptiste Onofré
> jbono...@apache.org <mailto:jbono...@apache.org>
> http://blog.nanthrax.net <http://blog.nanthrax.net/>
> Talend - http://www.talend.com <http://www.talend.com/>

Reply via email to