Apusic Studio开发指南
Apusic标准工程介绍
概述
目录结构
Apusic系统工程简介
操作
新建Apusic标准工程
新建模块
部署
导出EAR文件
EJB开发介绍
概述
EJB模块
新建EJB模块
如何引用外部jar包
新建会话Bean
Web开发
概述
Web开发环境
Web工程
可视化开发
标签栏
图形编辑器和代码编辑器
属性视图
大纲
布局组件
Managed Bean介绍
概述
创建Managed Bean
使用Managed Bean
示例
Hello Duke
前言
Step By Step
CRUD
前言
Step By Step
Apusic应用服务器文档
Apusic应用服务器5.1概览
Apusic应用服务器5.1技术概览
概述
体系结构
Apusic服务器、Apusic域和Apusic实例
Apusic体系结构组成
Apusic Core内核
容器
Web Container
JSP/Servlet容器
JSF引擎
Portlet容器
虚拟主机
Http Connector
WebDav
EJB Container
Client Container
容器Session管理
Http Session
In-memory Cache
存储
Session Failover
Session Stick
Session Timeout
Stateful Session Bean
基础服务
JCA Services
Naming
JTA
死锁检测
并发控制
JDBC
JDBC 语句缓存
连接池
JMS
JavaMail
JMX
Web Services
Web Services引擎
JAX-WS 规范
对Java EE 5.0的支持
Apusic应用服务器的消息安全机制
UDDI
安全框架
JAVA授权和鉴定服务(JAAS)
JavaEE容器的授权合约(JACC)
Apusic Security Extensions
Apusic SSO
身份鉴定
授权
加密
安全数据存储
管理与监控
管理接口
管理工具
Apusic管理控制台
Web管理控制台
Shell Script
集群服务
Web集群
JNDI集群
EJB集群
JMS集群
消息路由
消息队列
技术汇总
Apusic Platform
Apusic Studio
Apusic消息中间件
Apusic应用服务器5.1新特性
安装与管理
安装Apusic5.1应用服务器
系统要求
安装
获取Apusic应用服务器安装包
Windows下基于图形界面的安装
压缩包的安装
安装后的工作
了解Apusic应用服务器的目录结构
运行服务器
启动远程管理工具
启动并访问应用服务器信息中心
使用firststep工具
关闭服务器
卸载服务器
注册
Apusic 应用服务器开发版
注册Apusic 应用服务器正式版
管理Apusic应用服务器
启动和停止服务器
命令行启动或停止服务器
使用startapusic启动脚本
开始菜单(限于Windows)
Windows系统服务(限于Windows)
使用firststep工具启动服务器
配置Classloader
Classloader的基本概念
类装载的方式
一个基本的Classloader的层次结构
基本的Classloader
自定义Classloader
Caller Classloader和线程上下文Classloader
JVM中类的唯一性
Apusic的Classloader体系
JavaEE应用对Classloader的要求
Apusic的Classloader和它们的层次结构
ServletClassLoader的特性
类的动态加载
ServletClassLoader的多层结构
Session中对象的类动态装载
类装载的Web优先策略
类装载查看服务
日志服务
理解日志服务子系统
日志管理器(LogManager)
日志级别
日志记录器对象(Logger)
日志输出(Handler)
管理与配置
编辑logging.xml文件
记录客户端IP
基于JMX的可植入服务配置
理解JMX
可植入服务命名
域名(domain name)
标识属性(key attribute)
命名的字符串表示
配置和管理可植入服务
线程池服务配置
默认的公共线程池配置
多路复用线程池配置
WebServer线程池配置
JMS线程池配置
ORBWorker线程池配置
管理多路复用
理解多路复用
管理与配置
apusic.conf文件中相关配置属性说明
SSL配置
TLS/SSL简介
建立自己的认证授权机构CA
生成服务器端证书
颁发并发布个人证书
配置服务器允许双向认证
测试双向认证
管理Apusic Web服务器
管理与配置
配置Web应用
部署Web应用
配置web上下文根路径
配置虚拟主机
WebDAV配置
管理Session服务
管理与配置
管理Session失效时间
使用Apache作为Web代理
HTTP Proxy
AJP Proxy
使用Microsoft IIS作为Web代理
理解ACP(Apusic Connector Protocol)
安装
管理与配置
管理JDBC服务
理解数据库连结池
数据库连结池管理与配置
编辑datasources.xml文件
datasource元素
property
remote-acl
结果集缓存
语句缓存
连接失效检测
活动连接监控
JDBC事件监控
消息服务配置
理解Apusic消息服务
消息路由与存储
配置消息存储目录
配置消息路由
理解消息路由
配置和管理路由
管理消息服务
配置连接工厂
配置消息目的地(Destination)
配置消息队列
配置消息主题
安全相关配置
安全角色
消息目的地(Destination)访问许可
范例
管理事务服务
配置事务服务
管理命名服务
配置命名服务
管理应用服务器域
应用服务器域的概念
应用服务器域的管理
应用服务器安全提供程序
安全框架介绍
内置安全提供程序
文件存储配置
JDBC存储配置
LDAP存储配置
自定义安全提供程序
实体信息的存储与读取
实现身份验证提供程序
实现授权提供程序
配置映射
管理集群
集群的基本概念及相关术语
可扩展性(Scalability)
可用性(Availability)
可靠性(Reliability)
失效转移(Fail-Over)
负载均衡(Load Balance)
会话粘滞(Session Stick)
幂等性(Idempotent)
J2EE集群
负载均衡
失效转移
Apusic集群
Web集群
Apusic负载均衡
负载均衡策略
Apusic负载均衡器的Session 复制策略
失效转移
配置负载均衡
第三方负载均衡
Session复制策略
Session的存储
配置Web集群
Web集群失效转移
Apusic Session复制粒度
Web集群方案
JNDI集群
本地JNDI和JNDI集群
JNDI 负载均衡和JNDI失效恢复
JNDI集群配置
EJB集群
EJB负载均衡和EJB高可用性
EJB集群配置
EJB集群实践
JMS集群
消息路由
理解Apusic消息服务
配置消息路由与存储
管理消息服务
集群队列
配置集群队列
使用集群队列
配置和管理工具
appctl工具
apclient工具
firststep工具
dep工具
AdminMain工具
选项
用法
关于服务的说明
JSPC工具
使用Jconsole监控
用Jconsole监控和操作Apusic应用服务器
附录:jserv.conf
附录:缺省的apusic.conf配置文件
附录:缺省的datasources.xml配置文件
附录:缺省的jms.xml配置文件
附录:缺省的logging.xml配置文件
附录:缺省的server.xml配置文件
附录:缺省的auth.cfg配置文件
附录:缺省的clientauth.cfg配置文件
附录:缺省的acp_isapi.properties配置文件
Web开发手册
Apusic JSP 开发
JSP概述
什么是JSP
JSP如何处理请求
Apusic JSP变动及其升级
从JSP2.0到JSP2.1的主要变动
JSP 2.1支持统一表达语言Unified Expression Language
从JSP1.2到JSP2.0的主要变动
JDK要求
JSP 2.0支持表达语言expression language
JSP 2.0中加入了JSP fragment
JSP 2.0中加入了SimpleTag
Apusic JSP开发指南
JSP页面的生命周期
初始化和结束一个JSP页面
创建静态内容
创建动态内容
使用内置对象
对象的作用范围
JSP元素(Element)
伪指令元素 (Directive Elements)
动作元素 (Action Elements)
脚本元素 (Scripting Elements)
表达式语言
使表达式语言失效
使用表达式语言
变量
文字
操作符
保留关键字
举例列表
使用JavaBeans
JavaBeans 设计惯例
创建和使用JavaBeans
设置JavaBeans的属性
得到JavaBeans 的属性
在JSP页面中包含其他内容
传递控制到其他Web组件
在JSP页面中包含Applet
使用Apusic JSP预编译
Apusic Http Servlets 开发
Http Servlets 概述
什么是Servlet
使用Servlet的目的
Servlet开发概述
Servlet与JavaEE
Servlet API参考
Apusic Http Servlets变动及其升级
从Servlet2.4到Servlet2.5的主要变动
依赖于J2SE5.0
支持注解(Annotation)
更便利的web.xml的配置
servlet名称通配符
在servlet映射中使用多个url-pattern标签
HTTP方法名称
从Servlet2.3到Servlet2.4的变动
Servlet 2.4版使用XML Schema作为部署描述文件定义
Servlet 2.4版在加入了ServletRequest监听器
Servlet 2.4版增强了请求分发器的过滤功能
Servlet 2.4版可以定义网站的字符编码方式
Apusic Http Servlets编程初步
Servlet生命周期
编写一个基本HTTP Servlet的步骤
高级特征
Apusic Http Servlets编程进阶
初始化Servlet
使用注解
@Resource与@Resources
@PostConstruct与@PreDestroy
@EJB
@WebServiceRef
@Persistence系列注解
@DeclareRoles
@RunAs
编写Service方法
取得客户端请求
提供HTTP响应
处理多线程情况
维护客户端状态
访问Session
使属性和Session相关联
Session管理
Session跟踪
访问Servlet环境(Servlet Context)
使用Apusic Services
调用其他Web资源
包含其他Web资源
传递控制给其他Web组件
结束一个Servlet
Apusic Http Servlets高级开发
Servlet Filtering
编写过滤器类
定制请求和响应
映射过滤器
Application Events
配置事件监听类
编写事件监听类
事件监听类模板
JSP扩展标记
JSP 扩展标记介绍
使用扩展标记
声明扩展标记
扩展标记的类型
定义扩展标记
标记库描述符
标记处理类(Tag Handlers )
简单标记
带属性的标记
带标记体的标记
定义脚本变量的标记
协作标记
标记处理类如何被调用
Apusic JSF
什么是JavaServer Faces?
JSF页面的生命周期
重建视图阶段(Restore View Phase)
应用视图值阶段(Apply Request Values Phase)
处理校验阶段(Process Validations Phase)
更新模型值阶段(Update Model Values Phase)
调用应用阶段(Invoke Application Phase)
显示应答阶段(Render Response Phase)
UI组件模型
UI组件类
组件显示模型
转换模型
事件和监听器模型
校验模型
导航(Navigation)模型
Backing Bean管理
更多参考:
EJB开发手册
Apusic Enterprise JavaBeans 简介
Enterprise JavaBean简介
作为组件模型的EJB
特征
使用EJB组件模型的优势
EJB组件模型
客户端类型
EJB组件模型的组成部分
EJB的组件接口
HOME接口
Enterprise Bean类
部署描述文件
EJB的类型
Session Bean
什么是Session Bean
Session Bean的生存时间
会话状态
无状态的Session Bean
有状态的Session Bean
Entity Bean
什么是Entity Bean
Session Bean与Entity Bean
持久性
共享访问
Primary Key
关系
容器管理持久性(Container-managed Persistence,CMP)
抽象模式(Abstract Schema)
容器管理关系(Container-managed Relationship,CMR)
容器管理关系的方向
Entity Bean的特征
持久性
持久业务数据的对象表示
表示相同的底层数据的多个Entity Bean实例
可查找的Entity Bean
Message-driven Bean
Message-driven Bean 的产生原因
Message-driven Bean 作为一般的JMS 使用者(consumer)
Message-driven Bean 与其他Enterprise
Bean
使用接口定义客户访问
远程访问
本地访问
本地接口与容器管理关系
方法参数和返回值
远程还是本地
执行效率与组件接口类型
Enterprise Bean的内容
EJB组件模型的灵活性
何时使用EJB组件
会话Bean
会话Bean
容器与会话Bean
会话Bean的会话状态
有状态Session Bean实例的钝化与激活
会话状态
事务操作与状态域
组件模型单元
Home接口
远程Home接口
编写远程Home接口的规则
代码范例
本地Home接口
编写本地Home接口的规则
代码范例
业务(组件)接口
远程接口
必须遵守的的规则
代码范例
本地接口
必须遵守的规则
组件类
在组件类中使用注解
@Resource注解
@PostCreate注解
@Remove与@PreDestroy注解
@PrePassivate与@PostActivate注解
javax.ejb.SessionBean接口
setSessionContext
ejbRemove
ejbPassivate与ejbActivate
SessionContext接口
可选的SessionSynchronization接口
串行化的会话Bean方法调用
业务方法必须遵守的规则
代码范例
生存周期
有状态Session Bean的生存周期
无状态Session Bean的生存周期
Message-driven Bean
Message-driven Bean
Message-driven Bean与EJB容器、客户端、消息系统
组件模型单元
组件类
javax.ejb.MessageDrivenBean接口
javax.jms.MessageListener接口
javax.ejb.MessageDrivenContext接口
串行化的调用
消息处理的并发
Message-driven Bean方法的事务上下文
消息接收确认(Message Acknowledgement)
指定队列(Queue)或主题(Topic)
异常处理
遗漏的PreDestroy调用
必须遵守的规则
组件类
onMessage方法
ejbRemove方法
生存周期
Entity Bean
概览
数据的对象视图
组件结构
Primary Key
客户端
JNDI
远程客户
本地客户
容器与Entity Bean
通过JNDI定位远程Home接口
通过JNDI定位本地Home接口
组件模型
Home接口
远程Home接口
create方法
finder方法
Remove方法
Home方法
本地Home接口
create方法
finder方法
Remove方法
Home方法
Primary Key
组件接口
远程接口
本地接口
组件类
生存周期
Bean管理持久性的Entity Bean
概述
Bean管理持久性的Entity Bean
打开与释放资源
实例的创建
实例状态与持久存储
实例的清除
必须遵守的规则与范例
组件类
ejbCreate方法
ejbPostCreate方法
ejbRemove方法
finder方法
业务方法
Home方法
Home接口
组件接口
异常处理
系统级异常
应用级异常
组件异常类型
容器管理持久性的Entity Bean
概述
容器管理持久性的Entity Bean
CMP模型
例子说明
抽象持久性模式(Abstract persistence schema)
容器管理持久性域(cmp-field)
容器管理关系(cmr)与容器管理关系域(cmr-field)
辅助值对象(dependent value object)
自动建表与自动生成主键
自动建表
自动生成主键
装载单元
关系的赋值语义
使用java.util.Collection API更新关系
使用setter方法更新关系
Primary Key
实例的清除
remove方法
级联(cascade)移除
Finder方法
单个对象的查找
多个对象的查找
容器自动生成查询
Select方法
返回单个对象的select方法
返回多个对象的select方法
实例的生存周期与开发中的约定
实例的生存周期
开发中的约定
必须遵守的规则
类与接口
组件类
辅助类
ejbCreate方法
ejbPostCreate方法
EJB QL
概述
定义
抽象持久类型与查询范围
命名
范例
返回值类型
FROM子句与定位声明
标识符(Identifier)
标记变量(indentification variables)
范围变量声明
集合成员变量声明
范例
路径表达式
WHERE子句与条件表达式
字面值(literals)
标记变量(indetification variable)
路径表达式
输入参数
条件表达式构成
运算符与优先级
BETWEEN表达式
IN表达式
LIKE表达式
NULL比较表达式
空集合比较表达式
集合成员表达式
功能表达式
SELECT子句
ORDER BY字句
NULL值
相等语义
查询语句的限制
范例
简单查询
使用关系的查询
使用输入参数的查询
定义select方法的查询
EJB QL与SQL
EJB QL BNF
Java Persistence API
概览
实体
什么是实体
实体类的一些需求
持久类的持久值域与持久属性
持久值域
持久属性
实体的主键
主键类
实体的关系
实体关系的多重性
实体关系的方向
双向关系
单向关系
查询与关系方向
级联删除关系
实体的继承关系
抽象实体
映射超类(Mapped superclass)
非实体超类
继承结构映射策略
单表映射继承结构策略
单表映射具体实体类策略
子类连接策略
管理实体
实体管理器Entity Manager
容器管理的实体管理器
应用管理的实体管理器
使用EntityManager查找实例
管理实体实例的生存周期
持久化实体实例
清除实体实例
同步实体数据到数据库
创建查询
查询中的命名参数
查询中的顺序参数
持久单元
persistence.xml文件
Java持久查询语言
新特性
批量更新与删除
连接操作
内连接(关系连接)
左连接(LEFT JOIN)
获取连接(FETCH JOIN)
GROUP BY和HAVING子句
投影
SELECT子句中的构造表达式
子查询
查询中的命名参数
Java持久查询语言BNF
EJB的环境
概述
环境项(environment entry)
访问环境项
设置环境项
EJB引用
访问EJB引用
声明EJB引用
ejb-link
资源管理器的连接创建器引用(resource manager connection factory
reference)
使用资源管理器的连接创建器引用
声明连接创建器引用
引用的映射
访问引用
标准的连接创建器类型
资源环境引用(resource environment references)
声明资源环境引用
访问资源环境引用
javax.transaction.UserTransaction接口
EJB的事务
概述
客户端事务与未指明的事务上下文
EJB的事务划分
Bean管理事务(程序型的事务划分)
使用Bean管理事务的限制
事务上下文
容器管理事务(声明型的事务划分)
setRollbackOnly与getRollbackOnly方法
使用JMS API的考虑
事务属性
NotSupported
Required
Supports
RequiresNew
Mandatory
Never
必须遵守的规则
使用Bean管理事务与容器管理事务