Jetty:从C:\ Temp开始

时间:2013-10-07 18:40:39

标签: jetty

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

但是当我使用start.jar运行jetty时,它会启动

的子文件夹

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

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

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

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

任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:9)

Jetty需要一个工作目录。

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

  1. 如果是WebAppContext has a temp directory specified,请使用它。
  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")并使用它。
  7. 最简单的一个是#3 #4 ,只需在work${jetty.home}下创建一个${jetty.base}目录即可并重新启动Jetty。

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

    [jetty-distribution]$ java -Djava.io.tmpdir=/var/web/work -jar start.jar
    

    其余部分要求您配置已部署的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>
    

    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>