【发布时间】:2012-08-02 06:04:27
【问题描述】:
我使用以下方法创建了一个 Web 应用程序: - HTML 5 - WebSocket(使用 Tomcat 7) - 春天 - 休眠
问题在于我在 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
这里是我的 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>
这里是我的 Servlet(WebSocket 类):
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"));
}
}
}
编辑:
这里是我 pom.xml 的 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>
非常感谢:)
克里斯
【问题讨论】:
-
我建议将语言环境更改为英文,以便您收到英文的错误消息。这样您就可以在 Google 或 Stack Overflow 上更快地找到/获得答案。
-
您好,感谢您的回复。我在谷歌翻译:'应用程序的文件 web.xml 中的评估错误(解析) di:/localhost/mywebapp/WEB-INF/web.xml' 并尝试使用谷歌。我的问题没有更多结果...
-
我有解决方案:我必须从我的 lib 文件夹中删除 catalina jar,似乎可以解决这个问题...
-
泡利的答案是正确的。这是解释stackoverflow.com/questions/6646959/…>
标签: servlets websocket tomcat7 web.xml