Hi Matthias,

The Aries JAXRS Whiteboard implementation uses CXF behind the hood ;)

Regards
JB

On 07/11/2019 17:24, Matthias Leinweber wrote:
> Great. Thank you very much.
> 
> I dont want to add CXF or Jersey. thank to your answer I have come up
> with the idea myself to inject the  @Context HttpServletRequest into the
> JaxRS code. To mix in
> this: 
> https://osgi.org/specification/osgi.cmpn/7.0.0/service.http.whiteboard.html#d0e120961
> I didn't test it yet but does it work? I don't see that the aries JaxRs
> whiteboard impl somewhere
> defined osgi.http.whiteboard.servlet.multipart.enabled=true
> 
> Best regards,
> Matthias
> 
> Am Do., 7. Nov. 2019 um 15:38 Uhr schrieb Tim Ward <[email protected]
> <mailto:[email protected]>>:
> 
>     Hi Matthias
> 
>>     I was a bit confused about how you could add a Servelt to the
>>     JaxRsWhiteboard instead of the HttpWhiteboard for Multi-Part file
>>     uploads.
> 
>     I hope it’s now clear that the JAX-RS whiteboard does not support
>     Servlets. You can either:
> 
>       * Register a servlet with the Http Whiteboard and find a place to
>         put the file
>       * Handle the multipart file upload using JAX-RS
> 
> 
>     If the file upload is only needed by your JAX-RS components then I
>     would recommend just using JAX-RS rather than a servlet.
> 
>>     * So a JaxRsResource can but most not belong to an application?
> 
>     A JAX-RS Whiteboard resource is just a “bare” resource in the
>     service registry. In the most common case the resource service that
>     you register will bind to the “default” application provided by the
>     JAX-RS Whiteboard. There is no need to deploy a custom whiteboard
>     application for resources to be hosted by the JAX-RS whiteboard.
> 
>>     * It's fine to put all your Resources into the same
>>     JaxRsWhiteboard even if you could separate them?
> 
>     Yes. This will work fine. All the resources (by default) will get
>     hosted in the default application. If you do want to provide some
>     isolation between the resources (e.g. if you need differently
>     configured JSON providers for different resources) then you can
>     still do this with a single JAX-RSWhiteboard, but you will need to
>     provide separate Applications for the resources and extensions. This
>     is because applications within the whiteboard *are* isolated from
>     each other, and can have different sets of resources and extensions.
> 
>     In general, however, you’re pretty safe just registering all the
>     resources and extensions that you need directly with the whiteboard
>     using the default application.
> 
>     All the best,
> 
>     Tim
> 
> 
>>     On 7 Nov 2019, at 12:54, Matthias Leinweber
>>     <[email protected] <mailto:[email protected]>>
>>     wrote:
>>
>>     Hello Tim,
>>
>>     thanks for your reply. I get the JaxRS Application thing wrong. I
>>     thought that an application and a JaxRsResource is/can be the
>>     same. But obviously, if you read the documentation correct, then not.
>>     Then it also makes sense to inject the Application with @Context
>>     Applicaiton app into a method.
>>     I had also a misunderstanding with http and jaxrs whiteboard. I
>>     was a bit confused about how you could add a Servelt to the
>>     JaxRsWhiteboard instead of the HttpWhiteboard for Multi-Part file
>>     uploads.
>>     I think the default app and the configuration of the default jaxrs
>>     whiteboard caused some confusion for me.
>>
>>     * So a JaxRsResource can but most not belong to an application?
>>     * It's fine to put all your Resources into the same
>>     JaxRsWhiteboard even if you could separate them?
>>
>>     right? then I think, I understood the thing and i like it :)
>>
>>     Best regards
>>     Matthias
>>
>>     Am Do., 7. Nov. 2019 um 13:24 Uhr schrieb Tim Ward
>>     <[email protected] <mailto:[email protected]>>:
>>
>>>         in OSGI 6 I think we should be able to use
>>>         @Component(property = {"osgi.jaxrs.name
>>>         <http://osgi.jaxrs.name/>=myApp",
>>>         "osgi.jaxrs.application.base=/foo"}, service = A.class)
>>>         class...
>>>         That does not work or did I misunderstood something?
>>
>>         If you want to register an application with the whiteboard
>>         then you must register it as a javax.ws.rs
>>         <http://javax.ws.rs/>.core.Application in the service
>>         registry. This is outlined
>>         at https://osgi.org/specification/osgi.cmpou
>>         cann/7.0.0/service.jaxrs.html#service.jaxrs.application.services
>>         
>> <https://osgi.org/specification/osgi.cmpn/7.0.0/service.jaxrs.html#service.jaxrs.application.services>
>>
>>>         Second how do i create additional Servlets and how do I
>>>         select them in a resource?
>>>         E.g. A configfile/servicepid
>>>         org.apache.aries.jax.rs.whiteboard-bar.cfg
>>>         application.base.prefix=/bar
>>>         should create an additional servlet container?
>>
>>         I’m not sure that I totally follow here. It looks like you’re
>>         trying to create a configuration for another Aries JAX-RS
>>         whitboard instance - is this really what you want, a second
>>         JAX-RS whiteboard? The Aries JAX-RS Whiteboard is designed to
>>         build on top of a compliant Http Whiteboard, if you are
>>         actually trying to create another Http Whiteboard (e.g. to get
>>         HTTP served on another port) then you will need to set that up
>>         in PAX-Web.
>>
>>>         Then with
>>>         @JaxrsWhiteboardTarget
>>>         or
>>>         "osgi.jaxrs.whiteboard.target="
>>>
>>>         I can select the servlet/Whiteboard, but how does the LDAP
>>>         string look? 
>>>         (service.pid=org.apache.aries.jax.rs.whiteboard-bar)?
>>
>>         This property only applies if you create more than one JAX-RS
>>         whiteboard, and would be applied to your JAX-RS Whiteboard
>>         services (resources, applications, extensions), and you would
>>         use the filter to select the JAX-RS Whiteboard that you wanted
>>         them to use. If you do want to do this, which seems unlikely,
>>         then you would typically add a marker property into the
>>         configuration for your JAX-RS Whiteboard and then use that
>>         property name/value in the filter.
>>
>>
>>         Any questions that relate to setting up the Http Whiteboard
>>         will need to be handled by someone with more PAX-Web
>>         experience. I would also recommend that, in addition to
>>         describing the problems that you’ve encountered, you include a
>>         description of what you’re trying to achieve with your system.
>>
>>         E.g.
>>
>>           * Do you want multiple Http ports being served (this would
>>             be Http Whiteboard not JAX-RS Whiteboard)?
>>           * Do you want JAX-RS Whiteboard support on top of one or
>>             more of the available Http Whiteboards)?
>>           * Do you want to publish JAX-RS resource services,
>>             application services, or a mixture of the two?
>>           * Do you want the JAX-RS services that you publish to appear
>>             on all whiteboards, or just a subset?
>>
>>
>>         With this information it will be much easier to help you to
>>         achieve your goal.
>>
>>         All the best,
>>
>>         Tim
>>
>>>         On 6 Nov 2019, at 17:25, Matthias Leinweber
>>>         <[email protected]
>>>         <mailto:[email protected]>> wrote:
>>>
>>>         Hi JB,
>>>         yes that was my first place to start... really like the
>>>         examples in the source, they are really helpful.
>>>
>>>         ok:
>>>         Fist thing are JAXRs Applications. In OSGI7 we will use
>>>         @JaxrsName("myApp")
>>>         @JaxrsApplicationBase("foo")
>>>         @Component
>>>         class....
>>>
>>>         in OSGI 6 I think we should be able to use
>>>         @Component(property = {"osgi.jaxrs.name
>>>         <http://osgi.jaxrs.name/>=myApp",
>>>         "osgi.jaxrs.application.base=/foo"}, service = A.class)
>>>         class...
>>>         That does not work or did I misunderstood something?
>>>
>>>         Second how do i create additional Servlets and how do I
>>>         select them in a resource?
>>>         E.g. A configfile/servicepid
>>>         org.apache.aries.jax.rs.whiteboard-bar.cfg
>>>         application.base.prefix=/bar
>>>         should create an additional servlet container?
>>>
>>>         Then with
>>>         @JaxrsWhiteboardTarget
>>>         or
>>>         "osgi.jaxrs.whiteboard.target="
>>>
>>>         I can select the servlet/Whiteboard, but how does the LDAP
>>>         string look? 
>>>         (service.pid=org.apache.aries.jax.rs.whiteboard-bar)?
>>>
>>>         Best regards,
>>>         Matthias
>>>
>>>
>>>         Am Mi., 6. Nov. 2019 um 18:00 Uhr schrieb Jean-Baptiste
>>>         Onofré <[email protected] <mailto:[email protected]>>:
>>>
>>>             Hi Matthias,
>>>
>>>             did you take a look on the Karaf example ?
>>>
>>>             
>>> https://github.com/apache/karaf/tree/master/examples/karaf-rest-example
>>>
>>>             It contains different approaches, including whiteboard.
>>>
>>>             Can you describe a bit what you are looking for ? We can
>>>             then create the
>>>             Jira at Karaf/Aries to improve example/documentation.
>>>
>>>             Regards
>>>             JB
>>>
>>>             On 06/11/2019 17:56, Matthias Leinweber wrote:
>>>             > Hello Karaf Team,
>>>             >
>>>             > I know that this not the 100% correct mailing list for
>>>             aries jax-rs.
>>>             > However my question is what do you plan for further
>>>             releases of Karaf? I
>>>             > try to use the aries implementation but I struggle with
>>>             the configuration.
>>>             > Beside the incomplete documentation and the "very
>>>             special" DSL which is
>>>             > used I dug into the code and understood the following
>>>             things.
>>>             >
>>>             > * You can not add additional JAXRSApplications.
>>>             ("osgi.jaxrs.name <http://osgi.jaxrs.name/>
>>>             > <http://osgi.jaxrs.name
>>>             <http://osgi.jaxrs.name/>>=myApp",
>>>             "osgi.jaxrs.application.base=/approot"}
>>>             > although there is code which should do this?
>>>             > * Additional configurations for other then the default
>>>             servlet is not
>>>             > possible although there is a service factory manager
>>>             which should handle
>>>             > additional configs?
>>>             > * With org.apache.aries.jax.rs
>>>             <http://org.apache.aries.jax.rs/>.whiteboard.default.cfg
>>>             > # application.base.prefix you can add a global url
>>>             prefix to your
>>>             > JaxRSResoureces. Would be nice if that could be
>>>             documented somewhere.
>>>             >
>>>             > Don't get me wrong I do not say that the bundle is bad,
>>>             but at some
>>>             > point it could be easier to understand.
>>>             >
>>>             > regards Matthias
>>>             >
>>>             >
>>>
>>>             -- 
>>>             Jean-Baptiste Onofré
>>>             [email protected] <mailto:[email protected]>
>>>             http://blog.nanthrax.net <http://blog.nanthrax.net/>
>>>             Talend - http://www.talend.com <http://www.talend.com/>
>>>
>>>
>>>
>>>         -- 
>>
>>
>>
>>
> 
> 
> 
> 

-- 
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to