Tôi muốn sử dụng ổ cắm web và tôi bắt đầu tìm cách làm như vậy với API tomcat. Tôi hiện đang sử dụng Tomcat 7.0.37.Sử dụng ổ cắm web với Tomcat 7
Tôi đã cố gắng làm theo mã ví dụ từ tomcat documentation.
Tôi cũng đang sử dụng maven cho dự án, vì vậy tôi thêm này để pom.xml của tôi:
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>7.0.39</version>
<scope>provided</scope>
</dependency>
Điều đầu tiên đó là lạ, tôi nhận được một thông báo lỗi trong Eclipse cho dòng này:
nhắnprivate class MyMessageInbound extends MessageInbound
lỗi này là "các hệ thống cấp bậc của các loại MyMessageInbound là không phù hợp", nhưng tôi vẫn có thể biên dịch và chạy các ứng dụng web.
Tôi cũng đã thêm các cấu hình trong web.xml như sau:
<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>
Vì vậy, tôi có thể khởi chạy các ứng dụng web, nhưng khi tôi đi đến trang trò chuyện, tôi nhận được một lỗi trên bảng trò chuyện nói "Thông tin: WebSocket đã đóng.". Nhật ký Tomcat cung cấp cho tôi thông báo sau:
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)
Tôi nghĩ thông tin còn thiếu duy nhất ở đây là nguồn của chat page.
Bất cứ ai nhìn thấy những gì tôi đang làm sai ??
Cảm ơn
điều này cũng phù hợp với tôi. (Y) – prime