EJB3使用说明中文版
需积分: 0 36 浏览量
更新于2008-10-26
收藏 1.68MB PDF 举报
### EJB3 使用说明中文版知识点总结
#### 一、EJB3 概念与应用场景
**企业 Java Beans (EJB)** 是一种基于 Java 的中间件技术,它为开发复杂的企业级应用程序提供了一种标准化的方法。EJB3 相比于早期版本有了很大的改进,特别是在简化开发流程和提高开发效率方面。
**EJB3 特点**:
- **简化部署**:EJB3 允许开发者通过注解来声明 Bean 的行为,大大减少了 XML 配置的使用。
- **POJOs**:EJB3 支持纯 Java 对象 (POJOs),使得 EJBs 更加轻量级和易于开发。
- **生命周期管理**:EJB 容器负责管理 Bean 的创建、销毁以及事务管理等,从而减轻了开发者的工作负担。
#### 二、EJB3 运行环境配置
**2.1 下载与安装**:
- **JBoss AS**: 需要下载并安装支持 EJB3 的 JBoss AS(Application Server),通常推荐使用最新版本。
- **Java SDK**: 确保已安装兼容的 Java SDK,建议使用 Java 8 或更高版本。
**2.2 运行一个 EJB3 例子**:
- 创建一个新的 Maven 项目,并添加必要的依赖(如 `javax.ejb` 和 `org.jboss.ejb-client`)。
- 编写一个简单的 Stateless Session Bean 示例,使用 `@Stateless` 注解。
**2.3 在独立的 TOMCAT 或 SWING 中调用 EJB**:
- **TOMCAT**: 可以通过 Web 应用程序中的 EJB 客户端 API 来远程访问 EJB。
- **SWING**: 开发桌面应用程序时,同样可以通过 JNDI 查找来访问 EJB。
**2.4 发布在 JBOSS 中的 WEB 应用调用 EJB**:
- 在 JBoss AS 中部署 Web 应用程序,通过 JNDI 查找 EJB 的远程接口进行调用。
**2.5 如何获取最新的内嵌 EJB3 的 JBOSS 版本**:
- 访问 JBoss 官方网站或 GitHub 仓库,查看最新的发行版信息。
#### 三、基础知识学习
**3.1 熟悉 JBOSS 的目录结构**:
- 了解 JBoss 的目录结构对于正确部署和配置 EJB 至关重要。
- 关键目录包括 `standalone/deployments`(用于放置部署的应用程序)和 `modules`(用于存放第三方库)等。
**3.2 JBOSS 中的部署**:
- EJBs 可以被打包成 `.jar` 文件,并直接放置在 `deployments` 目录下。
- 也可以作为 EAR 或 WAR 文件的一部分部署。
**3.3 如何进行 EJB 打包**:
- 使用 Maven 或 Ant 等工具可以方便地创建 EJB 包。
- 一般采用 `ejb-jar.xml` 和 `persistence.xml` 进行配置。
**3.4 如何进行 WEB 应用打包**:
- 使用 Maven 或 Ant 创建 WAR 文件。
- 包含所需的 JAR 文件和配置文件。
**3.5 使用了第三方类库的 EJB 如何打包**:
- 第三方库通常放在 `lib` 目录下,并在 `MANIFEST.MF` 文件中声明。
**3.6 共用了第三方类库的 J2EE 项目如何打包**:
- 如果多个项目共享相同的库,可以在项目结构中设置共享库的位置,并在构建过程中引用。
**3.7 如何恢复本书配套例子的开发环境**:
- 根据提供的步骤安装必要的软件和框架。
- 复制示例代码到相应的项目目录,并按照说明进行配置。
**3.8 如何对 EJB3 进行调试**:
- 使用 IDE 的调试功能,如 Eclipse 或 IntelliJ IDEA。
- 设置断点,观察变量值的变化,跟踪执行流程。
**3.9 单元测试**:
- 使用 JUnit 或其他测试框架编写单元测试。
- 测试方法的正确性和异常处理逻辑。
#### 四、会话 Bean (Session Bean)
**4.1 STATELESS SESSION BEANS(无状态 Bean)开发**:
- **只存在 Remote 接口的无状态 SessionBean**:定义一个接口和对应的 Bean 类,使用 `@Stateless` 和 `@Remote` 注解。
- **只存在 Local 接口的无状态 SessionBean**:与上一种类似,但使用 `@Local` 注解。
- **存在 Remote 与 Local 接口的无状态 SessionBean**:同时定义两个接口和 Bean 类,分别使用 `@Remote` 和 `@Local`。
**4.2 STATEFUL SESSION BEANS(有状态 Bean)开发**:
- 有状态 SessionBean 用于维护客户端状态。
- 使用 `@Stateful` 注解定义 Bean。
**4.3 STATELESS SESSION BEAN 与 STATEFUL SESSION BEAN 的区别**:
- 无状态 SessionBean 不保留客户端状态,而有状态 SessionBean 则保持。
- 有状态 Bean 适用于需要保持会话状态的场景。
**4.4 如何改变 SESSION BEAN 的 JNDI 名称**:
- 通过 `@Name` 注解指定 JNDI 名称。
**4.5 SESSION BEAN 的生命周期**:
- 创建、激活、被动和销毁等阶段。
- 容器负责管理整个生命周期。
**4.6 拦截器 (INTERCEPTOR)**:
- 用于在方法调用前后执行自定义代码。
- 使用 `@Interceptor` 和 `@AroundInvoke` 等注解定义。
**4.7 依赖注入 (DEPENDENCY INJECTION)**:
- 使用 `@Inject` 注解自动注入 Bean。
- 无需显式创建对象。
**4.8 定时服务 (TIMERSERVICE)**:
- 定义定时任务。
- 使用 `@Timeout` 注解处理超时事件。
**4.9 安全服务 (SECURITY SERVICE)**:
- 实现基于角色的安全性。
- 自定义安全域,如使用 `@SecurityDomain`。
**4.9.1 自定义安全域**:
- 定义安全策略和认证机制。
#### 五、JMS(Java Message Service)
**5.1 消息驱动 Bean (Message Driven Bean)**:
- 用于处理异步消息。
- 使用 `@MessageDriven` 注解定义。
**5.1.1 Queue 消息的发送与接收 (PTP 消息传递模型)**:
- PTP 模型表示点对点模型。
- 发送者发送消息到 Queue,消费者从 Queue 中取出并消费消息。
**5.1.2 Topic 消息的发送与接收 (Pub/sub 消息传递模型)**:
- Pub/sub 模型表示发布订阅模型。
- 发布者发送消息到 Topic,多个订阅者可以接收消息。
#### 六、实体 Bean (Entity Bean)
**6.1 实体 Bean 的组成文件 PERSISTENCE.XML 配置**:
- 定义实体类和数据源的映射关系。
**6.2 JBOSS 数据源的配置**:
- **MySql 数据源的配置**:定义连接池、用户名和密码等信息。
- **MsSqlServer2000 数据源的配置**:与 MySQL 类似,注意驱动和 URL 的差异。
- **Oracle9i 数据源的配置**:同样需要定义连接池等信息。
**6.3 实体 Bean 发布前的准备工作**:
- 确保数据源配置正确。
- 实体类和配置文件准备就绪。
**6.4 单表映射的实体 Bean**:
- 定义实体类,使用 `@Entity` 注解标记。
- 使用 `@Table` 指定表名。
**6.5 属性映射**:
- 映射实体类属性到数据库表字段。
- 使用 `@Column` 注解指定字段名称。
**6.6 持久化实体管理器 ENTITYMANAGER**:
- 提供了对实体的 CRUD 操作。
- 使用 `@PersistenceContext` 注入 EntityManager。
**6.6.1 Entity 获取 find() 或 getReference()**:
- `find()` 方法根据主键查找实体。
- `getReference()` 方法返回实体的引用。
**6.6.2 添加 persist()**:
- 保存新实体到数据库。
**6.6.3 更新实体**:
- 修改实体后调用 flush() 方法更新数据库。
**6.6.4 合并 Merge()**:
- 将非托管实体合并到当前事务中。
**6.6.5 删除 Remove()**:
- 删除实体。
**6.6.6 执行 EJB3QL 操作 createQuery()**:
- 执行 EJB3 查询语言 (EJB3QL) 查询。
**6.6.7 执行 SQL 操作 createNativeQuery()**:
- 执行原生 SQL 查询。
**6.6.8 刷新实体 refresh()**:
- 重新加载实体的状态。
**6.6.9 检测实体当前是否被管理中 contains()**:
- 检查实体是否处于托管状态。
**6.6.10 分离所有当前正在被管理的实体 clear()**:
- 移除所有托管实体。
**6.6.11 将实体的改变立刻刷新到数据库中 flush()**:
- 强制将更改同步到数据库。
**6.6.12 改变实体管理器的 Flush 模式 setFlushMode()**:
- 设置 Flush 模式。
**6.6.13 获取持久化实现者的引用 getDelegate()**:
- 获取底层持久化实现的引用。
**6.7 关系/对象映射**:
- 实体之间的关联关系映射。
- 使用 `@OneToOne`、`@OneToMany`、`@ManyToOne` 和 `@ManyToMany` 等注解。
**6.7.1 映射的表名或列名与数据库保留字同名时的处理**:
- 使用 `@Column(name = "ColumnName")` 明确指定列名。
**6.7.2 一对多及多对一映射**:
- 一对多和多对一关联使用 `@OneToMany` 和 `@ManyToOne`。
**6.7.3 一对一映射**:
- 使用 `@OneToOne`。
**6.7.4 多对多映射**:
- 使用 `@ManyToMany`。
**6.8 使用参数查询**:
- **命名参数查询**:使用 `:parameterName` 形式。
- **位置参数查询**:使用 `?1`, `?2` 等形式。
- **Date 参数**:处理日期类型的参数。
**6.9 EJB3QL 语言**:
- **大小写敏感性 (Case Sensitivity)**:默认情况下不区分大小写。
- **排序 (orderby)**:对结果进行排序。
- **查询部分属性**:选择特定的属性。
- **查询中使用构造器 (Constructor)**:创建新的对象实例。
- **聚合查询 (Aggregation)**:执行聚合函数,如 SUM, AVG 等。
- **关联 (join)**:连接多个实体。
通过以上知识点的学习,开发者可以全面掌握 EJB3 的核心概念和技术细节,从而能够有效地开发出高性能的企业级应用。
standiorq
- 粉丝: 1
- 资源: 4
最新资源
- 学生抑郁数据集-可以用于分析学生的心理健康趋势
- 配电网优化模型matlab 考虑可转移负荷、中断负荷以及储能、分布式能源的33节点系统优化模型,采用改进麻雀搜索算法,以IEEE33节点为例,以风电运维成本、网损成本等为目标,得到系统优化结果,一共有
- 客户购物 (最新趋势) 数据集
- 运行在PostgreSQL中的AdventureWorks示例数据库
- 基于SpringBoot的在线考试系统源代码全套技术资料.zip
- 纯电动汽车两档ATM变速箱simulink模型,模型实现了两档AMT挡策略和挡过程仿真,内含详细文档和注释模型,可运行
- 四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明
- MicrosoftEdge-X64-131.0.2903.99.rar
- 玩转西门子V90扭矩控制功能-各种扭矩参数功能详解.mp4
- 最新云夕打赏系统源码分享