第Ⅰ部分 概述 1
第1章 J2EE介绍 1
1.1 J2EE基础知识、历史和发展趋势 1
1.2 J2EE技术 2
1.3在项目中使用或者不使用J2EE的技术价值 5
1.4 J2EE的体系结构 6
1.5 J2EE的组件、容器和服务 8
1.6打包和部署 8
1.6.2 Web模块(WAR文件) 9
1.6.1企业归档文件 9
1.6.3 EJB模块 10
1.6.4客户应用程序模块 10
1.6.5资源适配器模块 10
1.7 J2EE中的角色 11
1.7.1 J2EE产品提供者 11
1.7.2工具提供者 11
1.7.3应用程序组件提供者 11
1.7.4应用程序装配者 12
1.7.5应用程序部署者和系统管理人员 12
1.8.2会话外观 13
1.8.3值对象 13
1.8.1前端控制器 13
1.8 J2EE设计模式 13
1.8.4逐页迭代器 14
1.8.5数据访问对象 14
1.8.6快速通道读取器 15
1.9示例应用程序和方法学 15
第2章 Oracle9i J2EE应用服务器容器(OC4J)概述 17
2.1安装和启动OC4J 18
2.2OC4J启动选项 18
2.3通过命令行工具管理OC4J 19
2.3.1 OC4J系统管理概要 20
2.3.2应用程序部署选项 20
2.3.3 Web站点系统管理选项 22
2.3.4应用程序选项和数据源管理 24
2.4把J2EE应用程序部署到OC4J 26
2.4.1配置OC4J的data-sources.xml文件 27
2.4.2部署分解式目录 28
2.4.3建立应用程序的归档文件 29
2.4.4把EAR文件部署到OC4J 30
2.5调 试OC4J 30
第3章 OC4J服务概述 33
3.1 Java数据库连接性(JDBC) 33
3.1.1 JDBC连接 33
3.1.2通过Java应用程序连接到Oracle数据库 34
3.1.3来自ConnectToOracle类的输出 35
3.2 SQLJ 36
3.3.1 JNDI查找机制 44
3.3 Java命名和目录接口(JNDI) 44
3.3.2 JNDI环境 45
3.3.3在OC4J中查找资源 46
3.3.4使用InitialContext(Hashtable env)构造函数 47
3.4 OC4J和数据源 49
3.5RMI和OC4J 53
3.5.1配置RMI隧道 53
3.5.2在OC4J的server.xml文件和rmi.xml文件中配置RMI 54
3.6.1 JAAS 55
3.6.2 Oracle HTTP服务器 55
3.6 JAAS,Oracle HTTP服务器和JMS 55
3.6.3 JMS 56
3.7 Java事务处理API 56
3.8 Java连接器体系结构 57
3.9 Oracle9iAS TopLink 57
3.9.1基础库 58
3.9.2映射工作台 58
3.9.3产生TopLink对象-关系型映射 59
3.9.4循序渐进学习Employee例子 59
第Ⅱ部分 构建J2EE业务层组件 75
第4章 介绍Enterprise JavaBean(EJB) 75
4.1.2 EJB 1.0和1.1版 76
4.1Enterprise JavaBean规范 76
4.1.1 Enterprise JavaBean设计目标 76
4.1.3 EJB 2.0版 77
4.1.4Enterprise JavaBean角色 77
4.1.5 Enterprise JavaBean体系结构 79
4.2 Enterprise JavaBean的类型 80
4.2.1会话Bean 81
4.2.2实体Bean 81
4.2.3消息驱动型Bean 82
4.3.4消息驱动型Bean的客户视图 83
4.3.3本地客户机 83
4.3.2远程客户机 83
4.3.1会话Bean和实体Bean的客户视图 83
4.3Enterprise JavaBean的客户视图 83
4.4EJB应用程序的组件 84
4.4.1会话和实体Bean组件 84
4.4.2消息驱动型Bean组件 84
4.4.3Enterprise Bean的远程接口和本地home接口 85
4.4.4 Enterprise本地和远程接口 89
4.4.5 Enterprise Bean类 93
4.5 Enterprise JavaBean部署描述符 97
4.6 EJB的事务管理 98
4.8 OC4J J2EE的EJB支持 99
4.7 OC4J事务支持 99
5.1应用程序设计 102
第5章 实体Bean的开发 102
5.2实体Bean组件的定义 104
5.2.1实体Bean的特性 104
5.2.2创建开发目录 106
5.2.3开发实体Bean的基本步骤 108
5.3开发容器管理的持久性Bean 108
5.3.1容器管理关系中的基数 109
5.3.2编写CMP Bean的LineItemLocal的代码 109
5.3.3编写CMP实体Bean的PurchaseOrderLocal的代码 119
5.4.1编写BMP实体Bean的代码 124
5.4开发Bean管理的持久性Bean 124
5.4.2 LocalClientServlet类 137
5.5部署描述符文件ejb-jar.xml 139
5.5.1 ejb-iar.xml文件 140
5.5.2 finder方法的高级配置 143
5.5.3 orion-ejb-jar.xml文件 143
5.5.4 OC4J持久性字段和关系的对象关系映射 147
5.5.5 web.xml文件 147
5.6在OC4J中部署EJB组件 149
5.6.1归档EJB应用程序 149
5.6.2修改OC4J的data-sources.xml文件 150
5.6.3在OC4J中部署EAR文件 151
5.6.4测试应用程序 152
5.6.5部署分解式目录 153
第6章 会话Bean的开发 155
6.1应用程序设计 155
6.2定义会话Bean组件 157
6.3创建Vendor会话Bean 159
6.3.1远程接口Vendor 159
6.3.2远程home接口VendorHome 161
6.3.3 J2EE的值对象模型 162
6.3.4 VendorVO类 162
6.3.5 VendorBean类 165
6.3.6会话Bean的ejb-jar.xml文件 171
6.3.7 VendorClient应用程序 172
6.4创建会话Bean PurchaseOrderManagement 175
6.4.1 J2EE会话外观 175
6.4.2 PurchaseOrderManagement会话Bean的组成 176
6.4.3 PurchaseOrderManagementClient类 185
6.5编写部署描述符文件ejb-jar.xml 188
6.6编写或生成orion-ejb-jar.xml文件 191
6.7在OC4J中部署EJB组件 192
6.7.1归档EJB应用程序 192
6.7.2修改OC4J的data-sources.xml文件 193
6.7.4测试应用程序 194
6.7.3在OC4J中部署EAR文件 194
6.7.5部署分解式目录 197
第7章 EJB消息驱动型Bean的开发 199
7.1 Java消息服务入门 199
7.1.1消息传递的概念 200
7.1.2消息队列的概念 200
7.1.3消息系统的类型 200
7.1.4 JMS的概念 200
7.1.5 JMS消息 201
7.1.6 JMS消息主体的格式 201
7.1.7 JMS客户机 202
7.1.8 OC4J和JMS 204
7.1.9 OC4J和消息提供者 205
7.2应用程序设计 205
7.3定义消息驱动型Bean 208
7.3.1消息驱动型Bean的特征 208
7.3.2消息驱动型Bean和EJB容器 210
7.3.3 J2EE Approval应用程序 210
7.3.4创建开发目录 210
7.4创建消息驱动型Bean 212
7.4.1设定Oracle Advanced Queuing(AQ)为JMS提供者 212
7.4.2编写Approval应用程序的代码 216
7.4.3消息驱动型Bean的生命周期 224
7.4.4编写CMP实体Bean的代码 225
7.4.5编写MDB类EmailMessageBean的代码 230
7.5编写部署描述符ejb-jar.xml 232
7.5.1 ejb-jar.xml文件中的消息驱动型元素 232
7.5.2修改OC4J的application.xml文件 236
7.6编写或生成部署描述符orion-ejb-jar.xml 236
7.7编写JMS客户代码 239
7.7.1编写点对点JMS客户 239
7.7.2编写发布/订阅JMS客户 240
7.8编写web.xml和orion-web.xml XML文件 244
7.9在OC4J中部署EJB组件和消息驱动型Bean 247
7.9.1归档EJB应用程序 248
7.9.2修改OC4J的data-sources.xml文件 249
7.9.3在OC4J中部署EAR文件 249
7.9.4测试应用程序 250
7.9.5部署分解式目录 251
第Ⅲ部分 构建J2EE Web和表示层组件 253
第8章 OC4J安全性 253
8.1建立安全的Internet系统所面临的问题 253
8.2 Java安全模型概述 256
8.2.1 Java 1.0沙箱 256
8.2.2 Java 1.1安全模型 256
8.2.3 Java 1.2安全模型 257
8.3 Java安全性组件 258
8.3.1Java语言安全 258
8.3.2 Java虚拟机安全性 259
8.3.3消息摘要 260
8.3.4数字签名 260
8.3.5公共密钥密码术 261
8.3.6身份验证和证书 261
8.4 Java验证和授权服务(JAAS) 261
8.5.2声明和链接角色引用 264
8.5.1安全角色 264
8.5 J2EE安全概述 264
8.5.3将角色映射到J2EE用户和组 265
8.5.4 J2EE Web层中的安全 265
8.5.5 J2EE EJB层中的安全 265
8.5.6安全身份的传播 266
8.5.7容器之间的信任 266
8.5.8 J2EE用户、域和组 266
8.6 Oracle9iAS套件的安全组件 267
8.7 JAAS的OC4J实现 267
8.7.2配置和LDAP一起使用的JAZN 268
8.7.3配置和jazn data.xml一起使用的JAZN 268
8.7.1配置和OC4J一起使用的JAZN 268
8.7.4使用jaznjar 269
8.7.5身份验证环境 270
8.8集成的和可切换的用户管理器 270
8.9在应用程序中使用OC4J;在OC4J应用程序中编写安全代码 271
8.9.1应用程序设计 271
8.9.2创建开发目录 272
8.9.3指定jazn-data.xml中的用户和组 274
8.9.4配置身份验证方法 275
8.9.5对web.xml文件扩展,包含OC4J安全机制 275
8.9.6 LocalClientServlet类的重用 277
8.10将应用程序部署到OC4J中 280
第9章 Web服务:SOAP,WSDL和UDDI 286
9.1Web服务简介 287
9.1.1SOAP 287
9.1.2 WSDL 289
9.1.3 UDDI 292
9.1.4 Web服务的REST 292
9.2编写Web服务 293
9.2.1现在的需求 293
9.2.2测试Web服务 304
9.3编写Web服务客户程序 305
9.3.1静态Web服务客户端代理 306
9.3.3动态Web服务客户程序 307
9.3.2使用WSDL创建Web服务客户程序 307
9.3.4关于编写Web服务的更多内容 309
第10章 开发Web应用程序 312
10.1Web应用程序中的Servlet 312
10.2 Servlet基本概念 313
10.2.1 HTTP实质 313
10.2.2 Servlet基本体系结构 314
10.2.3 Servlet容器 315
10.2.4 Servlet生命周期 316
10.2.5过滤器和链 316
10.2.7请求对象 317
10.2.6 Servlet上下文 317
10.2.8响应对象 318
10.2.9 Servlet行为 318
10.2.10线程安全 318
10.3 Servlet会话 318
10.3.1 Cookies 319
10.3.2重写URL 319
10.3.3保持会话状态的其他方法 319
10.3.4取消会话 319
10.3.5会话事件 320
10.3.6 MySessionServlet Servlet编码 320
10.4使用Servlet设计一个Web应用程序 322
10.5在Servlet中应用EJB 323
10.6使用Oracle9iAS TopLink开发一个基本的Servlet 328
10.6.1 EmployeeTopLinkServlet类 329
10.6.2JavaBean类EmployeeToplinkBean 333
10.7配置OC4J运行TopLink和Servlet 337
10.7.1配置OC4J运行Oracle9iAS TopLink 337
10.7.2部署描述符文件:web.xml 338
10.8在OC4J上部署应用程序 340
10.8.1归档EJB应用程序 340
10.8.2创建EAR文件 340
10.8.3部署应用程序 341
1 0.8.5测试ViewPurchaseOrder Servlet 342
10.8.4测试MySessionServlet Servlet 342
10.8.6测 试EmployeeTopLinkServlet Servlet 343
第11章 JSP介绍 344
11.1 JSP基本语法 344
11.1.1指令 345
11.1.2脚本元素 347
11.1.3标准动作 349
11.2 JSP体系结构 351
11.3配置OC4J JSP 352
11.4开发目录结构 355
11.5隐式对象 356
11.6错误处理 356
11.7 OC4J对Oracle SQLJ的支持 359
11.8从JSP页面调用EJB 364
11.9以MVC模式用TopLink构建应用程序 368
11.9.1 servlet控制器类:EmployeeServlet 369
11.9.2 JavaBean类:EmployeeToplinkBean 374
11.10把JSP配置和部署到OC4J 378
11.10.1配置OC4J运行Oracle9iAS TopLink 378
11.10.2部署描述符文件:web.xml 379
11.10.3部署及打包应用程序 380
11.10.4测试您的应用程序 381
A.1服务器配置文件 382
A.1.1server.xml文件 382
附录A OC4J XML配置文件 382
第Ⅳ部分 附录 382
A.1.2 data-sources.xml文件 385
A.1.3 jms.xml文件 385
A.1.4 rmi.xml文件 386
A.1.5 http-web-site.xml文件 386
A.1.6 principals.xml文件 387
A.1.7 jazn.xml文件 388
A.1.8 jazn-data.xml文件 388
A.2 J2EE和OC4J部署文件 389
A.2.5 web.xml文件 390
A.2.4 orion-ejb-jar.xml文件 390
A.2.6 orion-web.xml文件 390
A.2.1 application.xml文件 390
A.2.3 ejb-jar.xml文件 390
A.2.2 orion-application.xml文件 390
A.2.7 application-client.xml文件 391
A.2.8 orion-application-client.xml文件 391
附录B OC4J安全性 392
B.1配置第8章中应用程序的安全机制 392
B.2 Oracle9iAS JAAS 9.0.2.0.0 API规范 392
B.2.1 oracle.security.jazn包 392
B.2.2 oracle.securityjazn.policy包 393
B.2.3 oracle.security.jazn.realm数据包 394
附录C Enterprise JavaBean API参考 396
C.1 javax.ejb包 396
C.1.1异常总结 397
C.1.2 javax.ejb.EJBContext接口 397
C.1.3 javax.ejb.EJBHome接口 398
C.1.4 javax.ejb.EJBLocalHome接口 398
C.1.5 javax.ejb.EJBLocalObject接口 398
C.1.6 javax.ejb.EJBMetaData接口 399
C.1.7 javax.ejb.EJBObject接口 399
C.1.9 javax.ejb.EntityBean接口 400
C.1.8 javax.ejb.EnterpriseBean接口 400
C.1.10 javax.ejb.EntityContext接口 401
C.1.11 javax.ejb.Handle接口 401
C.1.12 javax.ejb.HomeHandle接口 401
C.1.13 javax.ejb.MessageDrivenBean接口 401
C.1.14 javax.ejb.MessageDrivenContext接口 402
C.1.15 javax.ejb.SessionBean接口 402
C.1.16 javax.ejb.SessionContext接口 402
C.1.17javax.ejb.SessionSynchronization接口 403
C.2 javax.ejb.spi包 403
C.3javax.jms.MessageListener接口 404
D.1.1企业JavaBean部分 405
附录D OC4J J2EE特定的DTD参考 405
D.1OC4J部署描述符文件的结构 405
D.1.2程序集描述符 410
D.2 orion-ejb-jar.xml的DTD程序清单 410
D.3元素描述 414
D.3.1〈assembly-descriptor〉 414
D.3.2〈cmp-field-mapping〉 414
D.3.3〈collection-mapping〉 414
D.3.4〈context-attribute〉 414
D.3.10〈entity-deployment〉 415
D.3.9〈enterprise-beans〉 415
D.3.8〈ejb-ref-mapping〉 415
D.3.7〈ejb-name〉 415
D.3.6〈description〉 415
D.3.5〈default-method-access〉 415
D.3.11〈entity-ref〉 417
D.3.12〈env-entry-mapping〉 417
D.3.13〈fields〉 417
D.3.14〈finder-method〉 417
D.3.15〈group〉 417
D.3.22〈orion-ejb-jar〉 418
D.3.21〈method-params〉 418
D.3.20〈method-param〉 418
D.3.19〈method-name〉 418
D.3.18〈method-intf〉 418
D.3.17〈method〉 418
D.3.16〈message-driven-deployment〉 418
D.3.23〈primkey-mapping〉 419
D.3.24〈properties〉 419
D.3.25〈resource-ref-mapping〉 419
D.3.26〈security-role-mapping〉 419
D.3.27〈session-deployment〉 419
D.3.28〈set-mapping〉 420
D.3.29〈user〉 420
D.3.30〈value-mapping〉 420