これから提起しようとしている質問に対する答えはすでにあります。
いずれにしても、JEE 6 から JEE 7 に移行し、websocket の使用を考えている人々 (たとえば、長いポーリングを websocket 機能で置き換えるなど) に役立つように、ここで質問しています。
質問: JEE 7 をサポートする Weblogic 12.2.1.2 で、次のようなガイドを使用して Websocket をセットアップしようとしています: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome。 html
注: 上記のガイドは非常に単純であり、すべて正しく、機能するはずです。私のアプリケーションではうまくいかなかったので、必ずしもあなたのアプリケーションでうまくいくとは限りません。しかし、概念的にはそうすべきです。
それにもかかわらず。HTTP 接続が tcp/ip Web ソケット接続にアップグレードされることになっている、ブラウザから backed へのハンドシェイク中に websocket アプリケーションがエラーになります。
Weblogic は、tyrus が Ascyn サーブレットの動作を使用してこのハンドシェイク プロトコルを処理できないと訴えています。ハンドシェイク中のエラーのスタック トレースを次に示します。
2017-01-23 14:54:59,065 ThreadId:53 エラー HTTP - [ServletContext@129852715[app:primefaces-60 モジュール:primefaces-60path:null spec-version:3.1]] サーブレットが例外 <[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'> java.lang.IllegalStateException: The async-support で失敗しましたこのリクエストでは無効になっています: weblogic.servlet.internal.ServletRequestImpl@2c87c663[ GET /primefaces-60/actions HTTP/1.1 接続: アップグレード プラグマ: no-cache キャッシュ制御: no-cache アップグレード: websocket オリジン: http://ローカルホスト:7001Sec-WebSocket-Version: 13 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/55.0.2883.87 Safari/537.36 DNT: 1 Accept-Encoding: gzip、deflate、sdch , br Accept-Language: en-US,en;q=0.8,pt-PT;q=0.6,pt;q=0.4,fr;q=0.2,it;q=0.2,de;q=0.2 Sec-WebSocket -キー: flKcAkxO3CJBIc8cYvwvlA== Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
] weblogic.servlet.internal.ServletRequestImpl.startAsync(ServletRequestImpl.java:2029) で weblogic.servlet.internal.ServletRequestImpl.startAsync(ServletRequestImpl.java:2005) で javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:432) でweblogic.websocket.tyrus.TyrusServletFilter.doFilter(TyrusServletFilter.java:241) で weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78) で filter.DummyTimeoutFilter2.doFilter(DummyTimeoutFilter2.java:81) で weblogic. weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:32) の servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78) weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78) .servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3683) の weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3649) の weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326) weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197) で weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203) で weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71) で) weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2433) で weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2281) で weblogic.servlet.internal.WebAppServletContext で。execute(WebAppServletContext.java:2259) で weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1691) で weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1651) で weblogic.servlet.provider.ContainerSupportProviderImpl $WlsRequestExecutor.run(ContainerSupportProviderImpl.java:270) の weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348) の weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333) の weblogic.work.LivePartitionUtility.doRunWorkUnderContext( LivePartitionUtility.java:54) で weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41) で weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640) weblogic.work.ExecuteThread.execute(ExecuteThread.java:406) で weblogic.work.ExecuteThread.run(ExecuteThread.java:346) で
Websocket エンドポイントをセットアップするためのバックエンド コードが完璧であり、Websocket 接続を確立するために使用される JavaScript コードが完璧であるという前提に基づいています。手紙のガイドに従って、上記のエラーが発生した理由を誰かが説明できますか?
注: - 上記のスタック トレースは、実際のアプリケーションの分析に基づいて、動作中の websocket エンドポイントを持つサンプル アプリケーションで既に分離されており、上記の例外に破損しています。
あなたがそれを知っていれば、答えは簡単です...誰も正しい解決策を取り戻す権利がない場合、私は1日かそこらで答えます.