You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by sambit nayak <sa...@gmail.com> on 2015/11/04 06:49:57 UTC
Facing issue with web socket client in Tomcat 7
Hi
I am trying to run a Web socket client under the context of Tomcat. So the
scenario is, I have a Web socket Server Endpoint deployed on Tomcat, as
part of App-1. App-2, which is also deployed on Tomcat (obviously under
different context root), wants to send a message.
The class in App-2 works fine, if I run it as a stand alone from a main
method. But it gives the below error, when it runs under context of tomcat.
(I am using Tyrus 1-9 as JSR-356 impl. If I remove it from pom dependency
list, @clientEndpoint and related annotations are not identified.)
> java.util.ServiceConfigurationError: javax.websocket.ContainerProvider:
> Provider org.apache.tomcat.websocket.WsContainerProvider not a subtype
> at java.util.ServiceLoader.fail(ServiceLoader.java:239)
> at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
> at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at
> javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:66)
The above exception is thrown at this line: WebSocketContainer container =
ContainerProvider.getWebSocketContainer();
I have tried below methods:
- From javax.websocket.ContainerProvider documentation
"Provider class that allows the developer to get a reference to the
implementation of the WebSocketContainer. The provider class uses the
ServiceLoader
<http://docs.oracle.com/javase/7/docs/api/java/util/ServiceLoader.html> to
load an implementation of ContainerProvider. Specifically, the fully
qualified classname of the container implementation of ContainerProvider
must be listed in the META-INF/services/javax.websocket.ContainerProvider
file in the implementation JAR file.
I looked in the META-INF of tomcat7-websocket.jar and tried changing the
entry to another impl class in Tyrus (GrizzlyContainerProvider), but that
does not help.
- Change the above line to
WebSocketContainer container = GrizzlyContainerProvider.getWebSocketContainer();
Both methods do not work.Any suggestion on how to fix this will be very
helpful.
I am running Tomcat 7.0.54 on Mac OS X 10.10.5.
Thanks & Regards
Sambit Nayak