Jetty 9で実行されているCometDサーバーに大きなメッセージ(> 130k)を送信しようとしています。サーバーがこの大きなメッセージを受信すると、例外:受信したCometDテキストメッセージの最大サイズを変更する方法
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サーバーで最大メッセージサイズを設定し、そのサーバーが実際にそのメッセージサイズを使用する方法を教えてください。
実際には、タイプミスはありません(質問に付属のweb.xmlファイルを参照)。何らかの原因でパラメータがリセットされた場合は、スタートアップコードのどこかにある必要があります。私はどこのようなものを探しますか? web.xmlファイルが正しい場合、何がリセットを引き起こしたでしょうか? –
Springを使って 'BayeuxServer'インスタンスやその他のメカニズムを作成していますか?これは 'web.xml'で定義された設定が効果を持たない理由を説明します。 – sbordet