1. 概述

Java 的 Web 应用是其最主流的使用场景之一。Web 服务器和 Servlet 容器为应用提供了运行时环境。

然而,在传统 Web 服务器上部署和排查 Web 应用往往比较繁琐。好在现代 IDE 对大多数应用都提供了强大的调试支持。但对于 Web 应用来说,想要高效调试,最佳实践是将 Web 服务器直接嵌入到 IDE 中

本文将带你 在 Eclipse 中嵌入 Jetty 服务器,并在其上运行和调试 Web 应用,整个过程简单粗暴,适合日常开发提效。

2. Eclipse Jetty 插件

将 Jetty 集成到 Eclipse 最简单的方式就是使用 Eclipse Jetty Plugin

该插件会在 Eclipse 中添加一个受控的 Jetty 服务器实例,让你可以无缝地部署、测试甚至调试 Web 应用。同时,它还提供了图形化界面来配置服务器参数,省去了手动启动命令行的麻烦。

安装方式:通过 Eclipse Marketplace 一键安装
打开 Eclipse → Help → Eclipse Marketplace → 搜索 “Jetty” → 安装即可。

marketplace

安装完成后,你就能在“Run Configurations”中看到 Jetty 的选项了。

3. 示例应用

我们来写一个极简的 Web 应用用于演示。

3.1 web.xml 配置

在项目的 /src/main/webapp/WEB-INF/ 目录下创建 web.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee/webapp_4_0.xsd"
    version="4.0">

    <welcome-file-list>
        <welcome-file>helloworld.html</welcome-file>
    </welcome-file-list>

</web-app>

3.2 静态页面 helloworld.html

<!DOCTYPE html>
<html>
   <head>
      <meta charset="ISO-8859-1">
      <title>Hello World</title>
   </head>
   <body>Hello World!</body>
</html>

3.3 使用注解的 Servlet

我们不打算在 web.xml 中配置 Servlet 映射,而是采用 Servlet 3.0+ 的注解方式:

@WebServlet("/helloworld")
public class HelloWorldServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {
        resp.getWriter().println("Hello from Servlet!");
    }
}

⚠️ 关键点:Jetty 默认不支持注解扫描!
如果你直接运行,会发现 /helloworld 接口 404。原因在于:基础的 HTTP 模块不包含注解处理能力

✅ 解决方案:必须在启动配置中启用 Annotations Support Module,我们下一节讲怎么配。

4. 在 Jetty 上运行应用

传统部署方式五花八门,但 Eclipse Jetty 插件帮你屏蔽了这些差异,直接通过 IDE 启动,还能无缝接入调试器,开发体验拉满。

4.1 启动配置(Launch Configuration)

右键项目 → Run As → Run Configurations → 选择 “Jetty Webapp”:

Launch config

你可以在这里配置以下关键参数:

  • Context Path:应用上下文路径,比如 /myapp
  • HTTP Port:监听端口,默认 8080
  • Enable HTTPS:是否开启 HTTPS 支持
  • HTTPS Port:HTTPS 端口,默认 8443

💡 小技巧:Maven 项目可以勾选 “Use classpath dependencies”,这样依赖直接走项目 classpath,避免打包冲突。

5. Jetty 服务器配置项

Jetty 本身是一个高度可配置的 Servlet 容器,支持线程池、超时、模块化扩展等。

Eclipse Jetty 插件也继承了这些能力,你可以在 Launch Configuration 中启用以下常见模块:

模块 作用 是否常用
✅ Annotations Support 支持 @WebServlet 等注解 必开
✅ JNDI Support Jetty 管理 JNDI 资源 按需
✅ Websocket Support 支持 WebSocket 协议 按需
✅ JMX Support 可通过 JConsole 监控 Jetty 调优用
✅ JSP Support 支持 JSP 编译与部署 传统项目需要

🔧 如何开启 Annotations?
在 Launch Configuration → Jetty → Modules 中勾选 “annotations” 即可。

此外,Eclipse Jetty 4.0 插件默认内置 Jetty 9.3,但你也可以指定外部 Jetty 安装路径,灵活适配不同版本需求。

6. Jetty 控制台命令

Eclipse Jetty 提供了一个内置控制台,能执行一些实用的运维命令,对本地调试非常有帮助。

⚠️ 前提:必须在 Launch Configuration 中启用控制台(Console 选项卡勾选 “Enable Jetty Console”)。

启用后,在 Eclipse Console 窗口输入以下命令:

  • memory:查看当前 JVM 内存使用情况 ✅
  • threads:打印线程栈(thread dump)✅
  • restart:热重启应用 ⚠️(部分场景可能不生效)
  • stop:优雅关闭服务器及所有应用 ✅

这些命令在排查内存泄漏、死锁等问题时非常实用,相当于本地版的“运维工具箱”。

7. 总结

Eclipse Jetty 插件是 Java Web 开发中一个被低估的利器。它让你:

  • ✅ 零配置快速启动 Web 应用
  • ✅ 无缝接入 IDE 调试器,断点调试 Servlet 跟脚本一样方便
  • ✅ 支持模块化配置,灵活启用注解、JSP、WebSocket 等功能
  • ✅ 提供控制台命令,本地也能做简单运维操作

对于使用 Eclipse 的团队,尤其是维护传统 Servlet 项目或轻量级微服务的场景,强烈推荐接入 Jetty 插件,能显著提升开发效率,少走很多部署踩坑的弯路。


原始标题:Jetty Configuration in Eclipse