There are several ways to run XWiki on Jetty:

If you go with the last 2 options, make sure to:

  • Pick a supported version of Jetty.
  • Follow the Jetty setup defined in the xwiki.mod file used for the demo packaging. Note that the default setup used in the Jetty Docker image should work fine out of the box.
  • If you're deploying XWiki on a Jetty 10+, you'll need to edit the WEB-INF/jetty-web.xml file since it currently contains a setup valid for Jetty 9.x and it'll fail in Jetty 10+. You'll need to remove the calls to prependSystemClass and prependServerClass. For example (best is to edit your version so that you can get the latest changes in it):
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "">
    <Configure class="org.eclipse.jetty.webapp.WebAppContext">
     <Set name="maxFormContentSize">1000000</Set>
     <Set name="maxFormKeys">2000</Set>
  • Jetty has introduced a URI Compliance configuration (since 10.0.3+) which, for example, forbids having encoded % characters (encoded as %25%) in URL paths. However XWiki uses these and thus you need to tell Jetty to simply follow the URL RFCs without adding these extra checks. This can be done in several ways:
    • By editing server.ini and adding the line: jetty.httpConfig.uriCompliance=RFC3986
    • If you're using the Jetty Docker image, by passing jetty.httpConfig.uriCompliance=RFC3986 on the docker run command line: docker run ... jetty jetty.httpConfig.uriCompliance=RFC3986.


  • Extract the XWiki WAR into a directory named xwiki. Let's call this directory [XWIKI_HOME].
  • Run the Jetty Docker image, for example: docker run -v [XWIKI_HOME]:/var/lib/jetty/webapps/xwiki -p 8080:8080 jetty:9-jre11


  • Download and install Jetty. It's usually as simple as unzipping it in a directory. Let's call this directory [JETTY_HOME].
  • Extract the XWiki WAR into a directory named xwiki in [JETTY_HOME]/webapps/.
  • Open [JETTY_HOME]/webapps/xwiki/WEB-INF/ files and configure a permanent directory
  • (Optional) If you want to modify the port on which Jetty will run, edit [JETTY_HOME]/start.ini. Search for 8080, replace it with the port value you wish to use and uncomment the corresponding property jetty.http.port.


Unable to parse form content

In some cases you could obtain one of the following error messages: Unable to parse form content.

More specifically: org.eclipse.jetty.http.BadMessageException: 400: Unable to parse form content.

This can be related to a form containing too many parameters. In order to fix this issue, you can modify your jetty.xml file as explained in Configuring form limits for the server.


Get Connected