本书系统化地收集了EJB实际开发问题的解决方案。通过把这些问题的解决过程方便地组织起来,本书会使你减少查找资料的时间,把更多的时间用于开发。每个解决方案都有相关的解决方案。主要内容 CMP和BMP bean 事务和安全 解决EJB客户的问题 日志记录的最佳做法 消息的相关解决方案 使用Cactus测试EJB应用 使用XDoclet和更多的工具生成EJB代码 本书以问题/解决方案的格式进行组织,系统地收集了EJB开发过程中许多实际问题的解决方案。每个解决方案都有与之相关联的解决方案,使读者可以方便地进行查看和理解。 本书适合从事Java开发工作的技术人员阅读,对于那些对EJB感兴趣的读者同样适用。
第一部分导论
笫1章客户代码
1.1从另一个EJB调用本地EJB
1.2从另一个EJB调用远程EJB
1.3从servlet访问EJB
1.4从Java服务器页面调用EJB
1.5从JMS系统调用EJB业务逻辑
1.6将EJB实例的引用持久化
1.7获得并且使用持久化的EJB引用
1.8将主对象引用持久化
1.9比较两个EJB引用是否相同
1.10对EJB使用反射
1.11从applet调用EJB
1.12改善客户端的EJB查找代码
第2章使用XDoclet生成代码
2.1生成主.远程.本地和本地主接口
2.2为主接口添加和定制JNDI名称
2.3使EJB部署描述文件保持最新
2.4为实体bean创建值对象
2.5生成主键类
2.6避免硬编码的XDocleI标记值
2.7使用工具对象帮助进行bean查找
2.8生成供应商特有的部署描述文件
2.9在bean源代码中指定安全角色
2.10生成和维护方法权限
2.11为实体主接口生成查找器方法
2.12生成ejbSelect方法XML
2.13把主方法添加到生成的主接口
2.14把实体关系XML添加到部署描述文件
2.15把目的地类型添加到消息驱动bean的部署描述文件
2.16把消息选择器添加到消息驱动bean的部署描述文件
第二部分主体部分
第3章处理数据
3.1使用数据源
3.2创建EJB2.0容器管理的持久性
3.3对不同的用户使用不同的数据源
3.4使用数据库序列为实体bean生成主键值
3.5为实体bean使用组合主键
3.6在单一步骤中获得多个实体bean
3.7建立一对一实体数据关系的模型
3.8为实体bean创建一对多的关系
3.9使用实体关系创建层叠删除
3.10开发不能创建的,只读的实体bean
3.11从EJB调用存储过程
3.12使用EJB-QL创建定制的查找器方法
3.13把实体数据持久化到数据库视图中
3.14基于实体数据的变化发送通知
3.15为实体数据创建接口
3.16获得实体数据集合的信息
3.17减少调用实体bean的次数
3.18在大型结果集合中分页
第4章EJB的活动
4.1获得环境变量
4.2实现EJB的toSbing()功能
4.3为所有EJB提供通用方法
4.4减少未实现的bean方法造成的混乱
4.5从EJB发送电子邮件
4.6使用EJB2.1的计时器服务
4.7从EJB发送JMS消息
4.8把EJB当作Web服务使用
4.9创建EJB客户的异步行为
4.10不使用消息驱动bean创建异步行为
4.11隔离EJB和服务类实现
4.12创建批处理机制
第5章事务
5.1调整EJB的容器事务控制
5.2不使用容器处理事务的管理
5.3回滚当前的事务
5.4试图使用错误恢复避免回滚
5.5在方法完成之前强制回滚
5.6对事务加以时间限制
5.7把实体更新组合到单一事务中
5.8在事务边界管理EJB状态
5.9在一个方法中使用多个事务
5.10在回滚之后管理EJB状态
5.11抛出异常且不导致回滚
5.12把事务传播到另一个EJB业务方法
5.13把事务传播到非EJB类
5.14在客户层启动事务
5.15在多个Java服务器页面之间维持事务
5.16在一个事务中更新多个数据库
第6章消息
6.1发送公布/预订JMS消息
6.2发送点对点JMS消息
6.3创建消息驱动的EJB
6.4按照先进先出(FIFO)方式从消息队列中处理消息
6.5把消息驱动bean和业务逻辑改动隔离开
6.6把数据流发送给消息驱动EJB
6.7使用单一JMS消息触发两个或者更多的消息驱动bean
6.8加速消息驱动bean的消息传送
6.9为消息驱动EJB过滤消息
6.10在消息驱动EJB中封装错误处理代码
6.11异步发送电子邮件消息
6.12在消息驱动bean中处理回滚
第7章安全
7.1在EJB方法内找到调用者的身份和角色
7.2分配和确定EJB客户安全角色
7.3把客户凭证传递给EJB容器
7.4对特定用户禁用方法
7.5为EJB分配角色
7.6防止对实体数据的访问
7.7使用EJB处理对LDAP源的简单验证
7.8保证消息驱动bean的安全
第三部分补充
第8章日志记录
8.1对日志消息进行格式化
8.2改进日志性能
8.3使用日志生成报告
8.4把日志消息发送给JMS主题
8.5将日志记录到XML文件
8.6为Web浏览器创建日志文件视图
8.7在集群环境中创建集中化的日志文件
8.8跟踪EJB的生命周期
8.9在运行时使用不同的配置
8.10按照客户将日志消息分类
第9章部署和单元测试
9.1编译EJB
9.2构造ejb.jar文件
9.3构造EJB的存根类
9.4创建无状态会话bean的单元测试
9.5创建有状态会话bean的单元测试
9.6创建实体bean的单元测试
9.7测试案例执行的自动化
9.8使用UI执行测试案例
附录A相关解决方案
附录B附加资源
随着日益壮大的开发队伍更多地接受Iava 2平台企业版(Java 2PlatformEnterpriseEdition,J2EE),与EJB(Enterprise JavaBeans)相关的资源、指南、书籍和专家的数量也在不断增长。使用“Enterprise JavaBeans”这个词对一家流行的网上书店进行查询,能找到20余本书,而且还只包括书名中包含这个词的书籍。使用因特网搜索引擎Google(WWW.google.com)能够获得大约744页e与EJB密切相关的网站链接。面对大量的知识、讲解和讨论资料,EJB开发人员经常需要花费很长时间去查找快捷的解决方案。有多少次你是翻遍了一本书或者几本书的很多页才找到所要的答案?
我们自己就有过这样解决问题的经历,所以决定做一些事情去改善这一现状。编写本书的目的是想为许多重要问题提供解决方案资源。就像菜谱包括烹调各种美食的步进式指导一样,本书提供了EJB问题的巧妙解决方案。在书中你会发现很多种问题的解决方案,范围从简单的、日常的快速引用问题到使用EJB模式进行复杂设计的挑战。
本书对应的读者是至少具有一些EJB开发经验的开发人员。了解了这一点,你就不会在本书中查找描述会话和实体bgan基本构建原则的解决方案。我们假设你了解企业开发的概念和EJB编程的基础知识。本书使用的格式专门面向问题,避免使用EJB关键词(查看目录的内容就能证明这一点)。例如,不要查找“设计模式”,而要查找你要解决的实际问题(如“改进网络性能”)。
我们编写的解决方案是相互关联的,它们引用了其他与之相关的解决方案。我们希望读者可以拿起这本书并且能够从任何地方开始阅读。解决方案都是短小精练的,可以在坐地铁、喝时候或者任何有几分钟空闲的时候拿出来翻阅。书的一个有用的姐妹篇是((BitterEJB》,也是Manning出版社出版的。它详细讲解了专EJB开发的很多反模式(antipattern),并且提供了实用的设计途径:如何通过研究与技术最重要的问题和解决方案成为更好的程序员。们已经为你准备好了这本书,现在邀请你共享我们的解决方案。你也许会从9章中进行挑,全部读完它们。尽情享受吧!