0

我正在将我的应用程序从 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 文件中以使其正常工作吗?

任何帮助是极大的赞赏。

4

1 回答 1

3

鲍勃,

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 规范的每次迭代都鼓励提取,因为有更多的特性在解压战争中真正发挥作用。

于 2013-04-10T23:08:14.110 回答