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> w
>>> rote:
>>>
>>>> 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

Reply via email to