「yo jhipster」から生成され、「mvn spring-boot:run」および「grunt server」で開始された新しくスキャフォールディングされたアプリを使用すると、アプリをロードして、ログイン、メトリックの表示、セッション、設定、ログの表示などの操作を実行できます。および監査。しかし、「User Tracker」ページを表示しても何も表示されないのですか?
このセクションは、Atmosphere websocket / AngularJS の統合を示すためのものだと思いますか? ブラウザのコンソール ログを見ると、次のように表示されます。
Websocket failed. Downgrading to Comet and resending atmosphere.js:2866
GET http://0.0.0.0:9000/websocket/activity?X-Atmosphere-tracking-id=0&X-Atmosph…true&X-Cache-Date=0application%2Fjson&X-atmo-protocol=true&_=1393276976964 404 (Not Found)
Websocket 接続が試行されたように見えますが、最終的にタイムアウトになり、フォールバックの長いポーリングが機能しませんか? 私は最新の Chrome を使用しています (最新バージョンの Firefox と Safari も試しました)。
簡単なものがありませんか?
-- アップデート 1 --
これを WAR として Tomcat 7.0.50 にデプロイすると、ユーザー トラッカー ページに Atmosphere から返されたデータが表示されますが、WebSocket 接続を取得しようとして継続的にループし (HTTP ステータス コード 101: プロトコルの切り替え)、ユーザー データが定期的に表示されたり消えたりします。Chrome で次のようなエラーが表示されました。
No suspended connection available. Make sure atmosphere.subscribe has been called and request.onOpen invoked before invoking this method
Tomcat ログには次のように表示されます。
[WARN] org.atmosphere.cpr.DefaultAnnotationProcessor - Unable to detect annotations. Application may fail to deploy.
-- 更新 2 --
それを WAR として Jetty 8.1.14.v20131031 にデプロイし (Jetty 9.1.1.v20140108 はエラーをスローします)、Chrome 32.0.1700.107 でテストすると、ロング ポーリングのフォールバック トランスポートで機能するようです。ただし、何らかの理由で Atmosphere がサーブレット コンテナーを Tomcat と見なすため、WebSockets への最初の接続は失敗します。サーバー ログでは、次の問題がスローされます。
java.lang.ClassCastException: org.eclipse.jetty.server.Request cannot be cast to org.apache.catalina.connector.RequestFacade
at org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil.java:141)
at org.atmosphere.container.Tomcat7Servlet30SupportWithWebSocket.service(Tomcat7Servlet30SupportWithWebSocket.java:62)
皆様のご協力に改めて感謝いたします - 間違いなく前進しています :)
-- アップデート 3 --
すべてを要約すると:
- 現在、「mvn spring-boot:run」と「grunt server」は、Websocket または long-polling では連携しません。
JHipster WAR (mvn パッケージ) を Jetty 8.1.14.v20131031 にデプロイすると動作しますが、JHipster pom.xml から次の依存関係を削除する必要があります。そうしないと、Atmosphere は WebSocket サポートを提供しません。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency>
- ああ。誤報 -- WebSocket ではなくストリーミングを使用して実行していたため、WebSocket にはまだ update2 からのエラーがあります。