Hi Andy and Christian,

This is tangential to the original question, though I’ll share this in case it 
helps others.

I recently needed to solve “URI Too Long” errors that were encountered when the 
value of a query parameter in an HTTP GET request to a RESTXQ function exceeded 
a preset maximum length. Fortunately, there is a way to configure a higher 
limit by setting requestHeaderSize in jetty.xml as shown below.

I also wanted to be able to configure (and find out) the HTTP port for Jetty 
using a system property, and had to add a SystemProperty element in jetty.xml 
as shown below.

This is using BaseX version 11.9 which has Jetty version 11.0.25. I’ll have to 
try using BaseX 12 soon.


<Configure id="Server" class="org.eclipse.jetty.server.Server">

  <!-- increase max header size to resolve errors: "URI Too Long" and "WARN 
org.eclipse.jetty.http.HttpParser - URI is too large >8192" -->
  <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
    <Set name="requestHeaderSize">65536</Set>
  </New>

  <!-- Default connector. The Jetty stop port can be specified
       in the .basex or pom.xml configuration file.  -->
  <Call name="addConnector">
    <Arg>
      <New id="httpConnector" class="org.eclipse.jetty.server.ServerConnector">
        <Arg name="server"><Ref refid="Server"/></Arg>
        <Arg name="factories">
          <Array type="org.eclipse.jetty.server.ConnectionFactory">
            <Item>
              <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                <Arg name="config">
                  <Ref refid="httpConfig"/>
                </Arg>
              </New>
            </Item>
          </Array>
        </Arg>
        <Set name="host">0.0.0.0</Set>
        <Set name="port"><SystemProperty name="jetty.http.port" 
default="8080"/></Set>
        <Set name="idleTimeout">60000</Set>
        <Set name="reuseAddress">true</Set>
      </New>
    </Arg>
  </Call>
</Configure>


I might have opted to use POST instead of GET for the RESTXQ function without 
needing to increase requestHeaderSize, but I was calling the RESTXQ function 
from XSLT using the doc() function.

Kind regards,
Vincent


_____________________________________________
Vincent M. Lizzi
Head of Information Standards | Taylor & Francis Group
vincent.li...@taylorandfrancis.com<mailto:vincent.li...@taylorandfrancis.com>
Time zone: US Eastern
[https://res.public.onecdn.static.microsoft/assets/bookwithme/misc/CalendarPerson20px.png]<https://outlook.office.com/bookwithme/user/aa80d42cbb5b46dba06a5ad241d76...@taylorandfrancis.com?anonymous&ep=owaSlotsEmailSignature>
Book time to meet with 
me<https://outlook.office.com/bookwithme/user/aa80d42cbb5b46dba06a5ad241d76...@taylorandfrancis.com?anonymous&ep=owaSlotsEmailSignature>



Information Classification: General
From: Andy Bunce <bunce.a...@gmail.com>
Sent: Monday, August 4, 2025 5:55 PM
To: Christian Grün <c...@basex.org>
Cc: BaseX <basex-talk@mailman.uni-konstanz.de>
Subject: [basex-talk] Re: Websocket configuration Basex 12

Hi Christian,

Thanks for this. It sounds like a good approach and it is working for me with 
the latest release.

/Andy

On Mon, 4 Aug 2025 at 15:36, Christian Grün 
<c...@basex.org<mailto:c...@basex.org>> wrote:
Hi Andy,

I wanted to introduce new options first, but I dropped this approach, and I 
decided to simulate the old behavior of Jetty. The init-param entries in the 
web.xml file are now parsed by BaseX and assigned to the WebSocket instance 
when the first WebSocket connection is created [1].

As a consequence, existing Jetty 9 web.xml WebSocket configurations should work 
again. Feel free to check out the latest snapshot [2] to verify if that’s true.

Best,
Christian

PS: The docs have been updated, too [3].

[1] 
https://github.com/BaseXdb/basex/commit/880535ed23d11c15b58945d12049242af65486f1<https://github.com/BaseXdb/basex/commit/880535ed23d11c15b58945d12049242af65486f1>
[2] 
https://files.basex.org/releases/latest/<https://files.basex.org/releases/latest/>
[3] 
https://docs.basex.org/main/WebSockets#configuration<https://docs.basex.org/main/WebSockets#configuration>

________________________________
Von: Andy Bunce <bunce.a...@gmail.com<mailto:bunce.a...@gmail.com>>
Gesendet: Montag, 4. August 2025 00:39
An: BaseX 
<basex-talk@mailman.uni-konstanz.de<mailto:basex-talk@mailman.uni-konstanz.de>>
Betreff: [basex-talk] Websocket configuration Basex 12

Hi,

I would like to increase the websocket message length from the default of 64 KB.
The websocket documentation implies this can be done via web.xml [1]
However, while searching for the syntax I came across the suggestion it is 
different with the Jetty version 12 API [2]

The Jetty docs have this example [3]

// Configure the ServerContainer.

            container.setDefaultMaxTextMessageBufferSize(128 * 1024);
but my quick code search of the BaseX source found nothing similar.

Is it possible to configure the webSocket  MaxTextMessageBufferSize in BaseX 
12.0?

/Andy

[1] 
https://docs.basex.org/main/WebSockets#configuration<https://docs.basex.org/main/WebSockets#configuration>
[2]  
https://stackoverflow.com/questions/79610426/setting-the-max-buffer-size-for-websocketclient-since-upgrading-to-jetty-12<https://stackoverflow.com/questions/79610426/setting-the-max-buffer-size-for-websocketclient-since-upgrading-to-jetty-12>
[3] 
https://jetty.org/docs/jetty/12/programming-guide/server/websocket.html#standard-endpoints<https://jetty.org/docs/jetty/12/programming-guide/server/websocket.html#standard-endpoints>

Reply via email to