Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jetty: How to change startup temp directory

Tags:

jetty

I'm trying to deploy a vaadin application to jetty.

But when I run jetty using start.jar, it starts to a subfolder of

C:\Users\USERNAME\AppData\Local\Temp\jetty-0.0.0.0-8080-Application.war-....

Although I've put it into C:\Program Files\MyApp, it always runs there - including the files it saves.

How do I tell jetty to start right where it resides, and have all files relatively to this base?

I'm on Windows 7, we're talking about the most recent, standalone jetty package.

Any idea is appreciated.

like image 500
Atmocreations Avatar asked Oct 07 '13 18:10

Atmocreations


1 Answers

Jetty needs a working directory.

Its search order for finding a work directory is as follows:

  1. If the WebAppContext has a temp directory specified, use it.
  2. If the ServletContext has the javax.servlet.context.tempdir attribute set, and if directory exists, use it.
  3. If a ${jetty.base}/work directory exists, use it (only valid for Jetty 9.1+)
  4. If a ${jetty.home}/work directory exists, use it.
  • Note: starting with Jetty 9.1 this test is now ${jetty.base}/work
  1. If a ServletContext has the org.eclipse.jetty.webapp.basetempdir attribute set, and if the directory exists, use it.
  2. 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>
like image 50
Joakim Erdfelt Avatar answered Sep 30 '22 22:09

Joakim Erdfelt