2017-09-07 9 views
0

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を使用することに戻りましたが、それは満足のいくものではありません。

+1

https://github.com/eclipse/jetty.project/issues - サーバーの 'dumpAfterStart'オプション(' $ {jetty.base}/startを参照してください。 ini')も参考になるでしょう。 –

+0

https://github.com/eclipse/jetty.project/issues/1800で調査中です –

答えて

0

これは、他の問題がonConnectメソッドが呼び出されなかったということでした3.1

@@ -1,6 +1,8 @@ 
<?xml version="1.0" encoding="UTF-8"?> 
-<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
+<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
+   version="3.1"> 

Webアプリケーションのバージョンを使用するようにweb.xmlに正しいweb-appマークアップを使用して固定しました。これは、スラッシュ( "/ソケット/スクリプト"ではなく "/ソケット/スクリプト/")を含むパスを使用してサーブレットマッピングを変更したときに消えました。

単純な例では、後続スラッシュの問題を再現できませんでした。だから実際の問題があったか、それが私の誤解であったかどうかは分かりません。

全文は​​3210 私はJoakimとThe Jettyプロジェクトに感謝​​します。

関連する問題