Jetty ServletContainerInitialization(SCI)不';t调用web片段中提供的初始值设定项

Jetty ServletContainerInitialization(SCI)不';t调用web片段中提供的初始值设定项,jetty,embedded-jetty,servlet-3.0,Jetty,Embedded Jetty,Servlet 3.0,这是一个场景 webapp包含一个web.xml 其中一个jar包含ServletContainerInitializer META-INF/services/javax.servlet.ServletContainerInitializer 从语法上讲,我们使用XMLConfiguration启动jetty,XMLConfiguration配置了一个服务器对象 XmlConfiguration配置=新的XmlConfiguration(in); if(类型.isInstance(服务器))

这是一个场景

  • webapp包含一个
    web.xml
  • 其中一个jar包含ServletContainerInitializer

    META-INF/services/javax.servlet.ServletContainerInitializer

从语法上讲,我们使用XMLConfiguration启动jetty,XMLConfiguration配置了一个服务器对象

XmlConfiguration配置=新的XmlConfiguration(in);
if(类型.isInstance(服务器))
{
配置(服务器);
返回;
}
布尔成功=假;
对于(处理程序:((服务器)服务器).getHandlers())
{
if(类型.isInstance(处理程序))
{
配置(处理程序);
成功=真实;
}
}
下面是使用的XML文件


2.
10
假的
8080
30000
2.
假的
src/main/webapp
/
S:/git/projects/p1/target/classes;
S:/maven.repo/org/apache/ahc/1.1.2/ahc-1.1.2.jar;
S:/maven.repo/com/sun/xml/bind/jaxb-xjc/2.2.3.20110115/jaxb-xjc-2.2.3.20110115.jar;
S:/maven.repo/com/springsource/org/hsqldb/1.8.0.10/hsqldb-1.8.0.10.jar;
S:/maven.repo/com/springsource/org/jdom/1.0.0/jdom-1.0.0.jar;
S:/maven.repo/org/apache/mina/1.1.9/mina-1.1.9.jar;
S:/maven.repo/com/springsource/com/mysql/jdbc/5.1.6/jdbc-5.1.6.jar;
真的
真的
真的
1000
假的
假的
从CLI调用时,jetty DeploymentManager扫描类路径并调用jar文件中提供的ServletContainerInitializer。在XML配置文件中提供的等价物是什么

当代码作为war部署到jetty安装中时,一切都按预期工作。 因此,这证实了一切都是正确的。

Nambi

以下是jetty文档页面的链接,该页面讨论在嵌入式模式下使用注释:

您只需要用xml编写java代码的等价物,这在jetty中总是非常简单。如果需要提示,请查看发行版并查看etc/jetty-annotations.xml文件的作用

另外,如果您在ExtrassPath上的JAR中有注释,那么您需要使用jetty的9.0.6-SNAPSHOT,因为我刚刚实现了该功能:)


Jan

唯一的区别是XML和Java。最终两者都将“org.eclipse.jetty.webapp.WebAppContext”设置为处理程序。我的问题是为什么“WebAppContent”在启动时不会触发SCI(ServletContainerInitializer)?需要配置哪些额外的处理程序/bean,以便jetty可以在容器启动期间触发SCI?