0

Jetty 9 で実行されている CometD サーバーに大きなメッセージ (>130k) を送信しようとしています。サーバーがこの大きなメッセージを受信すると、次の例外が生成されます。

org.eclipse.jetty.websocket.api.MessageTooLargeException: Text message size [130353] exceeds maximum size [65536]
at org.eclipse.jetty.websocket.api.WebSocketPolicy.assertValidTextMessageSize(WebSocketPolicy.java:140)
at org.eclipse.jetty.websocket.common.Parser.assertSanePayloadLength(Parser.java:127)
at org.eclipse.jetty.websocket.common.Parser.parseFrame(Parser.java:482)
at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:254)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:632)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:480)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:745)
[qtp83954662-20] INFO org.cometd.websocket.server.WebSocketTransport$WebSocketScheduler$1 - WebSocket Error, Address: null
... 
(the rest removed for brevity)  

問題が何であるかを理解しており、CometD のドキュメントを確認しました。ドキュメントによると、バッファ サイズと最大メッセージ サイズは、初期化パラメータ ws.bufferSize と ws.maxMessageSize を使用して変更できます。これらのパラメーターを web.xml ファイルに設定し、Jetty を再起動しましたが、パラメーターの設定は効果がないようです。バッファサイズが変更されていないため、まったく同じ例外が発生します。

web.xml ファイルの設定を以下に示します。

<servlet>
    <servlet-name>cometd</servlet-name>
    <servlet-class>org.cometd.server.CometDServlet</servlet-class>
    <init-param>
       <param-name>ws.bufferSize</param-name>
       <param-value>400000</param-value>
    </init-param>
    <init-param>
       <param-name>ws.maxMessageSize</param-name>
       <param-value>400000</param-value>
    </init-param>
     <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>cometd</servlet-name>
    <url-pattern>/cometd/*</url-pattern>
</servlet-mapping>

何か不足していますか?CometD サーバーで最大メッセージ サイズを設定し、実際にそのメッセージ サイズをサーバーに使用させるにはどうすればよいですか?

4

1 に答える 1

1

あなたweb.xmlは正しいです。それが問題に対処する正しい方法です。

CometD テスト スイートには、ws.maxMessageSizeパラメーターが正しく機能することを確認するテストがあります。

私は自分自身で CometD デモを変更しws.maxMessageSize、テスト クライアントから大きなメッセージを追加して送信しようとしましたが、完全に機能しました。

おそらく、パラメーター名にタイプミスがあるか、パラメーターをデフォルト値にリセットする何かがありますか?

于 2016-09-30T08:59:11.647 に答える