【发布时间】:2018-02-16 06:35:07
【问题描述】:
我的 websocket servlet 无法在 Jetty 9.4.6.v20170531 上运行,尽管它与 9.3.2.v20150730 版本完美兼容。
我的代码如下所示:
@SuppressWarnings("serial")
@WebServlet(name = "TcpProxy", urlPatterns = { "/sockets/tcpProxy" })
public class TcpProxySocketServlet extends WebSocketServlet {
@Override
public void configure(WebSocketServletFactory factory) {
factory.register(TcpProxySocket.class);
}
}
和
@WebSocket
public class TcpProxySocket {
/* ... */
public TcpProxySocket() {
LOGGER.info("Instantiating a TCP proxy");
}
/**
* Open a new socket
*
* @param session the session
*/
@OnWebSocketConnect
public void onConnect(Session session) throws RestException {
this.session = session;
CachedSession toriiSession = null;
...
尝试访问我的套接字时,我收到 404 错误。
在服务器端,configure 永远不会被调用。
我试图通过将 servlet 添加到 web.xml 来强制加载它
<servlet>
<servlet-name>TcpProxySocket</servlet-name>
<servlet-class>com.fujitsu.fse.torii.servlets.tcpProxy.TcpProxySocketServlet</servlet-class>
</servlet>
<servlet-mapping> <servlet-name>TcpProxySocket</servlet-name>
<url-pattern>/sockets/tcpProxy</url-pattern>
</servlet-mapping>
然后加载servet,调用configure函数。
尝试打开套接字时,我没有收到任何错误,但从未调用过 onConnect 错误。
到目前为止,我已恢复使用 Jetty 9.3.2,但并不令人满意。
有什么想法吗?
【问题讨论】:
-
听起来像是一份有价值的错误报告,应该提交到github.com/eclipse/jetty.project/issues - 服务器的
dumpAfterStart选项(请参阅${jetty.base}/start.ini)也会很有用。
标签: servlets websocket jetty jetty-9