IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

Utilisation websocket avec Tomcat7


Sujet :

Tomcat et TomEE Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Utilisation websocket avec Tomcat7
    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 :

    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>
    Première chose étrange, dans Eclipse, j'ai une erreur sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private class MyMessageInbound extends MessageInbound
    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.

    Pour que ma servlet gère les appels, j'ai rajouté la configuration suivante dans mon fichier web.xml :

    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>
    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
    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)
    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.

    Est-ce que l'un de vous a une idée de ce que je fais mal ??
    Merci !

  2. #2
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Je réponds à ma propre question. Il me manquait une dépendance dans le pom.xml. Lorsque je compilais avec Maven intégré à Eclipse, il n'y avait pas d'erreurs. J'ai alors essayé depuis Maven en ligne de commande, et j'ai eu une erreur de classe introuvable. Une simple recherche google pour trouver quelle dépendance il me manquait .

    Pour ceux qui serait confronté au même problème, il faut également rajouté ceci dans le pom.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <dependency>
        	<groupId>org.apache.tomcat</groupId>
        	<artifactId>tomcat-coyote</artifactId>
        	<version>7.0.39</version>
        	<scope>provided</scope>
    </dependency>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Kylix 3] Je n'arrive pas à utiliser MySQL
    Par usebob dans le forum EDI
    Réponses: 4
    Dernier message: 15/04/2005, 10h18
  2. Utilisation iterator avec une classe perso
    Par SteelBox dans le forum C++
    Réponses: 19
    Dernier message: 07/03/2005, 11h30
  3. Réponses: 6
    Dernier message: 24/02/2005, 09h44
  4. PB de vue utilisant UNION avec ENTERPRISE MANAGER
    Par punglas dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/12/2004, 15h18
  5. Réponses: 12
    Dernier message: 02/02/2004, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo