【问题标题】:Jetty: How to change startup temp directoryJetty:如何更改启动临时目录
【发布时间】:2013-10-07 18:40:39
【问题描述】:

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

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

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

虽然我已将其放入 C:\Program Files\MyApp,但它始终在那里运行 - 包括它保存的文件。

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

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

任何想法都值得赞赏。

【问题讨论】:

    标签: jetty


    【解决方案1】:

    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
    1. 如果 ServletContext 设置了 org.eclipse.jetty.webapp.basetempdir 属性,并且如果目录存在,则使用它。
    2. 使用System.getProperty("java.io.tmpdir") 并使用它。

    最简单的方法是 #3#4,只需在您的 ${jetty.home}${jetty.base} 下创建一个 work 目录,然后重新启动 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>
    

    【讨论】:

    • 谢谢。这实际上解决了我的问题。我选择创建一个work/ 目录。问候
    • 这个解决方案是否也适用于嵌入式码头服务器?
    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 2012-04-21
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多