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” → 安装即可。
安装完成后,你就能在“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”:
你可以在这里配置以下关键参数:
- 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 插件,能显著提升开发效率,少走很多部署踩坑的弯路。