jetty临时目录下的资源文件被删导致js等资源找不到
生产环境上jetty运行一段时间后,在打开某个网页的时候发现有js、css文件找不到,但是重启之后问题会解决。后来发现是设定了tmpwatch后台任务,定时会清理一次系统的tmp目录。
默认情况下,如果没有指定jetty的临时目录,默认会使用系统的临时目录。解决方案就是,修改jetty的临时文件存放目录,不要放在 /tmp 目录下面。主要有下面几个方法:
- 设置basetempdir值
1<Configure class="org.eclipse.jetty.webapp.WebAppContext">
2
3 <Set name="contextPath">/test</Set>
4 <Set name="war">foo.war</Set>
5
6 <Call name="setAttribute">
7 <Arg>org.eclipse.jetty.webapp.basetempdir</Arg>
8 <Arg>/home/my/foo</Arg>
9 </Call>
10</Configure>
- 设置tempDirectory值
1<Configure class="org.eclipse.jetty.webapp.WebAppContext">
2
3 <Set name="contextPath">/test</Set>
4 <Set name="war">foo.war</Set>
5
6 <Set name="tempDirectory">/some/dir/foo</Set>
7</Configure>
- 设置 javax.servlet.context.tempdir 属性
1<Configure class="org.eclipse.jetty.webapp.WebAppContext">
2
3 <Set name="contextPath">/test</Set>
4 <Set name="war">foo.war</Set>
5
6 <Call name="setAttribute">
7 <Arg>javax.servlet.context.tempdir</Arg>
8 <Arg>/some/dir/foo</Arg>
9 </Call>
10
11</Configure>
- 在启动参数里面修改
1java -jar ../start.jar -Djava.io.tmpdir=/path/to/desired/directory
参考: