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 实例化/提供服务]
  1. 编写 EJB 代码:你写了 OrderBean.java
  2. 编译为 JAR:将代码打包成 myapp-ejb.jar
  3. 打包为 EAR:将 myapp-ejb.jarmyapp-web.war 放进 myapp.ear 目录结构中。
  4. 部署到 WebLogic:WebLogic 解压 EAR,识别出里面有 EJB 模块,于是启动 EJB 容器来处理 OrderBean 的调用。

5. 为什么 WebLogic 强调这两者?

特性 Tomcat WebLogic
定位 轻量级 Web 容器 (Servlet Container) 重型应用服务器 (Application Server)
支持格式 仅支持 WAR (Web Archive) 支持 WAREAR
EJB 支持 原生不支持 (需插件如 TomEE) 原生支持 (Full Java EE)
业务处理 代码需手动管理事务、连接池 EJB 容器自动管理事务、连接池
适用场景 Web 页面、Restful API (轻量) 大型 ERP、电信计费、金融核心 (复杂)

总结

  • EJB 是你写的代码(业务逻辑),它享受 WebLogic 提供的“服务”(事务、连接池)。
  • EAR 是你最终交付给 WebLogic 的安装包,它把代码(EJB)和界面(WAR)打包在一起,告诉 WebLogic 如何启动整个系统。