Java 使用web.xml以编程方式启动jetty

Java 使用web.xml以编程方式启动jetty,java,eclipse,jetty,Java,Eclipse,Jetty,我创建了一个EclipseMaven项目并添加了jetty依赖项。接下来,我制作了一个简单的servlet和一个启动jetty服务器的类。以下是我到目前为止得到的信息: package com.example.jetty; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; public class App { public static voi

我创建了一个EclipseMaven项目并添加了jetty依赖项。接下来,我制作了一个简单的servlet和一个启动jetty服务器的类。以下是我到目前为止得到的信息:

package com.example.jetty;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;

public class App {
    public static void main(String[] args) throws Exception {
        Server server = new Server(80);
        ServletContextHandler servletContext = new ServletContextHandler(server, "/");
        servletContext.addServlet(MyServlet.class, "/");
        server.start();
    }
}
我的问题是,我看到的大多数教程都有一个web.xml来配置servlet等。我找不到编程方法来完成其中的一些。我是否可以创建一个web.xml,然后仍然以编程方式启动jetty,并以某种方式使用该web.xml进行配置


更具体地说,我需要在web.xml中编写true。我没有找到任何编程方法。

我将从一个您可能感兴趣的示例开始。如果要以编程方式使用
web.xml
Jetty服务器,则可以执行以下操作:

WebAppContext context = new WebAppContext();
context.setContextPath("/myWebApp");
context.setExtractWAR(false);
context.setDescriptor("/file/system/path/to/your/wab/app/WEB-INF/web.xml");
context.setResourceBase("/file/system/path/to/your/wab/app");
context.setConfigurationDiscovered(false);

HandlerList handlerList=new HandlerList();
handlerList.addHandler(webAppContext);

Server server = new Server(threadPool);
server.setHandler(handlerList);
server.start();

关于编程配置,您可以尝试使用
Servlet 3.x
API,该API由
Jetty 8.x
(当前
Jetty
版本
9.x
)支持,并且可以完全编程配置。

为什么不使用maven来完成这项工作呢?Maven jetty插件可以用作替代解决方案。哼我不太清楚。编程方式总是不同于声明方式。你到底想做什么?更具体地说,我需要在web.xml中编写true。我没有找到任何程序化的方法。可能是重复感谢你的回答。我是否正确地理解,只有当我想以编程方式配置Servlet3.xapi依赖项时,我才需要它?您还知道如何使用此api配置支持异步的属性的示例吗?要启用
Servlet 3.0
,您需要在
web.xml
中指定
version=“3.0”
,其他所有内容都可以留空,因此您可以将此类
web.xml
放在类路径中而不是文件系统中
@WebServlet
带参数
asyncSupported=true
可用于
async-supported
。您可以通过
Servlet 3.0
找到
Jetty
的示例