【问题标题】:Having trouble deploying simple web app in Jetty在 Jetty 中部署简单的 Web 应用程序时遇到问题
【发布时间】:2019-03-26 03:55:49
【问题描述】:

我正在使用 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.InvocationTargetException。该项目在 IntelliJ 中工作和运行。只有当我将它放在 jetty/webapps 文件夹中时,才会出现错误。

【问题讨论】:

  • 发布您的 web.xml

标签: java jetty


【解决方案1】:

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

WAR 文件需要 Servlet API,而不是 Jetty 处理程序 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 模块。

【讨论】:

  • 好的,这是有道理的。我在浏览 eclipse 文档时没有选择这个。
猜你喜欢
  • 2017-05-03
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 2016-08-27
  • 1970-01-01
相关资源
最近更新 更多