Missing serviceloader capability in javax.websocket-api

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Missing serviceloader capability in javax.websocket-api

Richard Hierlmeier

I tried to deploy a Vaadin war with websocket support into Karaf 4.1.6. Internally Vaadin uses Atmosphere for websocket communication. This library fails to create a websocket connection because the class javax.websocket.server.ServerEndpointConfig$Configurator uses java.util.ServiceLoader. However the OSGI manifest of javax.websocket-api does not declare the required capabilities for serviceloader. When adding the following lines the the OSGI header the websocket support works fine:

Require-Capability: osgi.extender;filter:="(osgi.extender=osgi.servicelo
 ader.processor)",osgi.serviceloader;filter:="(osgi.serviceloader=javax.
 websocket.server.ServerEndpointConfig$Configurator)";resolution:=option
 al;cardinality:=multiple

Is this a known problem? Is there any workarround possible?

Richard

Reply | Threaded
Open this post in threaded view
|

Re: Missing serviceloader capability in javax.websocket-api

jbonofre
Hi Richard,

You can use the ServiceMix OSGi Locator that deals with SPI/ServiceLoader.

Another workaround would be to embed all as private-package.

Regards
JB

On 11/10/2018 08:44, Richard Hierlmeier wrote:

>
> I tried to deploy a Vaadin war with websocket support into Karaf 4.1.6.
> Internally Vaadin uses Atmosphere for websocket communication. This
> library fails to create a websocket connection because the
> classjavax.websocket.server.ServerEndpointConfig$Configurator uses
> java.util.ServiceLoader. However the OSGI manifest of
> javax.websocket-api does not declare the required capabilities for
> serviceloader. When adding the following lines the the OSGI header the
> websocket support works fine:
>
> Require-Capability: osgi.extender;filter:="(osgi.extender=osgi.servicelo
>  ader.processor)",osgi.serviceloader;filter:="(osgi.serviceloader=javax.
>  websocket.server.ServerEndpointConfig$Configurator)";resolution:=option
>  al;cardinality:=multiple
>
> Is this a known problem? Is there any workarround possible?
>
> Richard
>

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