logo资料库

EJB3.0实例教程 — 企业应用开发核心技术.pdf

第1页 / 共195页
第2页 / 共195页
第3页 / 共195页
第4页 / 共195页
第5页 / 共195页
第6页 / 共195页
第7页 / 共195页
第8页 / 共195页
资料共195页,剩余部分请下载后查看
企业应用开发核心技术
目录
第一章 前言
1.1 本教程适合人群
1.2 联系作者
1.3 《EJB3.0实例教程》官方MSN群
1.4 版权声明
第二章 运行环境配置
2.1 下载与安装
2.2 运行一个EJB3例子
2.3 在独立的Tomcat 或swing中调用EJB
2.4 发布在JBOSS中的WEB 应用调用EJB
2.5 如何获取最新的内嵌EJB3的JBOSS 版本
第三章 基础知识学习
3.1 熟悉JBoss的目录结构
3.2 JBoss中的部署
3.3 如何进行EJB打包
3.4 如何进行WEB应用打包
3.5 使用了第三方类库的EJB 如何打包
3.6 共用了第三方类库的J2EE 项目如何打包
3.7 如何恢复本书配套例子的开发环境
3.8 如何对EJB3进行调试
3.9 单元测试
第四章 会话Bean(Session Bean)
4.1 Stateless Session Beans(无状态bean)开发
4.1.1 开发只存在Remote 接口的无状态Session Bean
4.1.2 开发只存在Local 接口的无状态Session Bean
4.1.3 开发存在Remote 与Local 接口的无状态Session Bean
4.2 Stateful Session Beans(有状态bean)开发
4.3 Stateless Session Bean与Stateful Session Bean的区别
4.4 如何改变Session Bean的JNDI 名称
4.5 Session Bean的生命周期
4.6 拦截器(Interceptor)
4.7 依赖注入(dependency injection)
4.8 定时服务(Timer Service)
4.9 安全服务(Security service)
4.9.1 自定义安全域
第五章 消息驱动Bean (Message Driven Bean)
第六章 实体Bean(Entity Bean)
6.1 实体Bean的组成文件persistence.xml配置
6.2 JBoss数据源的配置
6.2.1 MySql 数据源的配置
6.2.2 Ms Sql Server2000 数据源的配置
6.2.3 Oralce9i 数据源的配置
6.3 实体Bean发布前的准备工作
6.4 单表映射的实体Bean
6.5 属性映射
6.6 持久化实体管理器EntityManager
6.6.1 Entity获取find()或getReference()
6.6.2 添加persist()
6.6.3 更新实体
6.6.4 合并Merge()
6.6.5 删除Remove()
6.6.6 执行EJB3 QL 操作createQuery()
6.6.7 执行SQL操作createNativeQuery()
6.6.8 刷新实体refresh()
6.6.9 检测实体当前是否被管理中contains()
6.6.10 分离所有当前正在被管理的实体clear()
6.6.11 将实体的改变立刻刷新到数据库中flush()
6.6.12 改变实体管理器的Flush模式setFlushMode()
6.6.13 获取持久化实现者的引用getDelegate( )
6.7 关系/对象映射
6.7.1 映射的表名或列名与数据库保留字同名时的处理
6.7.2 一对多及多对一映射
6.7.3 一对一映射
6.7.4 多对多映射
6.8 使用参数查询
6.8.1 命名参数查询
6.8.2 位置参数查询
6.8.3 Date 参数
6.9 EJB3 QL语言
6.9.1 大小写敏感性(Case Sensitivity)
6.9.2 排序(order by)
6.9.3 查询部分属性
6.9.4 查询中使用构造器(Constructor)
6.9.5 聚合查询(Aggregation)
6.9.6 关联(join)
6.9.7 排除相同的记录DISTINCT
6.9.8 比较Entity
6.9.9 批量更新(Batch Update)
6.9.10 批量删除(Batch Remove)
6.9.11 使用操作符NOT
6.9.12 使用操作符BETWEEN
6.9.13 使用操作符IN
6.9.14 使用操作符LIKE
6.9.15 使用操作符IS NULL
6.9.16 使用操作符IS EMPTY
6.9.17 使用操作符EXISTS
6.9.18 字符串函数
6.9.19 计算函数
6.9.20 子查询
6.9.21 结果集分页
6.10 调用存储过程
6.10.1 调用无返回值的存储过程
6.10.2 调用返回单值的存储过程
6.10.3 调用返回表全部列的存储过程
6.10.4 调用返回部分列的存储过程
6.11 事务管理服务
6.12 Entity的生命周期和状态
6.12.1 生命周期回调事件
6.12.2 在外部类中实现回调
6.12.3 在Entity 类中实现回调
6.13 复合主键(Composite Primary Key)
6.14 实体继承
6.14.1 每个类分层结构一张表(table per class hierarchy)
6.14.2 每个子类一张表(table per subclass)
6.14.3 每个具体类一张表(table per concrete class)
第七章 Web 服务(Web Service)
7.1 Web Service 的创建
7.2 Web Service 的客户端调用
7.2.1 用java 语言调用Web Service
7.2.2 用asp 调用Web Service
第八章 使用EJB3.0 构建轻量级应用框架
8.1 在WEB 中使用EJB3.0框架
8.1.1 如何使用Session Bean
8.1.2 如何使用Message Driven Bean
8.1.3 如何使用依赖注入(dependency injection)
8.1.4 如何使用Entity Bean
Jboss EJB3.0 实例教程 版权所有:黎活明
Jboss EJB3.0 实例教程 第一章 前言 .........................................................................................................................................................................5 1.1 本教程适合人群.........................................................................................................................................................5 1.2 联系作者.....................................................................................................................................................................5 1.3 《EJB3.0 实例教程》官方 MSN 群..........................................................................................................................5 1.4 版权声明.....................................................................................................................................................................5 第二章 运行环境配置 .........................................................................................................................................................6 2.1 下载与安装.................................................................................................................................................................6 2.2 运行一个 EJB3 例子 ..................................................................................................................................................8 2.3 在独立的 TOMCAT 或 SWING 中调用 EJB.................................................................................................................8 2.4 发布在 JBOSS 中的 WEB 应用调用 EJB.................................................................................................................9 2.5 如何获取最新的内嵌 EJB3 的 JBOSS 版本.............................................................................................................9 第三章 基础知识学习 .......................................................................................................................................................11 3.1 熟悉 JBOSS 的目录结构...........................................................................................................................................11 3.2 JBOSS 中的部署 ........................................................................................................................................................11 3.3 如何进行 EJB 打包 ..................................................................................................................................................12 3.4 如何进行 WEB 应用打包........................................................................................................................................12 3.5 使用了第三方类库的 EJB 如何打包 ......................................................................................................................14 3.6 共用了第三方类库的 J2EE 项目如何打包.............................................................................................................14 3.7 如何恢复本书配套例子的开发环境 .......................................................................................................................16 3.8 如何对 EJB3 进行调试 ............................................................................................................................................21 3.9 单元测试...................................................................................................................................................................29 第四章 会话 BEAN(SESSION BEAN)............................................................................................................................34 4.1 STATELESS SESSION BEANS(无状态 BEAN)开发 ..................................................................................................34 4.1.1 开发只存在Remote 接口的无状态Session Bean..........................................................................................34 4.1.2 开发只存在Local 接口的无状态Session Bean.............................................................................................37 4.1.3 开发存在Remote 与Local 接口的无状态Session Bean...............................................................................38 4.2 STATEFUL SESSION BEANS(有状态 BEAN)开发....................................................................................................41 4.3 STATELESS SESSION BEAN 与 STATEFUL SESSION BEAN 的区别...............................................................................43 4.4 如何改变 SESSION BEAN 的 JNDI 名称..................................................................................................................44 4.5 SESSION BEAN 的生命周期 .......................................................................................................................................44 4.6 拦截器(INTERCEPTOR)..............................................................................................................................................47 4.7 依赖注入(DEPENDENCY INJECTION)..........................................................................................................................51 4.8 定时服务(TIMER SERVICE).......................................................................................................................................55 4.9 安全服务(SECURITY SERVICE)..................................................................................................................................57 4.9.1 自定义安全域..................................................................................................................................................62 第五章 消息驱动 BEAN (MESSAGE DRIVEN BEAN)...............................................................................................64 第六章 实体 BEAN(ENTITY BEAN).............................................................................................................................67 6.1 实体 BEAN 的组成文件 PERSISTENCE.XML 配置.....................................................................................................67 6.2 JBOSS 数据源的配置.................................................................................................................................................68 6.2.1 MySql 数据源的配置........................................................................................................................................68 版权所有:黎活明
Jboss EJB3.0 实例教程 6.2.2 Ms Sql Server2000 数据源的配置....................................................................................................................69 6.2.3 Oralce9i 数据源的配置....................................................................................................................................69 6.3 实体 BEAN 发布前的准备工作................................................................................................................................70 6.4 单表映射的实体 BEAN.............................................................................................................................................70 6.5 属性映射...................................................................................................................................................................78 6.6 持久化实体管理器 ENTITYMANAGER.....................................................................................................................82 6.6.1 Entity 获取find()或getReference()...................................................................................................................83 6.6.2 添加persist()....................................................................................................................................................83 6.6.3 更新实体..........................................................................................................................................................83 6.6.4 合并Merge()....................................................................................................................................................84 6.6.5 删除Remove()..................................................................................................................................................85 6.6.6 执行EJB3 QL 操作createQuery()..................................................................................................................85 6.6.7 执行SQL 操作createNativeQuery()...............................................................................................................85 6.6.8 刷新实体refresh()............................................................................................................................................86 6.6.9 检测实体当前是否被管理中contains().........................................................................................................86 6.6.10 分离所有当前正在被管理的实体 clear()....................................................................................................87 6.6.11 将实体的改变立刻刷新到数据库中flush().................................................................................................87 6.6.12 改变实体管理器的Flush 模式setFlushMode()...........................................................................................88 6.6.13 获取持久化实现者的引用getDelegate( )....................................................................................................88 6.7 关系/对象映射..........................................................................................................................................................89 6.7.1 映射的表名或列名与数据库保留字同名时的处理.......................................................................................89 6.7.2 一对多及多对一映射......................................................................................................................................89 6.7.3 一对一映射......................................................................................................................................................96 6.7.4 多对多映射....................................................................................................................................................103 6.8 使用参数查询.........................................................................................................................................................109 6.8.1 命名参数查询................................................................................................................................................109 6.8.2 位置参数查询................................................................................................................................................110 6.8.3 Date 参数.........................................................................................................................................................110 6.9 EJB3 QL 语言 .........................................................................................................................................................111 6.9.1 大小写敏感性(Case Sensitivity)....................................................................................................................122 6.9.2 排序(order by)................................................................................................................................................122 6.9.3 查询部分属性................................................................................................................................................123 6.9.4 查询中使用构造器(Constructor)...................................................................................................................124 6.9.5 聚合查询(Aggregation)..................................................................................................................................125 6.9.6 关联(join).......................................................................................................................................................127 6.9.7 排除相同的记录DISTINCT..........................................................................................................................130 6.9.8 比较Entity......................................................................................................................................................131 6.9.9 批量更新(Batch Update)................................................................................................................................132 6.9.10 批量删除(Batch Remove).............................................................................................................................132 6.9.11 使用操作符NOT..........................................................................................................................................132 6.9.12 使用操作符BETWEEN...............................................................................................................................133 6.9.13 使用操作符IN.............................................................................................................................................134 6.9.14 使用操作符LIKE........................................................................................................................................134 6.9.15 使用操作符IS NULL...................................................................................................................................135 版权所有:黎活明
Jboss EJB3.0 实例教程 6.9.16 使用操作符IS EMPTY................................................................................................................................136 6.9.17 使用操作符EXISTS.....................................................................................................................................137 6.9.18 字符串函数..................................................................................................................................................138 6.9.19 计算函数......................................................................................................................................................139 6.9.20 子查询..........................................................................................................................................................140 6.9.21 结果集分页..................................................................................................................................................140 6.10 调用存储过程.......................................................................................................................................................142 6.10.1 调用无返回值的存储过程..........................................................................................................................142 6.10.2 调用返回单值的存储过程..........................................................................................................................143 6.10.3 调用返回表全部列的存储过程..................................................................................................................144 6.10.4 调用返回部分列的存储过程......................................................................................................................144 6.11 事务管理服务.......................................................................................................................................................145 6.12 ENTITY 的生命周期和状态...................................................................................................................................150 6.12.1 生命周期回调事件......................................................................................................................................150 6.12.2 在外部类中实现回调..................................................................................................................................152 6.12.3 在Entity 类中实现回调...............................................................................................................................157 6.13 复合主键(COMPOSITE PRIMARY KEY)..................................................................................................................158 6.14 实体继承...............................................................................................................................................................166 6.14.1 每个类分层结构一张表(table per class hierarchy)....................................................................................167 6.14.2 每个子类一张表(table per subclass)...........................................................................................................173 6.14.3 每个具体类一张表(table per concrete class)..............................................................................................176 第七章 WEB 服务(WEB SERVICE).............................................................................................................................181 7.1 WEB SERVICE 的创建 ..............................................................................................................................................181 7.2 WEB SERVICE 的客户端调用 ..................................................................................................................................185 7.2.1 用java 语言调用Web Service.......................................................................................................................185 7.2.2 用asp 调用Web Service................................................................................................................................188 第八章 使用 EJB3.0 构建轻量级应用框架 ...................................................................................................................189 8.1 在 WEB 中使用 EJB3.0 框架 ................................................................................................................................190 8.1.1 如何使用Session Bean..................................................................................................................................190 8.1.2 如何使用Message Driven Bean....................................................................................................................192 8.1.3 如何使用依赖注入(dependency injection)....................................................................................................193 8.1.4 如何使用Entity Bean.....................................................................................................................................194 版权所有:黎活明
Jboss EJB3.0 实例教程 第一章 前言 期待已久的 EJB3.0 最终规范已经发布了。虽然EJB3.0 最终规范出来了一段时间,但对 EJB3.0 的应用还停留在介 绍之中,应用实例更是少之又少,所以作者拟写本书,以简单的实例展现 EJB3.0 的开发过程,希望对大家有所帮 助。 EJB3 最激动人心的是 POJO 编程模型,我想对开发人员的影响将是非常大的,因为他降低了开发人员编写 EJB 的 要求。EJB3 的 bean 类将更像常规的 Java bean。不要求像过去那样实现特殊的回调界面或者扩展 EJB 类。所以它 将使 EJB 的开发更像常规的 Java 开发。 作者对 EJB3.0 处于初步了解阶级,所以一些新的概念和知识理解也难免有误,有些概念和语义把握的不是很准, 希望在这方面有经验和了解的朋友批评指正,欢迎多提意见。 因为 JBOSS EJB3.0 产品常未成熟,本教程随着新产品的推出将有所改动,请密切关注! 1.1 本教程适合人群 本教程适合具有 Java 语言基础的 EJB 初学者。不需要学习 EJB2.x 也可以直接学习 EJB3.0。 1.2 联系作者 黎活明,广东佛山人,毕业于中国农业大学,一直从事于 B/S 系统架构工作,目前就职于惠利至易科技技术/运营 总监。 电子邮件:lihuoming@sohu.com 1.3 《EJB3.0 实例教程》官方 MSN 群 MSN 群账号:group22723@xiaoi.com ,添加该账号到你的 MSN 中即可加入群,在群中你可以和大家一起交流学 习的经验,技术的最新发展等。 1.4 版权声明 本电子书的内容全部为版权作品,仅供个人研究和学习之用,不得用于任何商业目的,未经作者书面许可,不得 以其他任何方式进行出版、篡改、编辑。 未经作者书面许可,任何商业培训机构不得使用本电子书作为培训教程,否则将依法追究其法律责任。 版权所有:黎活明
Jboss EJB3.0 实例教程 第二章 运行环境配置 2.1 下载与安装 1>下载安装 JDK5.0 http://java.sun.com/j2se/1.5.0/download.jsp 2>下载安装开发工具 JBossIDE(内含 Eclipse 3.2),直接解压缩即可完成安装。 http://prdownloads.sourceforge.net/jboss/JBossIDE-2.0.0.Beta2-Bundle-win32.zip?download 想使用中文的朋友可以下载中文语言包 NLpack1-eclipse-SDK-3.2-win32.zip 下载路径: http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/L-3.2_Language_Packs- 200607121700/NLpack1-eclipse-SDK-3.2-win32.zip 解压语言包,把 features 及 plugins 文件夹拷贝复盖 JBossIDE 安装目录下的 features 及 plugins 文件夹。如 果汉化失败,可能是你安装语言包之前运行过 eclipse,解决办法是:把 eclipse 安装目录下的 configuration 文件夹删除,从 JBossIDE 安装包中解压出 configuration 文件夹,把 configuration 文件夹拷贝到 JBossIDE 安 装目录下。 3>下载和安装 JBOSS-4.2.0 CR1 服务器 http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=16942&release_id=491475,选择 jboss-4.2.0.CR1.zip 文件下载(大小为 89.1MB),这里要注意:最好不要用下载工具下载,直接通过”目标另存为” 下载。 安装方法: 直接解压缩文件即可完成安装,为了避免日后产生莫名的错误,解压缩的路径不要带有空格,如“Program Files”。 安装完后请在“系统变量”里添加 JBOSS_HOME 变量,值为 Jboss 的安装路径。如下图 版权所有:黎活明
Jboss EJB3.0 实例教程 现在验证安装是否成功。在 Dos 命令窗口下执行: C:\JavaServer\jboss\bin\run –c all 这个命令用作启动 jboss 观察控制台有没有 Java 的例外抛出。如果没有例外并看到下图,恭喜你,安装成功了。 版权所有:黎活明
你可以输入 http://localhost:8080 来到 Jboss 的欢迎主页。在 JBoss Management 栏中点击”JMX Console ”进入 Jboss 的管理界面,如果需要输入用户名及密码,默认的用户名及密码都是 admin。 如果启动 jboss 出现例外,先看看安装文件下载是否完整,jboss 所用端口有没有被占(如 1099,1098 ,8080, 8083 等端口)。可以下载端口查看器(Active Ports)进行检查,如果端口被占用就关闭此进程。确定不是端口被占用, 那很大可能是你的 JDK 安装不正确。怎么排错,你自己看着办吧。 Jboss EJB3.0 实例教程 2.2 运行一个 EJB3 例子 服务安装成功了,得来一个真家伙试试。在源代码的 HelloWorld 文件夹下(源代码下 载:http://www.foshanshop.net/),把 HelloWorld.jar 拷贝到“jboss 安装目录/server/all/deploy/”目录下, jboss 支持热部署,HelloWorld 会被发现,并自动完成部署。接下来继续把 EJBTest 文件夹下的 EJBTest.war 拷 贝到“jboss 安装目录/server/all/deploy/”目录下。 在浏览器上输入:http://localhost:8080/EJBTest/Test.jsp。将会看见下图所示。 2.3 在独立的 Tomcat 或 swing 中调用 EJB 在正式的生产环境下,大部分调用 EJB 的客户端所在的服务器都为独立的 Tomcat 或 Resin 。下面介绍如何在 独立的 Tomcat 服务器中调用 Jboss 中的 EJB。在独立的 Tomcat 服务器中调用 EJB 需要有以下步骤: 1> 根据应用的需要,把调用 EJB 所依赖的 Jar 包拷贝到 tomcat 下的/shared/lib 目录或 WEB 应用的 WEB-INF/lib 下,所依赖的 Jar 一般在 jboss 安装目录的 client,/server/all/deploy/jboss-aop-jdk50.deployer, /server/all/deploy/ejb3.deployer,/lib/endorsed 等文件夹下。 下面的 jar 文件是必需的: [jboss 安装目录]\client\commons-logging.jar [jboss 安装目录]\client\ concurrent.jar [jboss 安装目录]\client\ ejb3-persistence.jar [jboss 安装目录]\client\ hibernate-annotations.jar [jboss 安装目录]\client\ hibernate-client.jar [jboss 安装目录]\client\ javassist.jar [jboss 安装目录]\client\ jboss-annotations-ejb3.jar [jboss 安装目录]\client\ jboss-aop-jdk50-client.jar [jboss 安装目录]\client\ jboss-aspect-jdk50-client.jar [jboss 安装目录]\client\jboss-common-client.jar [jboss 安装目录]\client\ jboss-ejb3-client.jar 版权所有:黎活明
分享到:
收藏