Mon servlet websocket ne fonctionne pas sur Jetty 9.4.6.v20170531 bien qu'il fonctionne parfaitement avec la version 9.3.2.v20150730.WebSocket ne fonctionne pas sur Jetty 9.4
Mon code ressemble à ceci:
@SuppressWarnings("serial")
@WebServlet(name = "TcpProxy", urlPatterns = { "/sockets/tcpProxy" })
public class TcpProxySocketServlet extends WebSocketServlet {
@Override
public void configure(WebSocketServletFactory factory) {
factory.register(TcpProxySocket.class);
}
}
et
@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;
...
Lorsque vous essayez d'accéder à mon socket, je reçois une erreur 404. Côté serveur, le configure
n'est jamais appelé.
J'ai essayé de forcer le chargement du servlet en l'ajoutant à 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>
Ensuite Servet est chargé, la fonction configure
est appelée. Lorsque j'essaie d'ouvrir le socket, je n'obtiens aucune erreur mais l'erreur onConnect
n'est jamais appelée.
Jusqu'à présent, je suis revenu à l'utilisation de Jetty 9.3.2, mais ce n'est pas satisfaisant.
Une idée?
Cela ressemble à un rapport de bogue important qui devrait être classé sur https://github.com/eclipse/jetty.project/issues - Les options 'dumpAfterStart' du serveur (voir' $ {jetty.base}/start. ini') sera utile de voir aussi bien. –
En cours d'investigation à https://github.com/eclipse/jetty.project/issues/1800 –