2016-06-21 38 views
0

私は最初のwebsocketアプリケーションを実行しようとしていて、this link to get some sample codeと言いました。私は単にCustomEndPointWSClientクラス、htmlファイルを作成し、それをnetbeans IDEで実行したところ、魅力的だった。WebSocketコードがProd Tomcat Serverで動作しない - 404エラー

私は、そのURL wss://ws://を変更することにより、httpsを使用してアクセス可能であるにTomcatサーバーにデプロイしようとしたし、それは私のdevの環境で働いていたが、私は、コンソールで生産ENVにエラー以下の投げを同じコードを展開したとき:

WebSocketを 'wss://xxxxxx-xxx.xxxx'に接続します。 失敗コム/websoc/ratesrv」のWebSocketハンドシェイク中にエラーが発生しました:予期しない応答コード:404 I WS呼び出し以下のdevの環境では

取り組んでいる:

wsocket = new WebSocket("wss://dev_ip:8443/websoc/ratesrv");

製品版のために私が使用しています(URL内の.COMに注意してください):

wss://xxxxx-xxxxx.xx.com/websoc/ratesrv

PRODではポート番号も明示的に指定する必要がありますか?

+0

です。 PRODの通常のシナリオでは、Web層(Apacheまたはリバースプロキシとして動作するその他のWebサーバー)があることです。このレイヤーはリダイレクションルールを定義します。たとえば、xxxxxx-xxx.xxxx.com/websocのリクエストはprod_ip:8443/websocにリダイレクトされます。その場合、ポートを指定する必要はありません。私が提案しているのは、あなたのWebアプリケーションで単純なファイル(index.html)を配備し、xxxxxx-xxx.xxxx.com/websoc/index.htmlにアクセスしようとすることです。あなたが404を取得した場合、問題はwebsocketではなく、Webレイヤーのリダイレクトを伴うものです。 –

+0

@ MarcoA.Hernandez:warファイルを展開すると、xxxxxx-xxx.xxxx.com/websoc/index.htmlにアクセスできます –

+0

(index.htmlとwebsocketへの)すべての呼び出しはhttpsですか? httpコールを試すことはできますか?リバースプロキシを使用している場合は、tomcatに直接アクセスできますか? –

答えて

0

TomcatのバージョンにWebsocket Runtimeが含まれていますか?

  • WARSからすべてのWebsocket依存関係を削除する必要があります。変更スコープを指定してからmvn cleanを呼び出すようにしてください。

  • そうでなければ、それを含める必要があります。あなたはツロを使用したい場合は、単に

<dependency> 
    <groupId>org.glassfish.tyrus</groupId> 
    <artifactId>tyrus-container-servlet</artifactId> 
    <version>1.12</version> 
</dependency> 

<dependency> 
    <groupId>org.glassfish.tyrus</groupId> 
    <artifactId>tyrus-client</artifactId> 
    <version>1.12</version> 
</dependency> 

を入れてたときにデプロイTomcatのコンソールにエラーがないことをことを確認してください。

+0

編集された質問の見出し。 1つの気晴らしの上での作業だが、他の気候ではない –

+0

私はいくつかのシナリオをテストし、新しい知見を得た。見てください –

0

最新のバージョンのtomcatを使用してください。 tomcat8.5.20が私のために働いた。

関連する問題