内容简介
第—部分 引言
第1章 概述
1.1 Java EE 7平台新增特性
1.2 Java EE应用模型
1.3 分布式多层应用
1.3.1 安全
1.3.2 Java EE组件
1.3.3 Java EE客户端
1.3.4 Web组件
1.3.5 业务组件
1.3.6 企业信息系统层
1.4 Java EE容器
1.4.1 容器服务
1.4.2 容器类型
1.5 Web服务支持
1.5.1 XML
1.5.2 SOAP传输协议
1.5.3 WSDL标准格式
1.6 Java EE应用装配与部署
1.7 开发角色
1.7.1 Java EE产品提供商
1.7.2 工具提供商
1.7.3 应用组件提供商
1.7.4 应用装配人员
1.7.5 应用部署人员和管理员
1.8 Java EE 7 API
1.8.1 EJB技术
1.8.2 Java servlet技术
1.8.3 JSF技术
1.8.4 JSP技术
1.8.5 JSP标准标记库
1.8.6 Java持久化API
1.8.7 Java事务API
1.8.8 RESTful Web服务JavaAPI
1.8.9 托管bean
1.8.10 JavaEE的上下文和依赖注入
1.8.11 Java的依赖注入
1.8.12 bean验证
1.8.13 Java消息服务API
1.8.14 Java EE连接器架构
1.8.15 JavaMail API
1.8.16 Java容器授权契约
1.8.17 Java容器认证服务提供者接口
1.8.18 WebSocket Java API
1.8.19 JSON处理Java API
1.8.20 Java EE的并发工具
1.8.21 Java平台的批处理应用
1.9 Java平台标准版7的Java EE 7 API
1.9.1 Java数据库互连API
1.9.2 Java命名和目录接口API
1.9.3 JavaBeans激活框架
1.9.4 XML处理Java API
1.9.5 Java XML绑定架构
1.9.6 XML Web服务Java-API
1.9.7 带附件SOAP Java API
1.9.8 Java认证和授权服务
1.9.9 Java平台的公共注解
1.10 GlassFish服务器工具
第2章 使用教程示例
2.1 必要软件
2.1.1 Java EE 7软件开发包
2.1.2 Java平台标准版
2.1.3 Java EE 7教程组件
2.1.4 NetBeans IDE
2.1.5 Apache Maven
2.2 启动和停止GlassFish服务器
2.2.1 使用NetBeans IDE启动GlassFish服务器
2.2.2 使用NetBeans IDE停止GlassFish服务器
2.2.3 使用命令行启动GlassFish服务器
2.2.4 使用命令行停止GlassFish服务器
2.3 启动管理控制台
2.3.1 使用NetBeans IDE启动管理控制台
2.4 启动和停止Java DB服务器
2.4.1 使用NetBeans IDE启动数据库服务器
2.5 构建示例
2.6 教程示例目录结构
2.7 教程中的Java EE 7 Maven原型
2.7.1 安装教程Maven原型
2.8 获取教程最新更新
2.8.1 使用NetBeans IDE更新教程
2.8.2 使用命令行更新教程
2.9 调试Java EE应用
2.9.1 使用服务器日志
2.9.2 使用调试器
第二部分 企业bean
第3章 企业bean
3.1 什么是企业bean
3.1.1 企业bean的好处
3.1.2 何时使用企业bean
3.1.3 企业bean类型
3.2 什么是会话bean
3.2.1 会话bean类型
3.2.2 何时使用会话bean
3.3 什么是消息驱动bean
3.3.1 消息驱动bean与会话bean的区别
3.3.2 何时使用消息驱动bean
3.4 访问企业bean
3.4.1 在客户端使用企业bean
3.4.2 确定远程或本地访问
3.4.3 本地客户端
3.4.4 远程客户端
3.4.5 Web服务客户端
3.4.6 方法参数和访问
3.5 企业bean的内容
3.6 企业bean的命名约定
3.7 企业bean的生命周期
3.7.1 有状态会话bean的生命周期
3.7.2 无状态会话bean的生命周期
3.7.3 单例会话bean的生命周期
3.7.4 消息驱动bean的生命周期
3.8 有关企业bean的更多信息
第4章 企业bean入门
4.1 创建企业bean
4.1.1 编写企业bean类
4.1.2 创建converter Web客户端
4.1.3 运行converter示例
4.2 修改Java EE应用
4.2.1 修改类文件
第5章 运行企业bean示例
5.1 cart示例
5.1.1 业务接口
5.1.2 会话bean类
5.1.3 @Remove方法
5.1.4 辅助类
5.1.5 运行cart示例
5.2 一个单例会话bean示例:counter
5.2.1 创建一个单例会话bean
5.2.2 countei示例的架构
5.2.3 运行counter示例
5.3 一个Web服务示例:helloservice
5.3.1 Web服务端点实现类
5.3.2 无状态会话bean实现类
5.3.3 运行helloservice示例
5.4 使用定时器服务
5.4.1 创建基于日历的定时器表达式
5.4.2 编程定时器
5.4.3 自动定时器
5.4.4 取消和保存定时器
5.4.5 获得定时器信息
5.4.6 事务和定时器
5.4.7 timersession示例
5.4.8 运行timersession示例
5.5 处理异常
第6章 使用嵌入式企业bean容器
6.1 嵌入式企业bean容器概述
6.2 开发嵌入式企业bean应用
6.2.1 运行嵌入式应用
6.2.2 创建企业bean容器
6.2.3 查找会话bean引用
6.2.4 关闭企业bean容器
6.3 standalone示例应用
6.3.1 使用NetBeans IDE运行standalone示例应用
6.3.2 使用Maven运行standalone示例应用
第7章 在会话bean中使用异步方法调用
7.1 异步方法调用
7.1.1 创建异步业务方法
7.1.2 从企业bean客户端调用异步方法
7.2 async示例应用
7.2.1 async-war模块的架构
7.2.2 运行async示例
第三部分 持久化
第8章 Java持久化API介绍
8.1 实体
8.1.1 实体类的需求
8.1.2 实体类中的持久化字段和属性
8.1.3 实体的主键
8.1.4 实体关系中的多重性
8.1.5 实体关系中的方向
8.1.6 实体中的可嵌入类
8.2 实体继承
8.2.1 抽象实体
8.2.2 映射超类
8.2.3 非实体超类
8.2.4 实体继承映射策略
8.3 管理实体
8.3.1 EntityManager接口
8.3.2 持久化单元
8.4 查询实体
8.5 数据库模式创建
8.5.1 配置应用以创建或删除数据库表
8.5.2 使用SQL脚本加载数据
8.6 有关持久化的更多信息
第9章 运行持久化示例
9.1 order应用
9.1.1 order应用中的实体关系
9.1.2 order应用中的主键
9.1.3 实体映射到多个数据库表
9.1.4 order应用中的层叠操作
9.1.5 order应用中的BLOB和CLOB数据库类型
9.1.6 order应用中的时态类型
9.1.7 管理order应用的实体
9.1.8 运行order示例
9.2 roster应用
9.2.1 roster应用中的关系
9.2.2 roster应用中的实体继承
9.2.3 roster应用中的Criteria查询
9.2.4 roster应用中的自动表生成
9.2.5 运行roster示例
9.3 address-book应用
9.3.1 address-book中的bean验证约束
9.3.2 在address-book中为约束指定错误消息
9.3.3 验证JSF应用的联系信息输入
9.3.4 运行address-book示例
第10章 Java持久化查询语言
10.1 查询语言术语
10.2 使用Java持久化查询语言创建查询
10.2.1 查询中的命名参数
10.2.2 查询中的位置参数
10.3 简化的查询语言语法
10.3.1 选择语句
10.3.2 更新和删除语句
10.4 示例查询
10.4.1 简单查询
10.4.2 导航到相关实体的查询
10.4.3 包含其他条件表达式的查询
10.4.4 批处理更新和删除
10.5 完整的查询语言语法
10.5.1 BNF符号
10.5.2 Java持久化查询语言的BNF文法
10.5.3 FROM子句
10.5.4 路径表达式
10.5.5 WHERE子句
10.5.6 SELECT子句
10.5.7 ORDERBY子句
10.5.8 GROUP BY和HAVING子句
第11章 使用Criteria API创建查询
11.1 Criteria和Metamodel API概述
11.2 使用Metamodel API为实体类建模
11.2.1 使用元模型类
11.3 使用Criteria API和Metamodel API创建基本的类型安全查询
11.3.1 创建Criteria查询
11.3.2 查询根
11.3.3 使用联接查询关系
11.3.4 Criteria查询中的路径导航
11.3.5 限制Criteria查询结果
11.3.6 管理Criteria查询结果
11.3.7 执行查询
第12章 创建和使用基于字符串的Criteria查询
12.1 基于字符串的Criteria API查询概述
12.2 创建基于字符串的查询
12.3 执行基于字符串的查询
第13章 使用锁定控制对实体数据的并发访问
13.1 实体锁定和并发概述
13.1.1 使用乐观锁定
13.2 锁模式
13.2.1 设置锁模式
13.2.2 使用悲观锁定
第14章 用实体图创建获取计划
14.1 实体图基础
14.1.1 默认实体图
14.1.2 在持久化操作中使用实体图
14.2 使用命名实体图
14.2.1 对实体类应用命名实体图注解
14.2.2 从命名实体图获得EntityGraph实例
14.3 在查询操作中使用实体图
第15章 对Java持久化API应用使用二级缓存
15.1 二级缓存概述
15.1.1 控制实体是否可以缓存
15.2 指定缓存模式设置来提高性能
15.2.1 设置缓存获取和存储模式
15.2.2 通过编程方式控制二级缓存
第四部分 消息传送
第16章 Java消息服务概念
16.1 JMS API概述
16.1.1 什么是消息传送
16.1.2 什么是JMS API
16.1.3 何时使用JMS API
16.1.4 Java EE平台如何使用JMS API
16.2 基本JMS API概念
16.2.1 JMS API架构
16.2.2 消息传送方式
16.2.3 消息使用
16.3 JMS API编程模型
16.3.1 JMS受管理对象
16.3.2 连接
16.3.3 会话
16.3.4 JMSContext对象
16.3.5 JMS消息生产者
16.3.6 JMS消息消费者
16.3.7 JMS消息
16.3.8 JMS队列浏览器
16.3.9 JMS异常处理
16.4 使用高级JMS特性
16.4.1 控制消息确认
16.4.2 为发送消息指定选项
16.4.3 创建临时目的地
16.4.4 使用JMS本地事务
16.4.5 异步发送消息
16.5 在Java EE应用中使用JMS API
16.5.1 为Java EE应用创建资源
16.5.2 在企业bean或Web组件中使用资源注入
16.5.3 使用Java EE组件生成和同步接收消息
16.5.4 使用消息驱动bean异步接收消息
16.5.5 管理JTA事务
16.6 关于JMS的更多信息
第17章 Java消息服务示例
17.1 JMS示例概述
17.2 编写简单的JMS应用
17.2.1 启动JMS提供者
17.2.2 创建JMS受管理对象
17.2.3 构建所有简单示例
17.2.4 发送消息
17.2.5 同步接收消息
17.2.6 使用消息监听器完成异步消息传送
17.2.7 浏览队列中的消息
17.2.8 在同一个目的地运行多个消费者
17.2.9 确认消息
17.3 编写更高级的JMS应用
17.3.1 使用持久订阅
17.3.2 使用本地事务
17.4 编写高性能和可扩展的JMS应用
17.4.1 使用共享非持久订阅
17.4.2 使用共享持久订阅
17.5 使用一个简单Web应用发送和接收消息
17.5 1 websimplemessage Facelets页面
17.5.2 websimplemessage托管bean
17.5.3 运行websimplemessage示例
17.6 使用消息驱动bean异步接收消息
17.6.1 simplemessage示例概述
17.6.2 simplemessage应用客户端
17.6.3 simplemessage消息驱动bean类
17.6.4 运行simplemessage示例
17.7 从会话bean向MDB发送消息
17.7.1 为clientsessionmdb示例编写应用组件
17.7.2 运行clientsessionmdb示例
17.8 使用实体联接两个MDB的消息
17.8.1 clientmdbentity示例应用概述
17.8.2 为clientmdbentity示例编写应用组件
17.8.3 运行clientmdbentity示例
17.9 使用NetBeansIDE创建JMS资源
17.9.1 使用NetBeans IDE创建JMS资源
17.9.2 使用NetBeans IDE删除JMS资源
第五部分 安全
第18章 Java EE平台安全介绍
18.1 Java EE安全概述
18.1.1 简单的应用安全演示
18.1.2 安全机制特性
18.1.3 应用安全特点
18.2 安全机制
18.2.1 Java SE安全机制
18.2.2 Java EE安全机制
18.3 保护容器安全
18.3.1 使用注解指定安全信息
18.3.2 使用部署描述文件提供声明式安全
18.3.3 使用编程式安全
18.4 保护GlassFish服务器安全
18.5 使用安全域、用户、组和角色
18.5.1 什么是安全域、用户、组和角色
18.5.2 在GlassFish服务器中管理用户和组
18.5.3 建立安全角色
18.5.4 角色映射到用户和组
18.6 使用SSL建立安全连接
18.6.1 验证和配置SSL支持
18.7 有关安全的更多信息
第19章 Web应用安全入门
19.1 Web应用安全概述
19.2 保护Web应用安全
19.2.1 指定安全约束
19.2.2 指定认证机制
19.2.3 在部署描述文件中指定认证机制
19.2.4 声明安全角色
19.3 Web应用使用编程式安全
19.3.1 通过编程方式认证用户
19.3.2 通过编程方式检查调用者身份
19.3.3 编程式安全的示例代码
19.3.4 声明和链接角色引用
19.4 示例:保护Web应用安全
19.4.1 设置系统来运行安全示例
19.4.2 hello2-basicauth示例:对servlet使用基本认证
19.4.3 hellol-formauth示例:对JSF应用使用基于表单的认证
第20章 企业应用安全入门
20.1 企业应用的基本安全任务
20.2 保护企业bean安全
20.2.1 使用声明式安全保护企业bean安全
20.2.2 通过编程方式保护企业bean安全
20.2.3 传播安全身份(Run-As)
20.2.4 部署安全企业bean
20.3 示例:保护企业bear安全
20.3.1 cart-secure示例:使用声明式安全保护企业bean安全
20.3.2 converter-secure示例:使用编程式安全保护企业bean安全
第21章 JavaEE安全:高级主题
21.1 使用数字证书
21.1.1 创建服务器证书
21.1.2 向证书安全域增加用户
21.1.3 为GlassFish服务器使用一个不同的服务器证书
21.2 认证机制
21.2.1 客户端认证
21.2.2 相互认证
21.3 使用JDBC安全域完成用户认证
21.3.1 配置JDBC认证安全域
21.4 保护HTTP资源安全
21.5 保护应用客户端安全
21.5.1 使用登录模块
21.5.2 使用编程式登录
21.6 保护企业信息系统应用安全
21.6.1 容器托管登录
21.6.2 组件托管登录
21.6.3 配置资源适配器安全
21.6.4 将应用主体映射到EIS主体
21.7 使用部署描述文件配置安全
21.7.1 在部署描述文件中指定基本认证安全
21.7.2 在部署描述文件中指定非默认主体-角色映射
21.8 关于高级安全主题的更多信息
第六部分 Java EE支持技术
第22章 事务
22.1 Java EE应用中的事务
22.2 什么是事务
22.3 容器托管事务
22.3.1 事务属性
22.3.2 回滚容器托管事务
22.3.3 同步会话bean的实例变量
22.3.4 容器托管事务中不允许的方法
22.4 bean托管事务
22.4.1 JTA事务
22.4.2 不提交返回
22.4.3 bean托管事务中不允许的方法
22.5 事务超时
22.5.1 设置事务超时
22.6 更新多个数据库
22.7 Web组件中的事务
22.8 关于事务的更多信息
第23章 资源适配器和契约
23.1 什么是资源适配器
23.1.1 管理契约
23.1.2 通用工作上下文契约
23.1.3 出站和入站契约
23.2 元数据注解
23.3 公共客户端接口
23.4 对Java EE上下文和依赖注入(CDI)使用资源适配器
23.5 关于资源适配器的更多信息
第24章 资源适配器示例
24.1 trading示例
24.1.1 使用出站资源适配器
24.1.2 实现出站资源适配器
24.1.3 运行trading示例
24.2 traffic示例
24.2.1 使用入站资源适配器
24.2.2 实现入站资源适配器
24.2.3 运行traffic示例
第25章 使用Java EE拦截器
25.1 拦截器概述
25.1.1 拦截器类
25.1.2 拦截器生命周期
25.1.3 拦截器和CDI
25.2 使用拦截器
25.2.1 拦截方法调用
25.2.2 拦截生命周期回调事件
25.2.3 拦截超时事件
25.2.4 为组件绑定拦截器
25.2.5 拦截器排序
25.3 interceptor示例应用
25.3.1 运行interceptor示例
第26章 批处理
26.1 批处理介绍
26.1.1 批处理作业中的步骤
26.1.2 并行处理
26.1.3 状态和判定元素
26.1.4 批处理框架功能
26.2 Java EE中的批处理
26.2.1 批处理框架
26.2.2 创建批处理应用
26.2.3 批处理作业的元素
26.2.4 属性和参数
26.2.5 作业实例和作业执行
26.2.6 批处理和退出状态
26.3 简单用例
26.3.1 块步骤
26.3.2 任务步骤
26.4 使用作业规范语言
26.4.1 job元素
26.4.2 step元素
26.4.3 flow元素
26.4.4 split元素
26.4.5 decision元素
26.5 创建批处理工件
26.5.1 批处理工件接口
26.5.2 批处理工件中的依赖注入
26.5.3 从批处理运行时环境使用上下文对象
26.6 向批处理运行时环境提交作业
26.6.1 开始作业
26.6.2 检查作业的状态
26.6.3 在应用中调用批处理运行时环境
26.7 打包批处理应用
26.8 webserverlog示例应用
26.8.1 webserverlog示例应用架构
26.8.2 运行webserverlog示例应用
26.9 phonebilling示例应用
26.9.1 phonebilling示例应用架构
26.9.2 运行phonebilling示例应用
26.10 关于批处理的更多信息
第27章 Java EE的并发工具
27.1 并发基础
27.1.1 线程和进程
27.2 并发工具的主要组件
27.3 并发和事务
27.4 并发和安全
27.5 jobs并发示例
27.5.1 运行jobs示例
27.6 taskcreator并发示例
27.6.1 运行taskcreator示例
27.7 关于并发工具的更多信息
第七部分 案例研究
第28章 Duke书店案例研究示例
28.1 Duke书店的设计和架构
28.2 Duke书店接口
28.2.1 BookJava持久化API实体
28.2.2 Duke书店中使用的企业bean
28.2.3 Duke书店中使用的Facelets页面和托管bean
28.2.4 Duke书店中使用的定制组件和其他定制对象
28.2.5 Duke书店中使用的属性文件
28.2.6 Duke书店中使用的部署描述文件
28.3 运行Duke书店案例研究应用
28.3.1 使用NetBeans IDE构建和部署Duke书店
28.3.2 使用Maven构建和部署Duke书店
28.3.3 运行Duke书店应用
第29章 Duke辅导案例研究示例
29.1 Duke辅导应用的设计和架构
29.2 主界面
29.2.1 主界面中使用的Java持久化API实体
29.2.2 主界面中使用的企业bean
29.2.3 主界面中使用的WebSocket端点
29.2.4 主界面中使用的Facelets文件
29.2.5 主界面中使用的辅助类
29.2.6 属性文件
29.2.7 Duke辅导应用中使用的部署描述文件
29.3 管理界面
29.3.1 管理界面中使用的企业bean
29.3.2 管理界面中使用的Facelets文件
29.3.3 管理界面中使用的CDI托管bean
29.3.4 管理界面中使用的辅助类
29.4 运行Duke辅导案例研究应用
29.4.1 运行Duke辅导应用
第30章 Duke综合案例研究示例
30.1 Duke综合应用的设计和架构
30.1.1 events工程
30.1.2 entities工程
30.1.3 dukes-payment工程
30.1.4 dukes-resources工程
30.1.5 Duke商店工程
30.1.6 Duke货运工程
30.2 构建和部署Duke综合案例研究应用
30.2.1 使用NetBeans IDE构建和部署Duke综合应用
30.2.2 使用Maven构建和部署Duke综合应用
30.3 运行Duke综合应用
30.3.1 注册为Duke商店顾客
30.3.2 购买产品
30.3.3 批准产品发货
30.3.4 创建新产品