tomcat 7.0.50 java websocket mise en œuvre donne erreur 404
Je suis en train de mettre en œuvre un websocket sur tomcat 7.0.50 annoté à l'aide de points de terminaison, comme spécifié dans Java API Websocket (1.0)- JSR 356. Suivantes sont les brèves étapes de la façon dont j'ai codé comme ça
1) Écrire un websocket d'extrémité à l'aide de @ServerEndpoint annotation
2) mettre en œuvre @onOpen et @onMessage méthodes
3) ouvrir une websocket à l'aide de javascript sur google chrome.
Veuillez trouver le code correspondant aux étapes ci-dessus afin
1) ÉTAPE 1 & 2 - l'écriture serveur websocket point de terminaison:
package com.jkweb.websocket;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.websocket.EndpointConfig;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ServerEndpoint(value="/websocket/fileuploadtracker")
@OnOpen
public void open(Session session,EndpointConfig config) {
......
}
@OnMessage
public void onMessage(Session session, String msg) {
try {
session.getBasicRemote().sendText(msg);
} catch (IOException e) {
logger.error(e.getMessage());
}
}
public static void sendMessage(String uniqueTocken,String msg){
try {
Session wsSession = socketConnectionMap.get(uniqueTocken);
wsSession.getBasicRemote().sendText(msg);
} catch (IOException e) {
logger.error(e.getMessage());
}
}
}
2) ÉTAPE 3 - l'ouverture de websocket à l'aide de l'api javascript de google chrome:
wsurl = "ws://localhost:8080/jkweb/websocket/fileuploadtracker",
ws;
ws = new WebSocket(wsurl);
ws.onopen = function()
{
//Web Socket is connected, send data using send()
ws.send("Sending first Message");
alert("Message is sent...");
};
ws.onmessage = function (evt)
{
var received_msg = evt.data;
alert("Message is received...");
};
ws.onclose = function(evt)
{
//websocket is closed.
alert("Connection is closed..."+evt.code + ":"+evt.reason );
};
Je suis à l'aide de versions suivantes des logiciels :
1) Tomcat - 7.0.50
2) Java - 1.7.45
3) - Servlet 3.0
4) Ont ajouté à la suite de dépendance Maven
5) Chrome - 32.0.1700.107 m
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
Cependant, je suis d'erreur suivant et la connexion est fermée avec 1066 code d'erreur dans la console de chrome:
WebSocket connection to 'ws://localhost:8080/jkweb/websocket/fileuploadtracker' failed: Error during WebSocket handshake: Unexpected response code: 404
Est-il de la configuration je suis absent dehors sur. J'ai essayé de chercher beaucoup, mais ne pouvais pas trouver quoi que ce soit. Svp j'ai besoin de cela pour être résolu dès que possible.
Vous devez vous connecter pour publier un commentaire.
J'ai résolu. Problème est très spécifique à mon installation.
J'ai eu l'api websocket .bocal en cours d'installation dans mon application WEB-INF/lib du répertoire.
Pas sûr de savoir pourquoi il était en rupture avec elle. pouvez-vous mettre la lumière sur la cause de ce comportement et pourquoi il ne fonctionne pas lorsque vous avez donné websocket-api.jar dans l'application WEB-INF/lib avec tomcat, lib?
Si vous avez utilisé le serveur tomcat qui a été créé dans eclipse, vous devez supprimer l'ancien serveur et d'en créer un nouveau avec tomcat 7.0.50. C'est ma solution. PS: Mon serveur tomcat est 7.0.53, et le vieux est 7.0.21. Bonne chance à vous~
J'ai également eu le même problème.
Essayez de supprimer les indésirables pots qui contient websocket dans votre $JAVA_HOME/lib dossier.
puis ajouter seulement