Jetty:从C:\ Temp开始

Atm*_*ons 2 jetty

我正在尝试将vaadin应用程序部署到jetty.

但是当我使用jetty运行时start.jar,它会启动到子文件夹

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

虽然我把它放进去C:\Program Files\MyApp,但它总是在那里运行 - 包括它保存的文件.

如何告诉jetty从它所在的位置开始,并将所有文件相对于此基础?

我在Windows 7上,我们谈论的是最新的独立码头包.

任何想法都表示赞赏.

Joa*_*elt 9

Jetty需要一个工作目录.

其查找工作目录的搜索顺序如下:

  1. 如果WebAppContext指定了临时目录,请使用它.
  2. 如果ServletContext具有javax.servlet.context.tempdir属性集,并且如果目录存在,则使用它.
  3. 如果${jetty.base}/work目录存在,请使用它(仅对Jetty 9.1+有效)
  4. 如果${jetty.home}/work存在目录,请使用它.
    • 注意:从Jetty 9.1开始,此测试现已开始${jetty.base}/work
  5. 如果ServletContext具有该org.eclipse.jetty.webapp.basetempdir属性集,并且该目录存在,请使用它.
  6. 使用System.getProperty("java.io.tmpdir")和使用它.

最简单的一个是要么#3#4,只需要创建一个work目录下你${jetty.home}${jetty.base}和重启码头.

下一个最简单的是#6,java.io.tmpdir在你为Jetty启动JVM时指定你自己的.

[jetty-distribution]$ java -Djava.io.tmpdir=/var/web/work -jar start.jar
Run Code Online (Sandbox Code Playgroud)

其余部分要求您配置已部署的Web应用程序的上下文.

Jetty 7或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>
Run Code Online (Sandbox Code Playgroud)

Jetty 9的示例(只是更改dtd):

<?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>
Run Code Online (Sandbox Code Playgroud)