Bonjour à tous, j'ai pas mal cherché avant de poster, mais là, je bloque.
J'ai essayé de suivre l'exemple que l'on retrouve dans la documentation de Tomcat pour l'utilisation des websockets. Il s'agit d'une application de chat toute simple, dont le code pour la partie client se trouve ici.
Pour mon projet de test, j'utilise aussi Maven, j'ai donc rajouté dans mon pom.xml :
Première chose étrange, dans Eclipse, j'ai une erreur sur la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-catalina</artifactId> <version>7.0.39</version> <scope>provided</scope> </dependency>
Le message d'erreur est "The hierarchy of the type MyMessageInbound is inconsistent", mais cela ne m'empêche pas de compiler et de lancer l'application.
Code : Sélectionner tout - Visualiser dans une fenêtre à part private class MyMessageInbound extends MessageInbound
Pour que ma servlet gère les appels, j'ai rajouté la configuration suivante dans mon fichier web.xml :
Premier test, je peux lancer l'application, mais quand je me rend sur la page de chat, j'obtiens le message d'erreur "Info: WebSocket closed.", qui est lancé par la fonction JavaScript de la page cliente. Tomcat me donne le message d'erreur suivant dans la console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10<servlet> <servlet-name>wsChat</servlet-name> <servlet-class>websocket.chat.ChatWebSocketServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>wsChat</servlet-name> <url-pattern>/websocket/chat</url-pattern> </servlet-mapping>
Donc, il semblerait que ma configuration soit bonne, puisque je me rends bien sur la servlet, mais qu'elle ne parvient pas à créer la classe MyMessageInbound.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 SEVERE: Servlet.service() for servlet [wsChat] in context with path [/websocket-tuto] threw exception [L''exécution de la servlet a lancé une exception] with root cause java.lang.NoSuchMethodError: websocket.chat.ChatWebSocketServlet$MyMessageInbound.<init>(Lwebsocket/chat/ChatWebSocketServlet;Luwebsocket/chat/ChatWebSocketServlet$MyMessageInbound;)V at websocket.chat.ChatWebSocketServlet.createWebSocketInbound(ChatWebSocketServlet.java:34) at org.apache.catalina.websocket.WebSocketServlet.doGet(WebSocketServlet.java:121) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
Est-ce que l'un de vous a une idée de ce que je fais mal ??
Merci !
Partager