我在java Tomcat中学习套接字。我有运行教程示例,如:
@ServerEndpoint("/echo")
public class EchoServer {
@OnOpen
public void onOpen(Session session){
System.out.println(session.getId() + " has opened a connection");
}
@OnMessage
public void onMessage(String message, Session session){
System.out.println("Message from " + session.getId() + ": " + message);
}
@OnClose
public void onClose(Session session){
System.out.println("Session " + session.getId() + " has ended");
}
}
和通过javascript连接到此套接字的正确html文件。我的问题是在web.xml中,我知道这对套接字处理没有影响。但是有web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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>SocketPOC</display-name>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
我的套接字停止工作。当我删除servlet映射标志时:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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>SocketPOC</display-name>
</web-app>
它再次起作用。我想同时拥有它 - 就像我想通过这个服务器服务html文件并并行处理套接字。我做错了什么?
Tomcat版本8.0.33 jre 1.9.0_91 我在eclipse Luna下运行它(如果它改变了什么)。