Weblogic种EAR和EJB讲解
1. 核心定义与类比
| 概念 | 全称 | 类型 | 类比 |
|---|---|---|---|
| EAR | Enterprise Archive | 文件格式/部署单元 | “集装箱”。它只是一个容器,用来打包整个企业级应用。 |
| EJB | Enterprise JavaBeans | 编程模型/组件 | “集装箱里的精密仪器”。它是核心业务逻辑代码,处理计算、事务等。 |
2. EAR (Enterprise Archive) —— 部署包
是什么:
EAR 是一种用于部署企业级应用程序的归档文件格式(文件后缀为 .ear)。它类似于 Web 应用的 WAR 包,但它更高级,可以包含多个模块。
能装什么:
一个标准的 .ear 文件通常包含以下内容:
- EJB JAR 包:包含服务端业务逻辑(Session Beans, Message-Driven Beans)。
- WAR 包:包含 Web 界面(JSP, Servlet, HTML)。
- Lib 文件夹:共享的 JAR 包或类库。
- META-INF 目录:包含
application.xml,定义了整个应用的部署描述符(声明包含哪些 EJB 和 Web 模块)。
在 WebLogic 中的作用:
WebLogic 作为一个全功能的 Java EE 应用服务器,可以直接接收并部署 .ear 文件。它是 WebLogic 管理企业应用的最小部署单元。
3. EJB (Enterprise JavaBeans) —— 业务组件
是什么:
EJB 是 Java EE 规范中用于构建分布式、事务性、多线程业务逻辑的编程模型。
核心特点:
- **容器管理事务 (CMT)**:你不需要写
try-catch提交事务,只需在方法上标注@TransactionAttribute,WebLogic 自动处理。 - 自动连接池:WebLogic 自动管理数据库连接。
- 安全性:通过注解或 XML 配置即可限制角色访问方法。
- 并发控制:WebLogic 自动管理线程池,保证无状态 Bean (Stateless) 的线程安全。
在 WebLogic 中的作用:
EJB 是 WebLogic 的灵魂。WebLogic 的容器(EJB Container)负责加载 EJB JAR,并在运行期提供上述的“服务”(事务、安全、连接池)。
4. 它们的配合流程
graph LR
A[开发阶段] -->|编写业务代码| B(EJB Session Bean)
B -->|编译打包| C(EJB JAR)
C -->|放入 EAR 包中| D(Enterprise Archive .ear)
D -->|部署到 WebLogic| E(WebLogic 服务器)
E -->|解析 application.xml| F[启动 EJB Container]
F -->|加载 EJB JAR| G[EJB 实例化/提供服务]
- 编写 EJB 代码:你写了
OrderBean.java。 - 编译为 JAR:将代码打包成
myapp-ejb.jar。 - 打包为 EAR:将
myapp-ejb.jar和myapp-web.war放进myapp.ear目录结构中。 - 部署到 WebLogic:WebLogic 解压 EAR,识别出里面有 EJB 模块,于是启动 EJB 容器来处理
OrderBean的调用。
5. 为什么 WebLogic 强调这两者?
| 特性 | Tomcat | WebLogic |
|---|---|---|
| 定位 | 轻量级 Web 容器 (Servlet Container) | 重型应用服务器 (Application Server) |
| 支持格式 | 仅支持 WAR (Web Archive) | 支持 WAR 和 EAR |
| EJB 支持 | 原生不支持 (需插件如 TomEE) | 原生支持 (Full Java EE) |
| 业务处理 | 代码需手动管理事务、连接池 | EJB 容器自动管理事务、连接池 |
| 适用场景 | Web 页面、Restful API (轻量) | 大型 ERP、电信计费、金融核心 (复杂) |
总结
- EJB 是你写的代码(业务逻辑),它享受 WebLogic 提供的“服务”(事务、连接池)。
- EAR 是你最终交付给 WebLogic 的安装包,它把代码(EJB)和界面(WAR)打包在一起,告诉 WebLogic 如何启动整个系统。