9

これは機能します:

String webappDir = "...";
context = tomcat.addWebapp("/", new File(webappDir).getAbsolutePath());

これはしません:

context = tomcat.addContext("/", new File("").getAbsolutePath());

webappDirこの例では、JSP ページやクライアント側のリソースを提供していないため、実際には必要ありませんresponse.getWriter().println(...);。サーバー側のみを使用しているだけです。

例外がスローされることはなく、WebSocket が開かないだけです。

これは tomcat のバグだと思いますか?

4

2 に答える 2

3

まあ、これら2つはまったく異なる機能です。function の javadoc をaddContext見ると、websocket を使用できるようにコンテキストを設定する必要があることがわかります。これは api doc から取得されます。

コンテキストを追加します - プログラム モードで、デフォルトの web.xml は使用されません。これは、プログラム インターフェイスを介して明示的に有効にしない限り、JSP サポート (JSP サーブレットなし)、デフォルト サーブレット、および Web ソケット サポートがないことを意味します。

したがって、あなたの場合、このリンクのテストケースに従って、エンドポイントをコンテキストに追加する方法を理解できると思います。

これがバグであると想定できるかどうかについて。個人的には、開発者自身が Web ソケット接続を提供していないと述べているため、これはバグではないと思います。しかし、念のため、彼らに連絡して聞いてみてください;)。

于 2015-05-07T16:28:05.617 に答える
1

テスト (ソースコードの test/org/apache/tomcat/websocket) を調べると、

tomcat.addContext("", null);

nullコンテキスト パスの代わりに渡すには、最近の Tomcat 8 (数か月以内) が必要であることに注意してください。現在のバージョンは 8.0.22 です。

これは tomcat のバグだと思いますか?

「バグを報告する前」のルールは、stackoverflow ではなく、ユーザーのメーリング リストで質問することです。

于 2015-05-05T14:26:13.333 に答える