jetty临时目录下的资源文件被删导致js等资源找不到

jetty临时目录下的资源文件被删导致js等资源找不到

July 14, 2020

生产环境上jetty运行一段时间后,在打开某个网页的时候发现有js、css文件找不到,但是重启之后问题会解决。后来发现是设定了tmpwatch后台任务,定时会清理一次系统的tmp目录。

默认情况下,如果没有指定jetty的临时目录,默认会使用系统的临时目录。解决方案就是,修改jetty的临时文件存放目录,不要放在 /tmp 目录下面。主要有下面几个方法:

  • 设置basetempdir值
<Configure class="org.eclipse.jetty.webapp.WebAppContext">

  <Set name="contextPath">/test</Set>
  <Set name="war">foo.war</Set>

  <Call name="setAttribute">
    <Arg>org.eclipse.jetty.webapp.basetempdir</Arg>
    <Arg>/home/my/foo</Arg>
  </Call>
</Configure>
  • 设置tempDirectory值
<Configure class="org.eclipse.jetty.webapp.WebAppContext">

  <Set name="contextPath">/test</Set>
  <Set name="war">foo.war</Set>

  <Set name="tempDirectory">/some/dir/foo</Set>
</Configure>
  • 设置 javax.servlet.context.tempdir 属性
<Configure class="org.eclipse.jetty.webapp.WebAppContext">

  <Set name="contextPath">/test</Set>
  <Set name="war">foo.war</Set>

  <Call name="setAttribute">
    <Arg>javax.servlet.context.tempdir</Arg>
    <Arg>/some/dir/foo</Arg>
  </Call>

</Configure>
  • 在启动参数里面修改
java -jar ../start.jar -Djava.io.tmpdir=/path/to/desired/directory

参考:

最后更新于