1

这是场景,

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

    META-INF/services/javax.servlet.ServletContainterInitializer

我们通过使用配置了服务器对象的 XMLConfiguration 以编程方式启动码头。

    XmlConfiguration configuration = new XmlConfiguration(in);

    if (type.isInstance(server))
    {
        configuration.configure(server);

        return;
    }

    boolean success = false;

    for (Handler handler : ((Server) server).getHandlers())
    {
        if (type.isInstance(handler))
        {
            configuration.configure(handler);

            success = true;
        }
    }

这是使用的 XML 文件。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Configure class="org.eclipse.jetty.server.Server" id="Server">
<Set name="ThreadPool">
    <New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
        <Set name="minThreads">2</Set>
        <Set name="maxThreads">10</Set>
        <Set name="detailedDump">false</Set>
    </New>
</Set>
<Call name="addConnector">
    <Arg>
        <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
            <Set name="port">8080</Set>
            <Set name="maxIdleTime">30000</Set>
            <Set name="Acceptors">2</Set>
            <Set name="statsOn">false</Set>
        </New>
    </Arg>
</Call>
<Set name="handler">
    <New class="org.eclipse.jetty.webapp.WebAppContext">
        <Arg type="String">src/main/webapp</Arg>
        <Arg type="String">/</Arg>
        <Set name="extraClasspath">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;
        </Set>
    </New>
</Set>
<Set name="stopAtShutdown">true</Set>
<Set name="sendServerVersion">true</Set>
<Set name="sendDateHeader">true</Set>
<Set name="gracefulShutdown">1000</Set>
<Set name="dumpAfterStart">false</Set>
<Set name="dumpBeforeStop">false</Set>
</Configure>

从 CLI 调用时,jetty DeploymentManager 会扫描类路径并调用 jar 文件中提供的 ServletContainerInitializer。在 XML 配置文件中提供的等效项是什么?

当代码作为战争部署到码头安装时,一切都按预期工作。所以,这证实了一切都是正确的。

4

1 回答 1

2

南比,

这是讨论在嵌入式模式下使用注释的码头文档页面的链接:http: //www.eclipse.org/jetty/documentation/current/using-annotations-embedded.html

您只需要在 xml 中执行与 java 代码等效的操作——这在 jetty 中总是非常简单的。如果您需要提示,请查看您的发行版并查看 etc/jetty-annotations.xml 文件在做什么。

此外,如果您在 extraClasspath 上的 jar 内有注释,那么您需要使用码头的 9.0.6-SNAPSHOT,因为我刚刚实现了该功能:)

于 2013-09-13T02:52:34.147 回答