websocketサーブレットはJetty 9.4.6.v20170531では動作しませんが、バージョン9.3.2.v20150730と完全に動作します。WebSocketがJetty 9.4で動作していない
@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
が呼び出されることはありません。
それからservetがロードされ、configure
関数が呼び出され
<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>
をweb.xmlにそれを追加することによって、サーブレットのロードを強制しようとしました。 ソケットを開こうとすると、エラーは発生しませんが、onConnect
エラーは一度も呼び出されません。
これまでのところ、私はJetty 9.3.2を使用することに戻りましたが、それは満足のいくものではありません。
https://github.com/eclipse/jetty.project/issues - サーバーの 'dumpAfterStart'オプション(' $ {jetty.base}/startを参照してください。 ini')も参考になるでしょう。 –
https://github.com/eclipse/jetty.project/issues/1800で調査中です –