Jetty-Maven-Plugin读取jettyXml并仍然启动默认上下文

时间:2012-07-26 07:48:35

标签: embedded-jetty maven-jetty-plugin

我正在使用Jetty 8.1.4.v20120524和Maven 3.我的pom中有以下配置:

  <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>8.1.4.v20120524</version>
    <configuration>
      <jettyXml>${project.basedir}/src/main/resources/jetty.xml</jettyXml>
    </configuration>
  </plugin>

在我的jetty.xml中,我定义了一个上下文:

<Set name="handler">
  <New class="org.eclipse.jetty.server.handler.HandlerList">
    <Set name="handlers">
      <Array type="org.eclipse.jetty.server.Handler">
        <Item>
          <New class="org.eclipse.jetty.server.handler.ResourceHandler">
            <Set name="welcomeFiles">
              <Array type="String"><Item>index.xml,index.xhtml,index.html</Item></Array>
            </Set>
          </New>
        </Item>
        <Item>
          <New id="Contexts" class="org.eclipse.jetty.webapp.WebAppContext">
            <Set name="resourceBase"><SystemProperty name="jetty.home" default="src/main/webapp" /></Set>
            <Set name="contextPath">/</Set>
          </New>
        </Item>
      </Array>
    </Set>
  </New>
</Set>

这可以按预期工作,并在/:

启动我的应用程序
INFO:oejs.Server:jetty-8.1.4.v20120524
INFO:oejsh.ContextHandler:started o.e.j.w.WebAppContext{/,file:/<MY_DIRECTORY>/src/main/webapp/}
INFO:oejsh.ContextHandler:started o.e.j.w.WebAppContext{/,file:/<MY_DIRECTORY>/src/main/webapp/}

然而,在此之后,jetty-maven-plugin似乎试图启动一个默认上下文,它在找不到类时失败 - 它也试图绑定到“/”,这显然是我不想要的。

WARN:oejs.Holder:java.lang.ClassNotFoundException: org.basex.http.rest.RESTServlet
INFO:oejpw.PlusConfiguration:No Transaction manager found - if your webapp requires one, please configure one.
INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/<MY_DIRECTORY>/src/main/webapp/},file:/<MY_DIRECTORY>/src/main/webapp/
INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/<MY_DIRECTORY>/src/main/webapp/},file:/<MY_DIRECTORY>/src/main/webapp/
INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/,file:/<MY_DIRECTORY>/src/main/webapp/},file:/<MY_DIRECTORY>/src/main/webapp/

如何停止启动此上下文?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

根据Jan Bartel在邮件列表(http://dev.eclipse.org/mhonarc/lists/jetty-users/msg02419.html)上的答案,网络应用目前无法单独配置码头。 XML。

因此,我通过将与Web应用程序相关的内容(资源库和上下文路径)移动到maven pom.xml来解决了这个问题。

答案 1 :(得分:0)

我使用的是jetty-maven-plugin的8.1.4.v2012052版本,并试图在pom.xml中设置contextPath,例如:

<configuration>
<webAppConfig>
    <contextPath>${application.contextpath}</contextPath>
</webAppConfig> 
...
</configuration>

然而,contextPath仍然默认为“/".

我使用pom.xml中的相同配置降级到版本7.5.1.v20110908。然后显示了预期的contextPath。

因此,我认为这可能是通过降级解决的8.1.4版本的问题。