我正在尝试将vaadin应用程序部署到jetty。
但是当我使用start.jar
运行jetty时,它会启动
C:\Users\USERNAME\AppData\Local\Temp\jetty-0.0.0.0-8080-Application.war-....
虽然我把它放入C:\Program Files\MyApp
,但它总是在那里运行 - 包括它保存的文件。
如何告诉jetty从它所在的位置开始,并将所有文件放在相对于此基础的位置?
我在Windows 7上,我们谈论的是最新的独立码头包。
任何想法都表示赞赏。
答案 0 :(得分:9)
Jetty需要一个工作目录。
查找工作目录的搜索顺序如下:
javax.servlet.context.tempdir
属性,并且目录存在,请使用它。${jetty.base}/work
目录,请使用(仅对Jetty 9.1 +有效) ${jetty.home}/work
目录,请使用它。
${jetty.base}/work
org.eclipse.jetty.webapp.basetempdir
属性,并且该目录存在,请使用它。System.getProperty("java.io.tmpdir")
并使用它。最简单的一个是#3 或#4 ,只需在work
或${jetty.home}
下创建一个${jetty.base}
目录即可并重新启动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>