我想在两个并行的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中的部分无法找到它?
答案 0 :(得分:1)
start.ini 取消注释 jetty-deploy.xml ,导致*<Ref id="Contexts"/>*
在jetty-cp.xml中定义之前被解析。
基本上, start.ini 中提到的文件甚至在我在命令行中提到的 jetty-cp.xml 之前加载。这需要牢记在心。