使用网络.xml以编程方式启动码头

2022-09-04 22:41:59

我创建了一个eclipse maven项目,并添加了码头依赖关系。接下来,我制作了一个简单的 servlet 和一个启动码头服务器的类。以下是我到目前为止得到的:

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,但仍然以编程方式启动我的码头,并以某种方式使用该 web.xml 进行配置?

更具体地说,我需要在web.xml中写真。我没有找到任何以编程方式做到这一点的方法。


答案 1

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

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();

关于编程配置,您可以尝试使用API,该API从(当前版本)开始受支持,并且可以以编程方式完全配置。Servlet 3.xJetty 8.xJetty9.x


答案 2

推荐