Jetty itself has no temporary directories, but each web application can be assigned a directory into which the war is unpacked, JSPs compiled on-the-fly etc.
The algorithm for determining a webapp's temporary directory location is as follows:
- Try to use an explicit directory specifically for this webapp:
- Iff webapp.getTempDirectory() is set, use it. Do NOT delete it on jvm exit.
- Iff javax.servlet.context.tempdir context attribute is set for this webapp && exists && writeable, then use it. Do NOT delete on jvm exit.
- Create a directory based on global settings. The new directory will be called "Jetty_"host""port""context""+virtualhost :
- Iff $(jetty.home)/work exists create the directory there. Do NOT delete on jvm exit. Do NOT delete contents if dir already exists.
- Iff WEB-INF/work exists create the directory there. Do NOT delete on jvm exit. Do NOT delete contents if dir already exists.
- Else create dir in $(java.io.tmpdir). Set delete on jvm exit. Delete contents if dir already exists.
It is important to note that a temporary directory will have its contents deleted when the webapp is stopped unless either:
- it is called "work"
- it pre-existed the deployment of the webapp
Once a tempory directory has been allocated, a File instance for it is set and retrievable as the
javax.servlet.context.tempdir attribute of the web application.