6

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

但是当我使用 运行码头时start.jar,它开始到一个子文件夹

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

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

我如何告诉码头从它所在的地方开始,并拥有相对于这个基地的所有文件?

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

任何想法都值得赞赏。

4

1 回答 1

12

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 ,只需在or下创建一个work目录并重新启动 Jetty。${jetty.home}${jetty.base}

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

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

其余的需要您为已部署的 webapp 配置上下文。

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>
于 2013-10-07T19:17:18.177 回答