コードは、WebSphereRequestUpgradeStrategyとTomcatRequestUpgradeStrategyのどちらを使用するかをどのように決定しますか?

csharpnewbie

WebSocketを使用しようとしていますが、SpringアプリはWebsphereLibertyで実行されます。私のWebsocket接続が機能せず、クラスライブラリを使用してデバッグしたところ、コードがに移動しTomcatRequestUpgradeStrategy、これが機能しないことがわかりました。これは、を使用するWebSphereRequestUpgradeStrategyものは正常に機能します。これを決定するロジックがどのように機能するかが明確ではありませんか?私のpomで提供されているようにspring-boot-starter-tomcatを設定しました。したがって、TomcatRequestUpgradeStrategyを使用する原因が明確ではありません。誰かがこれを手伝ってくれる?

ワーキング:

SRTServletRequest31.upgrade(Class<T>) line: 157 
WsocHandlerImpl.handleRequest(HttpServletRequest, HttpServletResponse, ServerEndpointConfig, Map<String,String>, boolean) line: 268 
ServerContainerExt.doUpgrade(HttpServletRequest, HttpServletResponse, ServerEndpointConfig, Map<String,String>) line: 288   
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]  
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62  
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43  
Method.invoke(Object, Object...) line: 498  
WebSphereRequestUpgradeStrategy.upgradeInternal(ServerHttpRequest, ServerHttpResponse, String, List<Extension>, Endpoint) line: 87  
WebSphereRequestUpgradeStrategy(AbstractStandardUpgradeStrategy).upgrade(ServerHttpRequest, ServerHttpResponse, String, List<WebSocketExtension>, Principal, WebSocketHandler, Map<String,Object>) line: 119    
DefaultHandshakeHandler(AbstractHandshakeHandler).doHandshake(ServerHttpRequest, ServerHttpResponse, WebSocketHandler, Map<String,Object>) line: 281    
WebSocketHttpRequestHandler.handleRequest(HttpServletRequest, HttpServletResponse) line: 166

動作しない:

SRTServletRequest31.upgrade(Class<T>) line: 157 
RequestWrapper(HttpServletRequestWrapper).upgrade(Class<T>) line: 399   
HttpSessionSecurityContextRepository$Servlet3SaveToSessionRequestWrapper(HttpServletRequestWrapper).upgrade(Class<T>) line: 399 
HttpServlet3RequestFactory$Servlet3SecurityContextHolderAwareRequestWrapper(HttpServletRequestWrapper).upgrade(Class<T>) line: 399  
UpgradeUtil.doUpgrade(WsServerContainer, HttpServletRequest, HttpServletResponse, ServerEndpointConfig, Map<String,String>) line: 234   
WsServerContainer.doUpgrade(HttpServletRequest, HttpServletResponse, ServerEndpointConfig, Map<String,String>) line: 265    
TomcatRequestUpgradeStrategy.upgradeInternal(ServerHttpRequest, ServerHttpResponse, String, List<Extension>, Endpoint) line: 72 
TomcatRequestUpgradeStrategy(AbstractStandardUpgradeStrategy).upgrade(ServerHttpRequest, ServerHttpResponse, String, List<WebSocketExtension>, Principal, WebSocketHandler, Map<String,Object>) line: 119   
DefaultHandshakeHandler(AbstractHandshakeHandler).doHandshake(ServerHttpRequest, ServerHttpResponse, WebSocketHandler, Map<String,Object>) line: 281    
WebSocketHttpRequestHandler.handleRequest(HttpServletRequest, HttpServletResponse) line: 166    

詳細が必要な場合はお知らせください。どんな反応にも感謝します。

csharpnewbie

私は自分の質問に対する答えを見つけました。これは、将来、他の誰かに役立つ可能性があります。

DefaultHandshakeHandlerorg.apache.tomcat.websocket.server.WsHttpUpgradeHandlerクラスローダーに存在するかどうかを確認するチェックがありますpom依存関係にtomcat-embed-websocketがあったため、このクラスが存在していました。そのため、Libertyで実行していても、これがトリガーされていました。同じものをpomから削除すると、問題を解決するのに役立ちました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ