Jetty needs a working directory.
Its search order for finding a work directory is as follows:
- If the WebAppContext has a temp directory specified, use it.
- If the ServletContext has the
javax.servlet.context.tempdir
attribute set, and if directory exists, use it.
- If a
${jetty.base}/work
directory exists, use it (only valid for Jetty 9.1+)
- If a
${jetty.home}/work
directory exists, use it.
- Note: starting with Jetty 9.1 this test is now
${jetty.base}/work
- If a ServletContext has the
org.eclipse.jetty.webapp.basetempdir
attribute set, and if the directory exists, use it.
- Use
System.getProperty("java.io.tmpdir")
and use it.
The easiest one is either #3 or #4, just create a work
directory underneath your ${jetty.home}
or ${jetty.base}
and restart Jetty.
The next easiest is #6, to specify your own java.io.tmpdir
when you start the JVM for Jetty.
[jetty-distribution]$ java -Djava.io.tmpdir=/var/web/work -jar start.jar
The rest require you to configure the context for that deployed webapp.
Example for Jetty 7 or Jetty 8:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"http://jetty.mortbay.org/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath"><Property name="foo"/></Set>
<Set name="war">/var/web/webapps/foo.war</Set>
<Set name="tempDirectory">/var/web/work/foo</Set>
</Configure>
Example for Jetty 9 (just a dtd change):
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath"><Property name="foo"/></Set>
<Set name="war">/var/web/webapps/foo.war</Set>
<Set name="tempDirectory">/var/web/work/foo</Set>
</Configure>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…