2013-11-20 10 views
13

を動作しません私はこの例を実行してみてください:ws://localhost/Tests/chatのWebSocketの例は

import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.websocket.OnClose; 
import javax.websocket.OnError; 
import javax.websocket.OnMessage; 
import javax.websocket.OnOpen; 
import javax.websocket.Session; 
import javax.websocket.server.ServerEndpoint; 

@ServerEndpoint(value = "/chat") 
public class ChatServer { 

    private static final Logger LOGGER = 
      Logger.getLogger(ChatServer.class.getName()); 

    @OnOpen 
    public void onOpen(Session session) { 
     LOGGER.log(Level.INFO, "New connection with client: {0}", 
       session.getId()); 
    } 

    @OnMessage 
    public String onMessage(String message, Session session) { 
     LOGGER.log(Level.INFO, "New message from Client [{0}]: {1}", 
       new Object[] {session.getId(), message}); 
     return "Server received [" + message + "]"; 
    } 

    @OnClose 
    public void onClose(Session session) { 
     LOGGER.log(Level.INFO, "Close connection for client: {0}", 
       session.getId()); 
    } 

    @OnError 
    public void onError(Throwable exception, Session session) { 
     LOGGER.log(Level.INFO, "Error for client: {0}", session.getId()); 
    } 
} 

私はTomcat 7.0.47を使用し、私はリンクをご確認ください。 このwebsocketを登録するか、web.xmlにいくつか追加する必要がありますか? なぜ私のために働いていないのでしょうか?

+0

サーバログファイルにスタックトレース/生成エラーメッセージがありますか?接続しようとすると、ブラウザは何を生成しますか? (あなたはクライアントとしてブラウザを使用していると仮定します。) –

+0

サーバログには何もありません。要求がサーバに届かないようです。テストのために、私はChromeアプリ「Advanced Rest Client」を使用します。 – Nyger

+0

他に何かお試しいただけますか? "Advanced Rest Client"はWebSocket接続をサポートしていません(私はその説明では表示されません)。 http://www.websocket.org/echo.htmlのような単純なものが動作するはずです。あなたはまた、何が間違っているのかを示すJavaScriptエラーコンソールを開くこともできます(404、500、他の理由..) –

答えて

13

WebSocket APIをTomcat 7.0.47で使用しようとして同じ問題が発生しました。表示されているエラーメッセージは、クライアントサイドではまったく役に立たず、サーバー側のエンドポイントは決して作成されていませんでした。

多くの無駄な時間の後、私はjavax.websocket-apiの依存関係を設定したからです。私はMavenを使用しています。デフォルトの有効範囲はcompileで、Tomcatのlibフォルダにはwebsocket-api.jarという問題があります。依存関係をprovidedに設定すると解決しました。

<dependency> 
     <groupId>javax.websocket</groupId> 
     <artifactId>javax.websocket-api</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
    </dependency> 

希望は、これはまた、Apacheの背後で実行場合はmod_proxy_wstunnelが必要になることは注目に値します

を助け、IISを使用する場合は、WebSocketををサポートしていない以前のものとしてバージョン8.0が必要になります。

+1

となって2時間経過しました... – Jackson

+0

本当にありがとうございました。私はこの事を見つけるのに4時間以上を費やしました。 – GPrathap

+0

私は逆の問題を抱えていました。座標は間違っていた。楽しい事実は、 ' javax javaee-api'もコンパイルされますが動作しません。 5時間が失われた... – Pascal

関連する問題