设置WebAppContext.ConfigurationClass时,jetty-web.xml中的java.lang.reflect.InvocationTargetException

设置WebAppContext.ConfigurationClass时,jetty-web.xml中的java.lang.reflect.InvocationTargetException,jetty,sbt,xsbt-web-plugin,jetty-9,Jetty,Sbt,Xsbt Web Plugin,Jetty 9,我试图将org.eclipse.jetty.annotations.AnnotationConfiguration添加到org.eclipse.jetty.webapp.WebAppContext的configurationClasses属性中,但是(使用sbt containe:start调用jetty时),得到: [warn] Config error at <Set name="configurationClasses"> [warn] <Array ty

我试图将
org.eclipse.jetty.annotations.AnnotationConfiguration
添加到
org.eclipse.jetty.webapp.WebAppContext
configurationClasses
属性中,但是(使用
sbt containe:start
调用jetty时),得到:

[warn] Config error at <Set name="configurationClasses">
[warn]         <Array type="java.lang.String"><Item>org.eclipse.jetty.webapp.WebInfConfiguration</Item><Item>org.eclipse.jetty.webapp.WebXmlConfiguration</Item><Item>org.eclipse.jetty.webapp.MetaInfConfiguration</Item><Item>org.eclipse.jetty.webapp.FragmentConfiguration</Item><Item>org.eclipse.jetty.plus.webapp.EnvConfiguration</Item><Item>org.eclipse.jetty.plus.webapp.PlusConfiguration</Item><Item>org.eclipse.jetty.annotations.AnnotationConfiguration</Item><Item>org.eclipse.jetty.webapp.JettyWebXmlConfiguration</Item></Array>
[warn]     </Set>java.lang.reflect.InvocationTargetException in file:/Users/erik.allik/code/scala/webtest/src/main/webapp/WEB-INF/jetty-web.xml
[warn] Failed startup of context o.e.j.w.WebAppContext@33acb4a1{/,[file:/Users/erik.allik/code/scala/webtest/src/main/webapp/],STARTING}

答案:根据决定,xsbt web插件将
WebAppContext
的configurations属性设置为硬编码的值,因此无论XML配置中有什么,它都可能被忽略(或者显然会导致错误)。

存在配置类来配置
WebAppContext
本身

在生命周期中,在
jetty web.xml
或jetty IoC xml可部署上下文中添加配置太迟

如果您查看
etc/jetty annotations.xml
您将看到


org.eclipse.jetty.webapp.JettyWebXmlConfiguration
org.eclipse.jetty.annotations.AnnotationConfiguration
etc/jetty plus.xml
您将看到


org.eclipse.jetty.webapp.FragmentConfiguration
org.eclipse.jetty.plus.webapp.EnvConfiguration
org.eclipse.jetty.plus.webapp.plus配置

如果您注意到,您将看到这些是在服务器级别配置的,并且基于现有的默认设置(以满足配置的订购要求)。

关于“将配置应用于单个webapp”的部分如何?该文档是针对Jetty 7(又名Servlet 2.5)-Jetty 9文档(又名Servlet 3.1)是at-servlet/filters/websockets/etc的注释扫描。。。WebSocketContext中不支持(也称为端点)。如果您觉得这很重要,请在bugs.eclipse.org(在RT/Jetty下)上提交一个bug。“在
WebAppContext
中不受支持”您的意思是?…在任何情况下,当使用xsbt web插件和嵌入式Jetty时,除了直接在Java/Scala代码中创建Jetty实例之外,还有什么方法可以更改配置列表吗(相对于让xsbt web插件的
容器:start
命令为我做这件事)ErikAllik(也称irc上的RaceCondition)请重新加入irc。
<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="configurationClasses">
        <Array type="java.lang.String">
            <Item>org.eclipse.jetty.webapp.WebInfConfiguration</Item>
            <Item>org.eclipse.jetty.webapp.WebXmlConfiguration</Item>
            <Item>org.eclipse.jetty.webapp.MetaInfConfiguration</Item>
            <Item>org.eclipse.jetty.webapp.FragmentConfiguration</Item>
            <Item>org.eclipse.jetty.plus.webapp.EnvConfiguration</Item>
            <Item>org.eclipse.jetty.plus.webapp.PlusConfiguration</Item>
            <Item>org.eclipse.jetty.annotations.AnnotationConfiguration</Item>
            <Item>org.eclipse.jetty.webapp.JettyWebXmlConfiguration</Item>
        </Array>
    </Set>
</Configure>