Jetty错误 - java.lang.IllegalStateException:没有id = Contexts的对象

时间:2014-01-03 02:12:18

标签: java deployment jetty

我想在两个并行的jetty实例上运行两个webapps(不同的端口)。 我正在使用jetty7.1.6并按照here的说明操作。 我的jetty-cp.xml(自定义jetty.xml)包含这一部分:

<Set name="handler">
  <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
    <Set name="handlers">
     <Array type="org.eclipse.jetty.server.Handler">
       <Item>
         <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
       </Item>
       <Item>
         <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
       </Item>
     </Array>
    </Set>
  </New>
</Set>

现在当我从命令行运行一个jetty实例(java -Djetty.home = / opt / jetty -jar /opt/jetty/start.jar etc / jetty-cp.xml)时,我收到以下错误:< / p>

2014-01-02 18:03:47.649:WARN::Config error at <Call name="addBean"><Arg>|        <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager"><Set name="contexts">|            <Ref id="Contexts"/>|          </Set><Call name="setContextAttribute"><Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg><Arg>.*/jsp-api-[^/]*\.jar$|.*/jsp-[^/]*\.jar$</Arg></Call><Call name="addAppProvider"><Arg>|              <New class="org.eclipse.jetty.deploy.providers.ContextProvider"><Set name="monitoredDir"><Property name="jetty.home" default="."/>/contexts</Set><Set name="scanInterval">5</Set></New>|            </Arg></Call><Call name="addAppProvider"><Arg>|              <New class="org.eclipse.jetty.deploy.providers.WebAppProvider"><Set name="monitoredDir"><Property name="jetty.home" default="."/>/webapps</Set><Set name="defaultsDescriptor"><Property name="jetty.home" default="."/>/etc/webdefault.xml</Set><Set name="scanInterval">5</Set><Set name="contextXmlDir"><Property name="jetty.home" default="."/>/contexts</Set></New>|            </Arg></Call></New>|      </Arg></Call> java.lang.IllegalStateException: No object for id=Contexts
2014-01-02 18:03:47.650:WARN::EXCEPTION 
java.lang.IllegalStateException: No object for id=Contexts
at org.eclipse.jetty.xml.XmlConfiguration.refObj(XmlConfiguration.java:676)
at org.eclipse.jetty.xml.XmlConfiguration.itemValue(XmlConfiguration.java:941)

这部分配置存在于/opt/jetty/etc/jetty-deploy.xml文件中。

我做错了什么?我已经在jetty-cp.xml文件中指定了id = Context的对象,我在命令行中指定了该对象。为什么jetty-deploy.xml中的部分无法找到它?

1 个答案:

答案 0 :(得分:1)

start.ini 取消注释 jetty-deploy.xml ,导致*<Ref id="Contexts"/>*在jetty-cp.xml中定义之前被解析。

基本上, start.ini 中提到的文件甚至在我在命令行中提到的 jetty-cp.xml 之前加载。这需要牢记在心。