0

I created a web application using : - HTML 5 - WebSocket (with Tomcat 7) - Spring - Hibernate

The issue is during the dpeloyment of my war in Tomcat 7 :

org.apache.catalina.startup.ContextConfig parseWebXml
Grave: Erreur d'Úvaluation (parse) dans le fichier web.xml de l'application Ó jn
di:/localhost/mywebapp/WEB-INF/web.xml
org.xml.sax.SAXParseException; systemId: jndi:/localhost/mywebapp/WEB-INF/web.xm
l; lineNumber: 11; columnNumber: 12; Error at (11, 12) : org.apache.catalina.dep
loy.WebXml addServlet

Here my web.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">

<display-name>My WebApp</display-name>

<servlet>
    <servlet-name>Welcome</servlet-name>
    <servlet-class>websocket.UrlWebSocketServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Welcome</servlet-name>
    <url-pattern>/websocket/welcome</url-pattern>
</servlet-mapping>

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

</web-app>

Here my Servlet (WebSocket class) :

public class UrlWebSocketServlet extends WebSocketServlet {

private static final Logger log = LoggerFactory.getLogger(UrlWebSocketServlet.class);

@Override
protected boolean verifyOrigin(String origin) {
    log.trace("Origin: {}", origin);
    return true;
}

@Override
protected StreamInbound createWebSocketInbound(String subProtocol, HttpServletRequest request) {
    return new WebSocketConnection();
}

private static class WebSocketConnection extends MessageInbound {

    @Override
    protected void onOpen(WsOutbound outbound) {
        log.info("Conexión abierta");
    }

    @Override
    protected void onClose(int status) {
        log.info("Conexión cerrada");
    }

    @Override
    protected void onBinaryMessage(ByteBuffer byteBuffer) throws IOException {
        log.warn("No se soportan mensajes binarios");
        throw new UnsupportedOperationException("No se soportan mensajes binarios");
    }

    @Override
    protected void onTextMessage(CharBuffer charBuffer) throws IOException {
        final String user = charBuffer.toString();
        log.debug("Mensaje recibido: {}", user);
        getWsOutbound().writeTextMessage(CharBuffer.wrap("Hola " + user + " desde WebSocket"));
    }
}
}

EDIT :

Here my pom.xml's part for Tomcat jar :

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-catalina</artifactId>
        <version>7.0.29</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-coyote</artifactId>
        <version>7.0.29</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-servlet-api</artifactId>
        <version>7.0.29</version>
        <scope>provided</scope>
    </dependency>
            <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>

Thank's a lot :)

Chris

Jean-Rémy Revy
  • 5,607
  • 3
  • 39
  • 65
Chris
  • 33
  • 2
  • 8
  • I suggest to change the locale to English so that you get error messages in English. This way you will find/get much sooner answers on Google or Stack Overflow. – BalusC Aug 04 '12 at 12:25
  • Hi, thank's for your response. I translated in google : 'Evaluation error (parse) in the file web.xml of the application di:/localhost/mywebapp/WEB-INF/web.xml' and try with google. No more results for my issue... – Chris Aug 04 '12 at 12:41
  • I have the solution : I have to delete the catalina jar from my lib folder, eems to resolve this issue... – Chris Aug 04 '12 at 12:49
  • pauli answer is correct. This is the explanation --> – Jin Feb 06 '17 at 10:00

1 Answers1

3
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-catalina</artifactId>
    <version>7.0.29</version>
</dependency>

should say:

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-catalina</artifactId>
    <version>7.0.29</version>
    <scope>provided</scope>
</dependency>
Pauli
  • 501
  • 4
  • 10