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
参考:
最后更新于