gpt4 book ai didi

java - 嵌入式 Jetty Web 服务器不工作,未调用处理程序

转载 作者:行者123 更新时间:2023-11-30 07:30:56 25 4
gpt4 key购买 nike

我正在尝试将 Jetty 8 (8.1.18.v20150929) 嵌入到 Java (jdk1.7.0_67) 应用程序中。我有以下代码:

    public static final String HTTP_PATH = "/session";
public static final int HTTP_PORT = 9995;
// Open the HTTP server for listening to requests.
logger.info("Starting HTTP server, Port: " + HTTP_PORT + ", Path: "
+ "/session");
httpServer = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(HTTP_PORT);
connector.setHost("localhost");
httpServer.addConnector(connector);
TestHttpHandler handler = new TestHttpHandler(this);
ContextHandler ch = new ContextHandler();
ch.setContextPath(HTTP_PATH);
ch.setHandler(handler);
httpServer.setHandler(ch);

try {
httpServer.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

作为测试,我的处理程序非常基本:

    public void handle(String target, Request baseRequest,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
logger.debug("Handling");
}

如果我运行应用程序,然后使用 CURL 将 GET 请求发送到 http://localhost:9995/session ,然后它返回 200 状态,但没有调试输出。

如果我访问http://localhost:9995/session2 ,我收到 404 错误。

我在网上阅读了很多示例,但由于某种原因,我似乎无法让处理程序正常工作。难道我做错了什么?谢谢

最佳答案

我遇到了完全相同的问题,这只是对 Jetty API 工作原理的误解。我本来希望使用 ContextHandlers 作为 REST 服务的最小实现,但是 ContextHandlers 旨在处理对整个上下文库的请求(例如 http://server:80/context-base ,即相当于 Tomcat 中的应用程序)。解决这个问题的正确方法是使用Servlet:

Server server = new Server(9995);
ServletContextHandler root = new ServletContextHandler(ServletContextHandler.NO_SECURITY | ServletContextHandler.NO_SESSIONS);
root.setContextPath("/");
ServletHolder holder = new ServletHolder(new HttpServlet() {
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
logger.debug("Handling");
}
});
server.start();
server.join();

关于java - 嵌入式 Jetty Web 服务器不工作,未调用处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36140334/

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