gpt4 book ai didi

java - 在 Jetty 中部署简单的 Web 应用程序时遇到问题

转载 作者:行者123 更新时间:2023-12-02 10:05:45 26 4
gpt4 key购买 nike

我正在使用 Jetty 编写一个简单的服务器。

SimpleServer.java:

public class SimpleServer {

public static void main(String[] args) throws Exception {
Server server = new Server(8080);
server.setHandler(new ServerHandler());
server.start();
server.join();
}

}

ServerHandler.java:

public class ServerHandler extends AbstractHandler {

public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

response.setContentType("text/html; charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("<h1>Hello World</h1>");
}
}

我使用maven将文件打包成war文件,然后将它们扔到jetty/webapps目录中。我有一个名为 root.war 的 war 文件,这意味着上下文位于 localhost:8080/。但是当我访问它时,我在浏览器中收到以下错误:

HTTP ERROR 503

Problem accessing /. Reason:

Service Unavailable

在控制台中,我收到一个java.lang.reflect.InitationTargetException。该项目在 IntelliJ 中工作和运行。只有当我将其放入 jetty/webapps 文件夹时才会出现错误。

最佳答案

您的示例代码库是使用 Jetty Handler 编写的API。

WAR 文件需要 Servlet API ,而不是 Jetty Handler API。

如果您想继续使用 Jetty Handler API,那么您将继续使用 embedded-jetty 并在没有 WAR 文件的情况下完成所有操作。

如果您想要 WAR 文件,则不得使用 Jetty Handler API。

将您的代码迁移为使用 Servlet API,并在 Web 描述符 (WEB-INF/web.xml) 中添加对其的引用。这将生成一个可以部署的正确 WAR 文件。

public class ServerServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
{
response.setContentType("text/html; charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>Hello World</h1>");
}
}

注意:您可以选择使用 Servlet API Annotations而不是 WEB-INF/web.xml,但要知道您需要将 ${jetty.base} 实例目录配置为具有 annotations 模块已启用。

关于java - 在 Jetty 中部署简单的 Web 应用程序时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55349617/

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