Paul Spencer,
Thanks for your good help and detailed description, samples.

As you say, NO Real Value For Jarkarta REST implementation is .
I'm developing  new REST Development Standards.
So I'd like to reduce additional work to change in the future.

It will be good references For New Standards.
Sources, Feature infos

Thanks again, Paul Spencer.

Regards,
Jeongpil An

2023년 4월 12일 (수) 오후 11:21, Paul Spencer <[email protected]>님이 작성:

> Jeongpil An,
> For what it is worth, below is a simplified and sanitized version of my
> REST environment under Karaf 4.4.3. Note the REST endpoint and the API
> implementation are in different bundles, as I used the same REST
> application for many bundles.
>
> Although thus is not a Jararta implementation, I hope it helps.
>
> ***
> * REST Application
> ***
> package com.foo.restapp;
>
> import javax.ws.rs.core.Application;
>
> import org.osgi.service.component.annotations.Component;
> import
> org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationBase;
> import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName;
>
> @Component(service=Application.class)
> @JaxrsName("fooApi")
> @JaxrsApplicationBase("/foo/api")
> public class RestApplication extends Application{
>
> }
>
> ***
> * Example REST API
> ***
> package com.foo.messenger.rest;
>
> import javax.ws.rs.GET;
> import javax.ws.rs.Path;
> import javax.ws.rs.PathParam;
> import javax.ws.rs.Produces;
> import javax.ws.rs.QueryParam;
> import javax.ws.rs.core.MediaType;
> import javax.ws.rs.core.Response;
> import javax.ws.rs.core.Response.ResponseBuilder;
>
> import org.osgi.service.component.annotations.Component;
> import org.osgi.service.component.annotations.Reference;
> import
> org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect;
> import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource;
>
>
> @Path("/archiveMessage")
> @Component(service = ArchiveMessage.class)
> @JaxrsResource
> @JaxrsApplicationSelect("(osgi.jaxrs.name=fooApi)")
> public class ArchiveMessage {
>     @GET
>     @Produces(MediaType.TEXT_PLAIN)
>     @Path("/{messageId}")
>     public Response archiveMessage(@PathParam("messageId") final Integer
> messageId,
>             @QueryParam("account") ) {
> ...
>         ResponseBuilder builder;
> ...
>         if (success) {
>            builder = Response.ok(String.format("Success - Archiving
> Message ID:%d", messageId));
>         } else {
>             builder = Response.noContent();
>         }
>         return builder.build();
>     }
>
> }
>
>
> ***
> * Feature
> ***
>    <feature name="foo-restapp"
>         description="Foo REST Whiteboard" version="${project.version}">
>         <feature>cxf-jaxrs</feature>
>         <feature>jackson-jaxrs</feature>
>         <feature>pax-web-http-whiteboard</feature>
>         <feature>pax-web-karaf</feature>
>         <feature>aries-jax-rs-whiteboard</feature>
>         <feature>aries-jax-rs-whiteboard-jackson</feature>
>         <bundle
> start="true">mvn:com.foo.rest/foo-restapp/${restapp.version}
>         </bundle>
>     </feature>
>     <feature name="foo-msg-rest"
>         description="Foo Messenger REST endpoint"
> version="${project.version}">
>         <feature prerequisite="true">foo-restapp</feature>
>         <bundle start="true"
> start-level="90">mvn:com.foo.rest/foo-msg-rest/${bugdata.msg.rest.version}
>         </bundle>
>     </feature>
>
>
> Paul Spencer
>
>
>
> > On Apr 12, 2023, at 2:58 AM, 안정필 <[email protected]> wrote:
> >
> > Thanks for your good comments, Grzegorz Grzybek.
> >
> > Using your comments, I'll try again and post the result.
> >
> > Regards
> > Jeongpil An (call ajp)
> >
> > 2023년 4월 12일 (수) 오후 3:01, Grzegorz Grzybek <[email protected]>님이 작성:
> > Hello
> >
> > Karaf 4.4.3 uses Pax Web 8 and Pax Web, while not containing any Karaf
> features related to JaxRS, provides integration tests using aries-jaxrs
> (OSGi CMPN specification implementation).
> >
> > The Jetty-based test:
> https://github.com/ops4j/org.ops4j.pax.web/blob/web-8.0.19/pax-web-itest/pax-web-itest-container/pax-web-itest-jetty/src/test/java/org/ops4j/pax/web/itest/jetty/whiteboard/WhiteboardR7JaxRsIntegrationTest.java
> >
> > Abstract definition of the test:
> https://github.com/ops4j/org.ops4j.pax.web/blob/web-8.0.19/pax-web-itest/pax-web-itest-container/pax-web-itest-container-common/src/main/java/org/ops4j/pax/web/itest/container/whiteboard/AbstractWhiteboardR7JaxRsIntegrationTest.java
> >
> > And what's most important - the list of bundles you need (so you can
> create your own feature):
> https://github.com/ops4j/org.ops4j.pax.web/blob/web-8.0.19/pax-web-itest/pax-web-itest-common/src/main/java/org/ops4j/pax/web/itest/AbstractControlledTestBase.java#L667-L725
> >
> > I know this is rtfs approach to answer your question, but that's how it
> is ;)
> >
> > kind regards
> > Grzegorz Grzybek
> >
> > śr., 12 kwi 2023 o 07:46 안정필 <[email protected]> napisał(a):
> > Hi, Karaf Users and Developers.
> > I'm a user who likes karaf and osgi.
> >
> > Can I use Jakarta Restful WebService(OSGi 8.1) on Karaf ?
> > I'm using Karaf 4.4.3.
> >
> > It seems like that karaf default cxf-jaxrs feature 3.5.5 supports
> javax.ws.rs, not jakarta.ws.rs.
> > cxf 4.0 changed to jakarta but  temporarily removed osgi module
> > till osgi supports jakarta, as they say.
> > I tried several things but the result was not good. (eclipse Jersey 3.1,
> resteasy 6.2.3.Final, etc.)
> >
> > Any Idea?
> >
> > Thanks in advance for any comments.
> >
> > Regards
> > Jeongpil An (call, ajp)
>
>

Reply via email to