gpt4 book ai didi

java - 从 Jetty 6 迁移到 Jetty 8

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:35 24 4
gpt4 key购买 nike

我在简单的应用程序中使用 jetty6 作为嵌入式 servlet 容器。我决定将它更新到 Jetty 8。在 jetty 6 中启动服务器非常简单:

Server server = new Server(8080);
Context context = new Context(server, "/", Context.SESSIONS);
context.addServlet(MyServlet.class, "/communication-service");
server.start();

但它在 Jetty8 中不起作用。不幸的是,我找不到这个版本的任何简单示例。无法实例化上下文错误

an enclosing instance that contains
org.eclipse.jetty.server.handler.ContextHandler.Context is required

因为现在它是一个内部类并且也没有这样的构造函数。

大多数示例针对 6 号和 7 号 jetty 。您能否提供一个简单的示例,说明如何在 jetty 8 启动 servlet?

最佳答案

这是与您的代码等效的 Jetty 8。它仍然和以前一样简单,但 API 略有变化。

如果这对您不起作用,那么您可能遇到了类路径问题 - Jetty 8 被分成许多独立的 jar 文件,您将需要其中的一些。至少你需要:

  • jetty 延续
  • jetty -http
  • jetty -io
  • jetty 安全
  • jetty 服务器
  • jetty-servlet
  • jetty 工具
  • servlet-api

如果您有这些 jar ,那么这段代码应该可以正常工作:

package test;

import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;

public class Jetty8Server {
public static class MyServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/plain");
response.getWriter().write(getClass().getName() + " - OK");
}
}
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS);
handler.setContextPath("/"); // technically not required, as "/" is the default
handler.addServlet(MyServlet.class, "/communication-service");
server.setHandler(handler);
server.start();
}
}

关于java - 从 Jetty 6 迁移到 Jetty 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9278912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com