gpt4 book ai didi

java - Tomcat WebSocket 错误

转载 作者:行者123 更新时间:2023-11-28 23:57:56 26 4
gpt4 key购买 nike

我关注了这个link使用tomcat制作websocket服务器。当我尝试访问 websocket 时,我的 firefox 说它无法建立连接。

这是我的代码

public class WsChatServlet extends WebSocketServlet
{
private static final long serialVersionUID = 1L;
private static ArrayList<MyMessageInbound> mmiList = new ArrayList<MyMessageInbound>();

@Override
protected StreamInbound createWebSocketInbound(String string) {
System.out.println("CreateWebSocketInbound()");
return new MyMessageInbound();
}

private class MyMessageInbound extends MessageInbound
{
WsOutbound myoutbound;

@Override
protected void onBinaryMessage(ByteBuffer bb) throws IOException {
System.out.println("onBinaryMessage()");
}

@Override
protected void onTextMessage(CharBuffer cb) throws IOException {
System.out.println("Accept Message : "+ cb);
for (MyMessageInbound mmib : mmiList)
{
CharBuffer buffer = CharBuffer.wrap(cb);
mmib.myoutbound.writeTextMessage(CharBuffer.wrap("Hello!"));
mmib.myoutbound.flush();
}
}

@Override
protected void onOpen(WsOutbound outbound) {
System.out.println("onOpen()");
try {
System.out.println("Open Client.");
this.myoutbound = outbound;
mmiList.add(this);
outbound.writeTextMessage(CharBuffer.wrap("Hello!"));
} catch (IOException ex) {
Logger.getLogger(WsChatServlet.class.getName()).log(Level.SEVERE, null, ex);
}
}

@Override
protected void onClose(int status) {
System.out.println("Close Client.");
mmiList.remove(this);
}
}

这是服务器日志

24 Apr 13 22:53:09 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [WsChatServlet] in context with path [/HelloWebSocket] threw exception
java.lang.ClassCastException: org.netbeans.modules.web.monitor.server.MonitorRequestWrapper cannot be cast to org.apache.catalina.connector.RequestFacade
at org.apache.catalina.websocket.WebSocketServlet.doGet(WebSocketServlet.java:126)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
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:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

如何解决这个问题以及如何将日志内部代码格式?

最佳答案

那是 Tomcat 7.0.27 中的错误。我建议你使用 7.0.37,或者使用类似 Atmosphere 的框架(将避免此类问题)

--让弗朗索瓦

关于java - Tomcat WebSocket 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16196969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com