Tomcat のコンテキストで Web ソケット クライアントを実行しようとしています。シナリオは、App-1 の一部として Tomcat にデプロイされた Websocket サーバー エンドポイントを持っているというものです。Tomcat にもデプロイされている (明らかに異なるコンテキスト ルートの下にある) App-2 は、メッセージを送信したいと考えています。
メイン メソッドからスタンドアロンとして実行すると、App-2 のクラスは正常に動作します。しかし、Tomcat のコンテキストで実行すると、以下のエラーが発生します。(JSR-356 impl として Tyrus 1.9 を使用しています)
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)
上記の例外は、次の行でスローされます。
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
これを修正する方法についての提案は非常に役に立ちます。