部分 VI. 开发指南
目录
43. Web开发手册
43.1. Apusic JSP 开发
43.1.1. JSP概述
43.1.1.1. 什么是JSP
43.1.1.2. JSP如何处理请求
43.1.2. Apusic JSP变动及其升级
43.1.2.1. 从JSP2.0到JSP2.1的主要变动
43.1.2.1.1. JSP 2.1支持统一表达语言Unified Expression Language
43.1.2.2. 从JSP1.2到JSP2.0的主要变动
43.1.2.2.1. JDK要求
43.1.2.2.2. JSP 2.0支持表达语言expression language
43.1.2.2.3. JSP 2.0中加入了JSP fragment
43.1.2.2.4. JSP 2.0中加入了SimpleTag
43.1.3. Apusic JSP开发指南
43.1.3.1. JSP页面的生命周期
43.1.3.2. 初始化和结束一个JSP页面
43.1.3.3. 创建静态内容
43.1.3.4. 创建动态内容
43.1.3.4.1. 使用内置对象
43.1.3.4.2. 对象的作用范围
43.1.3.4.3. JSP元素(Element)
43.1.3.5. 表达式语言
43.1.3.5.1. 使表达式语言失效
43.1.3.5.2. 使用表达式语言
43.1.3.5.3. 变量
43.1.3.5.4. 文字
43.1.3.5.5. 操作符
43.1.3.5.6. 保留关键字
43.1.3.5.7. 举例列表
43.1.3.6. 使用JavaBeans
43.1.3.6.1. JavaBeans 设计惯例
43.1.3.6.2. 创建和使用JavaBeans
43.1.3.6.3. 设置JavaBeans的属性
43.1.3.6.4. 得到JavaBeans 的属性
43.1.3.7. 在JSP页面中包含其他内容
43.1.3.8. 传递控制到其他Web组件
43.1.3.9. 在JSP页面中包含Applet
43.1.3.10. 使用Apusic JSP预编译
43.2. Apusic Http Servlets 开发
43.2.1. Http Servlets 概述
43.2.1.1. 什么是Servlet
43.2.1.2. 使用Servlet的目的
43.2.1.3. Servlet开发概述
43.2.1.4. Servlet与JavaEE
43.2.1.5. Servlet API参考
43.2.2. Apusic Http Servlets变动及其升级
43.2.2.1. 从Servlet2.4到Servlet2.5的主要变动
43.2.2.1.1. 依赖于J2SE5.0
43.2.2.1.2. 支持注解(Annotation)
43.2.2.1.3. 更便利的web.xml的配置
43.2.2.2. 从Servlet2.3到Servlet2.4的变动
43.2.2.2.1. Servlet 2.4版使用XML Schema作为部署描述文件定义
43.2.2.2.2. Servlet 2.4版在加入了ServletRequest监听器
43.2.2.2.3. Servlet 2.4版增强了请求分发器的过滤功能
43.2.2.2.4. Servlet 2.4版可以定义网站的字符编码方式
43.2.3. Apusic Http Servlets编程初步
43.2.3.1. Servlet生命周期
43.2.3.2. 编写一个基本HTTP Servlet的步骤
43.2.3.3. 高级特征
43.2.4. Apusic Http Servlets编程进阶
43.2.4.1. 初始化Servlet
43.2.4.2. 使用注解
43.2.4.2.1. @Resource与@Resources
43.2.4.2.2. @PostConstruct与@PreDestroy
43.2.4.2.3. @EJB
43.2.4.2.4. @WebServiceRef
43.2.4.2.5. @Persistence系列注解
43.2.4.2.6. @DeclareRoles
43.2.4.2.7. @RunAs
43.2.4.3. 编写Service方法
43.2.4.3.1. 取得客户端请求
43.2.4.3.2. 提供HTTP响应
43.2.4.4. 处理多线程情况
43.2.4.5. 维护客户端状态
43.2.4.5.1. 访问Session
43.2.4.5.2. 使属性和Session相关联
43.2.4.5.3. Session管理
43.2.4.5.4. Session跟踪
43.2.4.6. 访问Servlet环境(Servlet Context)
43.2.4.7. 使用Apusic Services
43.2.4.8. 调用其他Web资源
43.2.4.8.1. 包含其他Web资源
43.2.4.8.2. 传递控制给其他Web组件
43.2.4.9. 结束一个Servlet
43.2.5. Apusic Http Servlets高级开发
43.2.5.1. Servlet Filtering
43.2.5.1.1. 编写过滤器类
43.2.5.1.2. 定制请求和响应
43.2.5.1.3. 映射过滤器
43.2.5.2. Application Events
43.2.5.2.1. 配置事件监听类
43.2.5.2.2. 编写事件监听类
43.2.5.2.3. 事件监听类模板
43.3. JSP扩展标记
43.3.1. JSP 扩展标记介绍
43.3.2. 使用扩展标记
43.3.2.1. 声明扩展标记
43.3.2.2. 扩展标记的类型
43.3.3. 定义扩展标记
43.3.3.1. 标记库描述符
43.3.3.2. 标记处理类(Tag Handlers )
43.3.3.3. 简单标记
43.3.3.4. 带属性的标记
43.3.3.5. 带标记体的标记
43.3.3.6. 定义脚本变量的标记
43.3.3.7. 协作标记
43.3.4. 标记处理类如何被调用
43.4. Apusic JSF
43.4.1. 什么是JavaServer Faces?
43.4.2. JSF页面的生命周期
43.4.2.1. 重建视图阶段(Restore View Phase)
43.4.2.2. 应用视图值阶段(Apply Request Values Phase)
43.4.2.3. 处理校验阶段(Process Validations Phase)
43.4.2.4. 更新模型值阶段(Update Model Values Phase)
43.4.2.5. 调用应用阶段(Invoke Application Phase)
43.4.2.6. 显示应答阶段(Render Response Phase)
43.4.3. UI组件模型
43.4.3.1. UI组件类
43.4.3.2. 组件显示模型
43.4.3.3. 转换模型
43.4.3.4. 事件和监听器模型
43.4.3.5. 校验模型
43.4.4. 导航(Navigation)模型
43.4.5. Backing Bean管理
43.4.6. 更多参考:
44. EJB开发手册
44.1. 简介
44.1.1. Enterprise JavaBean简介
44.1.1.1. 作为组件模型的EJB
44.1.1.1.1. 特征
44.1.1.1.2. 使用EJB组件模型的优势
44.1.1.2. EJB组件模型
44.1.1.2.1. 客户端类型
44.1.1.2.2. EJB组件模型的组成部分
44.1.1.3. EJB的类型
44.1.2. Session Bean
44.1.2.1. 什么是Session Bean
44.1.2.2. Session Bean的生存时间
44.1.2.3. 会话状态
44.1.2.3.1. 无状态的Session Bean
44.1.2.3.2. 有状态的Session Bean
44.1.3. Entity Bean
44.1.3.1. 什么是Entity Bean
44.1.3.1.1. Session Bean与Entity Bean
44.1.3.1.2. 容器管理持久性(Container-managed Persistence,CMP)
44.1.3.1.3. 容器管理关系(Container-managed Relationship,CMR)
44.1.3.1.4. 容器管理关系的方向
44.1.3.2. Entity Bean的特征
44.1.3.2.1. 持久性
44.1.3.2.2. 持久业务数据的对象表示
44.1.3.2.3. 表示相同的底层数据的多个Entity Bean实例
44.1.3.2.4. 可查找的Entity Bean
44.1.4. Message-driven Bean
44.1.4.1. Message-driven Bean 的产生原因
44.1.4.2. Message-driven Bean 作为一般的JMS 使用者(consumer)
44.1.4.3. Message-driven Bean 与其他Enterprise Bean
44.1.5. 使用接口定义客户访问
44.1.5.1. 远程访问
44.1.5.2. 本地访问
44.1.5.3. 本地接口与容器管理关系
44.1.5.4. 方法参数和返回值
44.1.5.5. 远程还是本地
44.1.5.6. 执行效率与组件接口类型
44.1.6. Enterprise Bean的内容
44.1.7. EJB组件模型的灵活性
44.1.8. 何时使用EJB组件
44.2. 会话Bean
44.2.1. 会话Bean
44.2.1.1. 容器与会话Bean
44.2.1.2. 会话Bean的会话状态
44.2.1.2.1. 有状态Session Bean实例的钝化与激活
44.2.1.2.2. 会话状态
44.2.1.2.3. 事务操作与状态域
44.2.2. 组件模型单元
44.2.2.1. Home接口
44.2.2.1.1. 远程Home接口
44.2.2.1.2. 本地Home接口
44.2.2.2. 业务(组件)接口
44.2.2.2.1. 远程接口
44.2.2.2.2. 本地接口
44.2.2.3. 组件类
44.2.2.3.1. 在组件类中使用注解
44.2.2.3.2. javax.ejb.SessionBean接口
44.2.2.3.3. SessionContext接口
44.2.2.3.4. 可选的SessionSynchronization接口
44.2.2.3.5. 串行化的会话Bean方法调用
44.2.2.3.6. 业务方法必须遵守的规则
44.2.2.3.7. 代码范例
44.2.3. 生存周期
44.2.3.1. 有状态Session Bean的生存周期
44.2.3.2. 无状态Session Bean的生存周期
44.3. Message-driven Bean
44.3.1. Message-driven Bean
44.3.1.1. Message-driven Bean与EJB容器、客户端、消息系统
44.3.2. 组件模型单元
44.3.2.1. 组件类
44.3.2.1.1. javax.ejb.MessageDrivenBean接口
44.3.2.1.2. javax.jms.MessageListener接口
44.3.2.1.3. javax.ejb.MessageDrivenContext接口
44.3.2.1.4. 串行化的调用
44.3.2.1.5. 消息处理的并发
44.3.2.1.6. Message-driven Bean方法的事务上下文
44.3.2.1.7. 消息接收确认(Message Acknowledgement)
44.3.2.1.8. 指定队列(Queue)或主题(Topic)
44.3.2.1.9. 异常处理
44.3.2.1.10. 遗漏的PreDestroy调用
44.3.2.2. 必须遵守的规则
44.3.2.2.1. 组件类
44.3.2.2.2. onMessage方法
44.3.2.2.3. ejbRemove方法
44.3.3. 生存周期
44.4. Entity Bean
44.4.1. 概览
44.4.1.1. 数据的对象视图
44.4.1.2. 组件结构
44.4.1.3. Primary Key
44.4.2. 客户端
44.4.2.1. JNDI
44.4.2.2. 远程客户
44.4.2.3. 本地客户
44.4.3. 容器与Entity Bean
44.4.3.1. 通过JNDI定位远程Home接口
44.4.3.2. 通过JNDI定位本地Home接口
44.4.4. 组件模型
44.4.4.1. Home接口
44.4.4.1.1. 远程Home接口
44.4.4.1.2. 本地Home接口
44.4.4.2. Primary Key
44.4.4.3. 组件接口
44.4.4.3.1. 远程接口
44.4.4.3.2. 本地接口
44.4.4.4. 组件类
44.4.5. 生存周期
44.5. Bean管理持久性的Entity Bean
44.5.1. 概述
44.5.2. Bean管理持久性的Entity Bean
44.5.2.1. 打开与释放资源
44.5.2.2. 实例的创建
44.5.2.3. 实例状态与持久存储
44.5.2.4. 实例的清除
44.5.3. 必须遵守的规则与范例
44.5.3.1. 组件类
44.5.3.1.1. ejbCreate方法
44.5.3.1.2. ejbPostCreate方法
44.5.3.1.3. ejbRemove方法
44.5.3.1.4. finder方法
44.5.3.1.5. 业务方法
44.5.3.1.6. Home方法
44.5.3.2. Home接口
44.5.3.3. 组件接口
44.5.4. 异常处理
44.5.4.1. 系统级异常
44.5.4.2. 应用级异常
44.5.4.3. 组件异常类型
44.6. 容器管理持久性的Entity Bean
44.6.1. 概述
44.6.2. 容器管理持久性的Entity Bean
44.6.2.1. CMP模型
44.6.2.2. 例子说明
44.6.2.3. 抽象持久性模式(Abstract persistence schema)
44.6.2.3.1. 容器管理持久性域(cmp-field)
44.6.2.3.2. 容器管理关系(cmr)与容器管理关系域(cmr-field)
44.6.2.3.3. 辅助值对象(dependent value object)
44.6.2.3.4. 自动建表与自动生成主键
44.6.2.3.5. 装载单元
44.6.2.3.6. 关系的赋值语义
44.6.2.4. Primary Key
44.6.2.5. 实例的清除
44.6.2.5.1. remove方法
44.6.2.5.2. 级联(cascade)移除
44.6.2.6. Finder方法
44.6.2.6.1. 单个对象的查找
44.6.2.6.2. 多个对象的查找
44.6.2.6.3. 容器自动生成查询
44.6.2.7. Select方法
44.6.2.7.1. 返回单个对象的select方法
44.6.2.7.2. 返回多个对象的select方法
44.6.2.8. 实例的生存周期与开发中的约定
44.6.2.8.1. 实例的生存周期
44.6.2.8.2. 开发中的约定
44.6.3. 必须遵守的规则
44.6.3.1. 类与接口
44.6.3.2. 组件类
44.6.3.3. 辅助类
44.6.3.4. ejbCreate方法
44.6.3.5. ejbPostCreate方法
44.7. EJB QL
44.7.1. 概述
44.7.2. 定义
44.7.2.1. 抽象持久类型与查询范围
44.7.2.2. 命名
44.7.2.3. 范例
44.7.2.4. 返回值类型
44.7.2.5. FROM子句与定位声明
44.7.2.5.1. 标识符(Identifier)
44.7.2.5.2. 标记变量(indentification variables)
44.7.2.5.3. 范围变量声明
44.7.2.5.4. 集合成员变量声明
44.7.2.5.5. 范例
44.7.2.5.6. 路径表达式
44.7.2.5.7. WHERE子句与条件表达式
44.7.2.6. SELECT子句
44.7.2.7. ORDER BY字句
44.7.2.8. NULL值
44.7.2.9. 相等语义
44.7.2.10. 查询语句的限制
44.7.3. 范例
44.7.3.1. 简单查询
44.7.3.2. 使用关系的查询
44.7.3.3. 使用输入参数的查询
44.7.3.4. 定义select方法的查询
44.7.3.5. EJB QL与SQL
44.7.4. EJB QL BNF
44.8. Java Persistence API
44.8.1. 概览
44.8.2. 实体
44.8.2.1. 什么是实体
44.8.2.2. 实体类的一些需求
44.8.2.3. 持久类的持久值域与持久属性
44.8.2.4. 持久值域
44.8.2.5. 持久属性
44.8.2.6. 实体的主键
44.8.2.7. 主键类
44.8.3. 实体的关系
44.8.3.1. 实体关系的多重性
44.8.3.2. 实体关系的方向
44.8.3.2.1. 双向关系
44.8.3.2.2. 单向关系
44.8.3.2.3. 查询与关系方向
44.8.3.2.4. 级联删除关系
44.8.3.3. 实体的继承关系
44.8.3.3.1. 抽象实体
44.8.3.3.2. 映射超类(Mapped superclass)
44.8.3.3.3. 非实体超类
44.8.3.4. 继承结构映射策略
44.8.3.4.1. 单表映射继承结构策略
44.8.3.4.2. 单表映射具体实体类策略
44.8.3.4.3. 子类连接策略
44.8.4. 管理实体
44.8.4.1. 实体管理器Entity Manager
44.8.4.1.1. 容器管理的实体管理器
44.8.4.1.2. 应用管理的实体管理器
44.8.4.1.3. 使用EntityManager查找实例
44.8.4.2. 管理实体实例的生存周期
44.8.4.2.1. 持久化实体实例
44.8.4.2.2. 清除实体实例
44.8.4.2.3. 同步实体数据到数据库
44.8.4.3. 创建查询
44.8.4.4. 查询中的命名参数
44.8.4.5. 查询中的顺序参数
44.8.5. 持久单元
44.8.5.1. persistence.xml文件
44.9. Java持久查询语言
44.9.1. 新特性
44.9.1.1. 批量更新与删除
44.9.1.2. 连接操作
44.9.1.2.1. 内连接(关系连接)
44.9.1.2.2. 左连接(LEFT JOIN)
44.9.1.2.3. 获取连接(FETCH JOIN)
44.9.1.3. GROUP BY和HAVING子句
44.9.1.4. 投影
44.9.1.5. SELECT子句中的构造表达式
44.9.1.6. 子查询
44.9.1.7. 查询中的命名参数
44.9.2. Java持久查询语言BNF
44.10. EJB的环境
44.10.1. 概述
44.10.2. 环境项(environment entry)
44.10.2.1. 访问环境项
44.10.2.2. 设置环境项
44.10.3. EJB引用
44.10.3.1. 访问EJB引用
44.10.3.2. 声明EJB引用
44.10.3.2.1. ejb-link
44.10.4. 资源管理器的连接创建器引用(resource manager connection factory reference)
44.10.4.1. 使用资源管理器的连接创建器引用
44.10.4.2. 声明连接创建器引用
44.10.4.3. 引用的映射
44.10.4.4. 访问引用
44.10.4.5. 标准的连接创建器类型
44.10.5. 资源环境引用(resource environment references)
44.10.5.1. 声明资源环境引用
44.10.5.2. 访问资源环境引用
44.10.6. javax.transaction.UserTransaction接口
44.11. EJB的事务
44.11.1. 概述
44.11.2. 客户端事务与未指明的事务上下文
44.11.3. EJB的事务划分
44.11.3.1. Bean管理事务(程序型的事务划分)
44.11.3.1.1. 使用Bean管理事务的限制
44.11.3.1.2. 事务上下文
44.11.3.2. 容器管理事务(声明型的事务划分)
44.11.3.2.1. setRollbackOnly与getRollbackOnly方法
44.11.3.2.2. 使用JMS API的考虑
44.11.3.2.3. 事务属性
44.11.3.2.4. 必须遵守的规则
44.11.4. 使用Bean管理事务与容器管理事务
44.12. EJB的安全管理
44.12.1. 安全模型
44.12.1.1. 安全角色(Security Role)与方法权限
44.12.1.2. 安全主体(Security Principal)
44.12.1.3. 安全角色与安全主体的映射
44.12.2. 使用安全模型
44.12.2.1. 声明安全角色
44.12.2.2. 定义方法许可
44.12.2.3. 定义角色映射
44.12.2.4. 调用中的身份传播
44.12.2.5. 关于安全角色引用
44.12.2.6. getCallerPrincipal
44.12.2.7. isCallerInRole
44.12.2.8. 声明代码中使用的安全角色引用
44.13. EJB Timer Service
44.13.1. 概述
44.13.2. 组件模型单元
44.13.2.1. 接口描述
44.13.2.1.1. TimerService接口
44.13.2.1.2. TimedObject接口
44.13.2.1.3. TimerHandle接口
44.13.2.1.4. Timer接口
44.13.2.2. 功能实现框架
44.13.3. 使用EJB Timer Service
44.13.3.1. 使用范围
44.13.3.2. 创建Timer
44.13.3.3. 定义Timer需要执行的内容
44.13.3.4. 取消和保存Timer
44.13.3.5. 获得Timer的信息
44.13.3.6. Timer和交易
45. Web Service开发手册
45.1. 概述
45.1.1. Web Services与SOA
45.1.2. Web服务类型
45.1.2.1. RPC方式的Web服务
45.1.2.2. 基于SOAP的Web服务
45.1.2.3. REST风格Web服务
45.1.2.4. 选择适用的Web服务类型
45.2. 在Apusic AS中开发WS
45.2.1. 通用构件
45.2.1.1. WSDL
45.2.1.2. SEI
45.2.1.3. webservices.xml
45.2.2. JAX-WS POJO
45.2.3. Stateless EJB
45.3. 开发WS客户端
45.3.1. 静态代理
45.3.2. 直接操作XML消息动态调用
45.3.3. JavaEE托管环境中的WS客户端注入
45.4. Apusic AS的SPI支持
46. 客户端开发手册
46.1. 客户端简介
46.1.1. 客户端类型
46.1.1.1. Web客户端
46.1.1.2. 应用客户端
46.1.1.3. CORBA客户端
46.1.1.4. Web Services客户端
46.2. 使用应用客户端容器
46.2.1. 应用客户端容器简介
46.2.2. 开发应用客户端
46.2.2.1. 定位Home接口
46.2.2.2. 创建EJB实例
46.2.2.3. 调用业务方法
46.2.3. 打包应用客户端
46.2.4. 运行应用客户端
46.2.5. 不使用应用客户端容器
46.2.6. 关于范例
46.3. CORBA客户端开发
46.3.1. 开发CORBA客户端
47. 金蝶Apusic应用服务器系统服务
47.1. 数据库连接池开发
47.1.1. 概述
47.1.2. 使用JDBC连接池
47.1.2.1. 服务器端JDBC应用
47.1.2.2. 客户端JDBC应用
47.1.3. 范例
47.2. 消息服务开发
47.2.1. 理解JMS
47.2.1.1. 消息中间件
47.2.1.2. JMS接口描述
47.2.1.3. JMS和其它企业级JAVA API的关系
47.2.1.4. JMS消息模型
47.2.1.5. 消息的同步异步接收
47.2.1.6. PTP模型
47.2.1.7. PUB/SUB模型
47.2.2. 使用JMS
47.2.2.1. 开发JMS Client的步骤
47.2.2.2. PTP模型应用
47.2.2.3. PUB/SUB模型应用
47.2.2.4. 权限设置
47.3. 使用JAAS用户认证
47.3.1. JAAS简介
47.3.1.1. 一个简单的例子
47.3.1.2. JAAS核心类和接口
47.3.1.3. 配置LoginModules
47.3.1.4. 编写Policy文件
47.3.1.5. 运行范例程序
47.3.2. JAAS和Apusic
47.3.3. Apusic JAAS开发
47.4. 使用Apusic事务服务
47.4.1. 事务服务简介
47.4.2. 配置Apusic事务服务
47.4.3. 分布式事务恢复
47.4.3.1. 需配置的参数
47.4.3.2. 使用方法
47.4.4. 使用事务服务
47.4.4.1. 在EJB中使用事务服务
47.4.4.2. 在客户端中使用事务服务