I was more woried about  conflicts, for example a default "*MessageBodyWriter
to provide JSON serialization*" I could register that targeting all
applications but some application could need a customized one?

Bram

On Fri, Aug 25, 2017 at 3:20 PM Raymond Auge <raymond.a...@liferay.com>
wrote:

> Binding an extension to every app is pretty much free since only those
> resources/applications/extensions having a dependency on it can/will use
> it! Right?
>
> - Ray
>
> On Thu, Aug 24, 2017 at 3:34 PM, Bram Pouwelse <b...@pouwelse.com> wrote:
>
>> I was mainly looking for the possibility to register extensions available
>> for multiple applications to use but not bind them to all. The extend.me
>> example in Tim's answer didn't cross my mind but I guess that should do the
>> trick :)
>>
>> Thanks guys!
>>
>> On Wed, Aug 23, 2017 at 11:12 AM Timothy Ward <tim.w...@paremus.com>
>> wrote:
>>
>>> Hi Bram,
>>>
>>> It sounds like you have something of an advanced use case in that you
>>> want to selectively provide a whiteboard extension (which is achieved using
>>> the application select property) and you want to prevent certain
>>> applications from being deployed until a suitable extension is available
>>> (which is achieved using the extension select property).
>>>
>>> The way I would do this is as follows:
>>>
>>>
>>>    - All applications that need the extension must express their
>>>    dependency using the *osgi.jaxrs.extension.select* filter to prevent
>>>    them being picked up by the whiteboard too early. For example by using 
>>> the
>>>    filter “(osgi.jaxrs.name=myWhiteboardExtension)”
>>>    - The applications that need the extension must also provide a
>>>    property for the extension service to recognise so that it can target 
>>> them
>>>    using the *osgi.jaxrs.application.select* filter, for example *extend.me
>>>    <http://extend.me>=true*
>>>    - The extension service must then target only these applications
>>>    using the *osgi.jaxrs.application.select* filter “(extend.me=true)”
>>>
>>>
>>> This sets up the bi-directional targeting that you’re after, while also
>>> guaranteeing that there are no start-up ordering issues. It is a pretty odd
>>> situation though.
>>>
>>> More typically a whiteboard extension would just be applied to all of
>>> the applications in the whiteboard, or just target specific applications.
>>> You would then place extension requirements on specific whiteboard
>>> resources that need the extension, not blocking the whole application. This
>>> is doubly true because whiteboard applications should normally contain
>>> their mandatory extensions as part of the application, not as whiteboard
>>> additions.
>>>
>>> Anyway, I hope this helps to clear things up!
>>>
>>> Tim
>>>
>>>
>>> On 22 Aug 2017, at 18:34, Bram Pouwelse <b...@pouwelse.com> wrote:
>>>
>>>
>>>
>>> On Tue, Aug 22, 2017 at 4:05 PM Raymond Auge <raymond.a...@liferay.com>
>>> wrote:
>>>
>>>> On Tue, Aug 22, 2017 at 8:50 AM, Bram Pouwelse <b...@pouwelse.com>
>>>> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> I have some questions about the "Additional JAX-RS types" section of
>>>>> the JAX-RS-Services RFC (rfc-217).
>>>>>
>>>>> 5.2 Additional JAX-RS types:
>>>>> …​
>>>>> *"Extensions should provide an osgi.jaxrs.application.select property
>>>>> with a filter that will match application to which this extensions will be
>>>>> registered. If no such filter is provided the extension will affect the
>>>>> default application." *
>>>>> …​
>>>>>
>>>>>
>>>>> 5.2.5 Depending on Extension Services:
>>>>>
>>>>>
>>>>> *"When writing and configuring a JAX-RS resource or extension it is
>>>>> possible for one extension to depend on another. For example a JAX-RS
>>>>> resource may have a dependency upon a MessageBodyWriter to provide JSON
>>>>> serialization, or a ContainerRequestFilter may depend on a ContextResolver
>>>>> to provide injected configuration.*
>>>>>
>>>>>
>>>>> *In these cases it is necessary to express a dependency on the
>>>>> existence of an extension within the JAX-RS container. This can be
>>>>> expressed on any JAX-RS whiteboard service using the
>>>>> osgi.jaxrs.extension.select property. This property has type String+ and
>>>>> contains a list of LDAP filters. These filters will be run against the
>>>>> service properties of each extension service registered with the 
>>>>> container.
>>>>> If all of the supplied filters pass then the whiteboard service will
>>>>> registered. This extension checking should be done per Application.*
>>>>> *If at some point later a necessary extension service dependency
>>>>> becomes unavailable then the whiteboard service will become ineligible for
>>>>> inclusion in the JAX-RS container until a suitable replacement is found."*
>>>>>
>>>>>
>>>>> Questions:
>>>>>
>>>>>    - Is there a way to register extension services without actively
>>>>>    adding them to an application (just have them ready to use for those 
>>>>> who
>>>>>    need them)?
>>>>>
>>>>> Use an `*osgi.jaxrs.application.select` filter than matches all
>>>> applications:*
>>>> *e.g. **osgi.jaxrs.application.select=*(osgi.jaxrs.name=*)
>>>>
>>>
>>> Maybe my understanding of the rfc is wrong but I'd expect the extension
>>> service to be added to all applications, what I'm looking for is having the
>>> extension service available for applications that require them but not add
>>> them to applications that don't.
>>>
>>>>
>>>>>    -
>>>>>    - Is it possible to use an extension service from an application
>>>>>    that doesn’t match the extension service’s 
>>>>> osgi.jaxrs.application.select
>>>>>    filter?
>>>>>
>>>>> No, since the jax-rs service's extension bindings must come from
>>>> within those bound to the same application!
>>>>
>>>
>>> :)
>>>
>>>>
>>>>>    -
>>>>>    - The "This extension checking should be done per Application"
>>>>>    remark shoud that also apply to the default application? Sounds ok to 
>>>>> me
>>>>>    for JAX-RS applications that are registered as such but for the default
>>>>>    application this is kind of strange as a single resource depending on 
>>>>> an
>>>>>    unavailable extension could make the whiteboard go down for all JAX-RS
>>>>>    resources (that are not part of an application)?
>>>>>
>>>>> Resources which are static need to use static extensions. The spec is
>>>> only talking about jaxrs "services". Otherwise statically wired resources
>>>> within a given application are not subject to OSGi services, except from
>>>> purely the shadowing perspective, not from the wiring/class space
>>>> perspective. If you're talking about something else could you please
>>>> elaborate?
>>>>
>>>
>>>>
>>>>>
>>>>>    - I think for the default application just excluding the resource
>>>>>    with unstatisfied dependencies would be better than taking the default
>>>>>    application down.
>>>>>
>>>>> At no point does an application get taken down due to a
>>>> resource/extension not being satisfied... unless it's the application
>>>> itself has the extension dependency. But the default application has no
>>>> such dependencies, in fact it may have no resources either.
>>>>
>>>>
>>> At no point does an application get taken down due to a
>>> resource/extension not being satisfied
>>>
>>> Ok that sounds good :) maybe the "This extension checking should be done
>>> per Application" part made me overthink things a bit too much
>>>
>>>
>>>> HTH
>>>> - Ray
>>>>
>>>>
>>>>>
>>>>>    -
>>>>>
>>>>> Regards,
>>>>> Bram
>>>>>
>>>>> _______________________________________________
>>>>> OSGi Developer Mail List
>>>>> osgi-dev@mail.osgi.org
>>>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>>>>  (@rotty3000)
>>>> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com/>
>>>>  (@Liferay)
>>>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org/>
>>>> (@OSGiAlliance)
>>>> _______________________________________________
>>>> OSGi Developer Mail List
>>>> osgi-dev@mail.osgi.org
>>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>>
>>> _______________________________________________
>>> OSGi Developer Mail List
>>> osgi-dev@mail.osgi.org
>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>>
>>>
>>> _______________________________________________
>>> OSGi Developer Mail List
>>> osgi-dev@mail.osgi.org
>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>
>>
>> _______________________________________________
>> OSGi Developer Mail List
>> osgi-dev@mail.osgi.org
>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>
>
>
>
> --
> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>  (@rotty3000)
> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
>  (@Liferay)
> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
> (@OSGiAlliance)
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to