我正在将我的应用程序从Jetty 7迁移到Jetty 8,但它并不是那么顺利。战斗目前在etc / jetty-webapps.xml。在此迁移之前,我们的配置始终将此值设置为“false”
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Ref id="DeploymentManager">
<Call id="webappprovider" name="addAppProvider">
<Arg>
<New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
<Set name="monitoredDirName"><Property name="jetty.home" default="." />/webapps</Set>
<Set name="defaultsDescriptor"><Property name="jetty.home" default="."/>/etc/webdefault.xml</Set>
<Set name="scanInterval">1</Set>
<Set name="contextXmlDir"><Property name="jetty.home" default="." />/contexts</Set>
<Set name="extractWars">false</Set>
</New>
</Arg>
</Call>
</Ref>
当我尝试bin / jetty.sh时,将此值设置为“false”Jetty会抛出异常,例如......
2013-04-08 17:33:03.380:INFO:oejd.DeploymentManager:Deployable added: /Users/bobk/work/workspace/DM_Server/build/distributions/device-management-1.6.5-DEVELOP-dev/webapps/root.war
2013-04-08 17:33:04.526:WARN:oejw.WebAppClassLoader:EXCEPTION
java.lang.IllegalArgumentException: !file: jar:file:/Users/bobk/work/workspace/DM_Server/build/distributions/device-management-1.6.5-DEVELOP-dev/webapps/root.war!/WEB-INF/lib/guava-14.0.1.jar
at org.eclipse.jetty.webapp.WebAppClassLoader.addClassPath(WebAppClassLoader.java:245)
at org.eclipse.jetty.webapp.WebAppClassLoader.addJars(WebAppClassLoader.java:282)
blah...blah...blah...
...对于WAR的WEB-INF / lib目录中的每个Jar文件。如果我将etc / jetty-webapps.xml中extractWars的值从“false”更改为“true”,我可以让jetty.sh开始成功加载我的webapp。就像我说的那样,自Jetty 6以来,这个值一直是“假的”,令人沮丧的是它不再有效。
“假”甚至是合法的设置了吗?如果是,我还需要设置,取消设置,包含在etc /目录,jetty.conf或start.ini文件中以使其工作?
非常感谢任何帮助。
答案 0 :(得分:3)
鲍勃,
错误跟踪器和所有doco for jetty-7,8和9都在Eclipse上找到,在这里:http://www.eclipse.org/jetty/
IIRC,在jetty-6中,尽管已将extractWar设置为false,但是封闭式jetty正在提取并复制WEB-INF目录以克服Windows下的热重新部署问题。因此,即使你认为自己没有完全放弃战争,至少部分战争仍在进行中。使用jetty-7,8,9我们精确地遵守extractWar,copyWebInf,copyWebDir的设置。默认是提取 - servlet规范的每次迭代都鼓励提取,因为有更多的功能在解压缩的战争中真正起作用。
扬