Apusic 应用服务器 5.0 技术白皮书
1 概述
2006年5月,新一代Java企业级平台开发规范JavaEE 5正式通过了JCP(Java Community Process)的批准。JavaEE 5规范是Java平台在企业级应用上的一次重大的升级,正像JavaEE 5提倡的口号:“Do more with less work”一样,JavaEE 5的推出,标志着JavaEE平台开始朝着轻量、敏捷的方向发展。
JavaEE 5为我们带来了以下的新特性: 简化的配置
标志着JavaEE 开发过程由繁入简的蜕变
全新的EJB模型
新的EJB 3.0 规范,在保持并且增强了EJB原有功能的同时,其开发也变得简单起来
新的Web开发技术
新纳入的JSF 1.2 规范,使得Web应用的开发跨上了新的台阶 更完善的Web Services支持
Web Services开发过程的简化,是JavaEE 5.0的最大特色
作为全球第四家通过JavaEE 5兼容性测试认证的产品,Apusic应用服务器5.0不仅允许客户使用所有JavaEE 5规范的新技术特性,更提供了一组Apusic应用服务器特有的优势技术,包括: Web开发新变革——Apusic OperaMasks
Apusic应用服务器5.0融合了金蝶中间件公司沉淀多年的Web开发解决方案
OperaMasks”。Apusic OperaMasks提供了从容器级别对Ajax“Apusic
予以支持的JSF引擎,与其它Ajax解决方案相比,它对Ajax的支持是原生的。任何JSF应用,在Apusic OperaMasks引擎上运行时,无需修改任何代码,只需要增加一个配置参数,都能够转变成为自然而然的Ajax应用。此外,Apusic OperaMasks还拥有丰富的组件库,包括用TreeView以树结构来组织数据,用DataGrid以表格形式展现数据,用Chart以图表形式绘制数据,用DataView以任何你能够想到的格式来描述数据等,并且,这些Rich Components还具备换肤、自定义风格等其它特色。Apusic OperaMasks技术为Web应用开发提供了标准、开放、完整、先进的解决方案。 WebDav协议的支持
JavaEE 规范对应用的管理粒度为“模块”,即可以管理以war、jar、或者ear形式组织的应用。Apusic应用服务器5.0提供了符合RFC2518的WebDav实现,这使得对应用的管理粒度可以细致到单独的文件资源,从而使用户对大型Web站点的内容管理工作变得更为简单与精准。 特有的Apusic Launcher技术
常规J2EE应用服务器的 Class Loader 机制无法克服应用与系统之间类命名空间相互冲突的局限,在Apusic Launcher启动模式下,Apusic应用服
Class Loader来启动服务器和装载应用,务器5.0使用自己特有的Filter
可有效避免应用服务器和用户应用中第三方库的冲突。 完善的集群支持
Apusic 应用服务器5.0提供了完善的集群解决方案,包括对Web、JNDI、EJB、JMS等JavaEE资源进行集群。Apusic集群提供了创新性的设计和实现,采用了Client Session Cache(客户端会话缓存)等独创技术,以保障企业应用的高可用性及水平可扩展性。 Apusic Domain支持
Apusic 应用服务器5.0提供域模型(Domain)概念,使得应用服务器的管理和部署更加简便和灵活。 可加密混淆的JSPC工具
class,使用JSPC工具发布应用时,只需发布编译好的JSP 而不需要提供JSP
源程序文件,从而避免暴露JSP源代码。JSPC也省略了应用运行时对JSP的
JSPC工具还可以与金蝶编译过程,从而节省了首次编译时间。此外,Apusic
中间件提供的Java编译混淆器“Jocky”联合使用,使得JSPC编译出来的class文件不可反编译,从而有效保护客户知识产权。 对第三方Http服务器的集成
Apusic 应用服务器5.0有自己的Http服务器实现,但也允许用户集成使用其它的Http服务器,以获取增值服务,例如集成Apache Http Server和IIS等。
支持多Selector的多路复用服务
Apusic 应用服务器5.0在NIO的方式下,能够使用多个Selector来服务用户的请求,从而在多CPU的环境下提升性能。 可扩展的安全框架
Apusic 应用服务器5.0提供灵活的、可扩展的安全框架,能够将JavaEE的安全认证与LDAP、数据库或其它身份验证服务器集成,提供认证和授权服务,并与Apusic SSO紧密集成。 高度安全性
国外厂商在诸如安全算法、加密位数等核心技术上是有严格的海外出口限制的,这对我国的信息化安全是一种严重的挑战。Apusic应用服务器5.0完整实现了Java安全框架,包括Java 认证和授权服务(JAAS)、Java 安全套接字
和Java 加密扩展Cryptography Extension,JCE)扩展(JSSE)(Java ,
加密位数不再受任何限制, 从而更好的保护我国企业、政府的信息安全。 远程监控和管理工具
Apusic 应用服务器5.0提供了丰富的远程监控和管理工具,可以监控应用服务器内存、线程、资源、类装载等状态。 可靠、高效的消息传输机制
Apusic 应用服务器5.0提供了可靠、高效的JMS实现,构建于成熟的、经过实践验证的Apusic消息中间件之上,并提供了标准之外的增强功能,诸如智能路由、集群队列等。 开发工具的良好支持 Apusic Studio集成开发环境基于Eclipse平台技术,为Apusic应用服务器提供了良好的支持。使用Apusic Studio,可快速的构建基于JavaEE 5的应用,并能将应用方便的部署到Apusic应用服务器中,大大提升应用开发效率。
Apusic应用服务器5.0通过JavaEE 5规范兼容性认证,为复杂应用提供了一个敏捷、快速、健壮、高效的开发和运行平台,对于分布式的企业级应用,提供了易扩展、可伸缩和高安全性等特性。本文将介绍Apusic 应用服务器5.0的体系结构及其提供的服务和功能,从而展示Apusic 应用服务器对大型应用系统的支持能力。
2 体系结构
Apusic应用服务器5.0是通过JavaEE 5兼容认证的JavaEE应用服务器产品,构建于金蝶中间件特有的Apusic Core微内核体系之上,图一展示了Apusic应用服务器5.0的体系结构。
< 图一 Apusic应用服务器 5.0体系架构 >
2.1 术语:Apusic服务器、Apusic域和Apusic实例
要能正确理解Apusic应用服务器的体系结构,需要首先理解Apusic服务器、Apusic域和Apusic实例等术语。
Apusic服务器(Apusic Application Server)
Apusic服务器是指Apusic应用服务器的物理部署单元。直观的来说,就是Apusic应用服务器在硬件机器上的一个物理安装。
Apusic域(Apusic Domain)
Apusic域是一个逻辑的管理配置单元。一个Apusic域包含着一组配置,这些配置可以被多个Apusic实例(Apusic Instance)共享。每个Apusic域都有自己的一个或多个Apusic实例。Apusic域可以将自己的Apusic实例委托给其它Apusic域管理,也可以接受其它Apusic域委托,管理委托者的Apusic实例。
Apusic实例(Apusic Instance)
Apusic实例是一组运行的进程,为用户提供应用服务器的各种服务。Apusic实例受到Apusic域的管理并使用它的配置。
通过Apusic域模型,部署在不同物理位置上的Apusic实例,可以共享一套公用配置。同时,可以在单一节点上,通过一个Apusic域统一管理多个Apusic实例。这使得Apusic应用服务器的部署和管理变得简单和灵活。
2.2 Apusic体系结构组成
Apusic应用服务器5.0的体系结构分成如下组成部分: Apusic Core微内核体系 容器 基础服务
Web Services
安全框架 管理和监控 集群服务
接下来的章节,我们将对上述组成部分分别进行介绍。
3 Apusic Core 微内核体系
在Apusic 应用服务器 5.0 中,各项服务以可插拔的方式加入服务器并提供服务,而Apusic Core微内核体系则为这些服务解决资源、线程、事务、通讯等关键领域问题,如此一来,能够从一定程度上屏蔽应用给引擎带来的干扰,并能够有效降低开发成本,带来长远利益。
资源:
Apusic Core对以下资源进行统一管理:JDBC Resources、JCA Resources、JMS、URL、Java Mail、Resource Environment等。
线程:
Apusic Core提供高效稳定的线程池服务,对线程进行管理,维护线程的生命周期,处理高并发请求。
事务:
Apusic Core提供的事务管理器可进行全局事务管理,可管理的事务资源包括数据库连接池、消息和符合J2EE连接器架构(J2EE Connector Architecture,JCA)的资源等。
通讯:
Apusic Core负责处理Apusic 应用服务器与客户端的通讯,支持HTTP、HTTPS、RMI/IIOP等通信协议,并且,通过Apusic通讯协议框架,能够轻松实现对其它协议的支持。
4 容器
JavaEE容器为JavaEE应用提供了运行的基础环境。Apusic应用服务器5.0包括如下类型的容器:Web容器、EJB容器 和Client容器。
4.1 Web 容器
Apusic应用服务器5.0提供的Web容器,用于处理客户端发出的静态和动态Web内容请求,它包括:
JSP/Servlet引擎:
JSP/Servlet引擎负责解析JSP页面,以及执行和管理Servlet组件。Apusic 5.0兼容JavaEE 5标准,实现了对Servlet 2.5和JSP 2.1的支持,并提供向下兼容的能力。
JSF引擎
Apusic JSF引擎包括以下的特性:
容器级别的AJAX支持:在设计时,充分考虑对AJAX的支持,无需任何配置即可实现AJAX效果,开发扩展AJAX组件也更加容易。
简化的ManagedBean管理: 使用JDK1.5的annotation,在类上标注@ManagedBean即可将一个POJO定义为ManagedBean,省去了维护faces-config.xml的烦恼。
扩展的导航机制:扩展了标准的JSF导航机制,除了允许使用导航配置规则中的view-id进行导航外,Apusic JSF也允许直接使用页面地址导航。 增强的布局和模板组件:Apusic JSF提供的布局和模板组件,提供了强大的页面布局管理能力。
扩展的富客户端组件:Apusic JSF提供了一组扩展的富客户端组件,包括DateField,TabBox,Menu,Tree,DataGrid等。
统一的资源和皮肤管理:Apusic JSF提供了统一的资源和皮肤管理机制,具有良好的扩展性。使用者可以根据应用需求制作自己的界面皮肤,将制作好的皮肤打包成jar放在应用中即可。
虚拟主机
虚拟主机是指能在单机上模拟多个主机的服务能力。在Apusic服务器中,我们能够将指定的某些J2EE应用与虚拟主机关联起来。当用户对虚拟主机发出的请求,实际上是对该J2EE应用的请求,同时该虚拟主机的资源无法通过其他的方式进行访问。从而有效实现了在共享硬件与软件资源的情况下,模拟多个主机服务用户请求的效果。
Http Connector
虽然Apusic 5.0自己可以处理静态Http内容请求,但在很多情况下,用户会选择使用其它的Http Server来处理静态Http内容请求。Apusic 5.0提供了一组Http Connector,可以很容易的将其它的Http Server产品,如Apache Http Server和IIS等,集成到Apusic 5.0应用服务器中。
WebDav的支持
WebDav(Web-based Distributed Authoring and Versioning)是一组Http协议的扩展,允许你从远程访问和修改Web站点上的内容。Apusic 5.0提供了自己的WebDav实现,这使得对大型Web站点的内容管理工作变得更为简单。
4.2 EJB 容器
EJB Container为EJB提供部署和管理需要的所有运行时服务,并为
Enterprise Java Bean对象提供对象池、多线程、分布式、安全控制、事
务支持和生命周期管理等底层服务,同时管理JPA对象、CMP对象的数据存储与提取。Apusic 应用服务器5.0支持EJB 最新规范3.0版本,包括:
Session Bean
Session Bean 通常被用于实现业务过程逻辑,它可被视为客户端程序在服务器上的部分逻辑延伸。根据Session Bean保持会话状态的方式,可分为有状态的和无状态的Session Bean。Session Bean 是非持久的,其状态不被保存到持久存储机制(如数据库、文件系统)中,尽管Session Bean 本身可以执行对数据库的操作,但它并不是一种持久对象的表示。 Apusic应用服务器 5.0 对予Session Bean有完整的支持。
Message-Driven Bean
作为一种具有JMS 使用者(consumer)功能的Enterprise Bean 组件模型,Message-Driven Bean 由EJB 容器进行管理,具有一般的JMS 使用者(consumer)所不具有的优点,如对于一个Message-driven Bean,容器可创建多个实例来处理大量的并发消息,而一般的JMS 使用者 (consumer)开发时则必须对此进行处理才能获得类似的功能。同时Message-Driven Bean 可取得EJB 所能获得的标准服务,如容器管理事务等服务。
Apusic应用服务器 5.0 对予Message-Driven Bean有完整的支持。
JPA
JPA是EJB 3.0中用来替换Entity Bean的新的编辑模型。相对于Entity Bean,JPA是一种轻量的O/R-Mapping解决方案。Apusic应用服务器 5.0 允许以可插拔的形式替换JPA实现,默认情况下,Apusic应用服务器集成了 TopLink 作为JPA的默认实现。
此外,Apusic应用服务器5.0提供向下兼容能力,任何符合EJB 1.X或者EJB 2.x的应用,可以无缝移植到Apusic应用服务器5.0版本。
4.3 Client 容器
Client Container是由一组Java类和XML部署描述符组成,它同客户端应用一起运行在客户端的Java虚拟机中,管理应用客户端组件的执行。像其他JavaEE应用组件一样,应用客户端的执行依赖于客户端容器提供的系统服务。客户端容器和Apusic应用服务器通讯使用RMI/IIOP。和其他服务器端的 JavaEE容器相比,客户端容器可以说是相对简单的容器。 客户端容器提供的系统服务有:
创建客户端运行环境,负责和应用服务器进行通讯。
提供JNDI包装,使客户端能够通过Naming串绑定形式定位资源 认证客户端。应用客户端容器自动完成JAAS用户认证。
4.4 容器Session管理
Session存储形式
Session是指用户与服务器之间的会话信息,Apusic应用服务器为 Session提供了一系列管理手段。
In-memory Cache:Apusic应用服务器将Session缓存在内存中,以保证Session访问的效率。
存储:当Session数量超过默认缓存大小,Apusic应用服务器会将内存中的Session持久化到存储介质中,并根据Session的活跃性对存储中的Session和缓存中的Session进行交换。管理员可配置Session缓存池的的大小。Apusic应用服务器支持的Session持久化包括文件系统、RDBMS、BerkerlyDB,管理员可通过管理工具切换Session的存储方式。
如果Session中的数据非常重要,即使服务器失效,这些数据也不能丢失,那么建议采用数据库来持久化Session。
Session Failover
在集群环境中,当一个Apusic实例(Apusic Instance)失效时,它原来服务的所有用户的请求,将会由集群内的另一个Apusic实例响应。这个过程对用户来说要求是透明的,这意味着用户的会话信息在此情况下不能丢失。Apusic提供内存复制、Session迁移、数据库存储等多种技术来保证Session的失败恢复。
内存复制:Apusic集群中的任意Apusic实例可通过内部的复制技术,在网络中复制集群内另一个Apusic实例的Session信息,从而在该实例内存中形成另一个Apusic 实例的Session备份。当某Apusic实例失效时,另一个Apusic实例会接收此实例原来服务的请求,整个过程对用户是透明的,用户感觉不到原先对他进行服务的Apusic实例已经失效。
Session迁移:Session迁移是指在集群中使用Apusic负载均衡器来转发请求时,所采用的Session Failover技术。负载均衡器负责将失效的Apusic实例中的Session迁移到另一个Apusic实例中。
数据库存储:如果集群中的Apusic实例不使用In-memory Cache缓存Session,而使用数据库作为Session的存储中心。这时,由于Session不在Apusic实例中存储,因此,Apusic实例失效不会影响Session的使用。 Session Stick:Apusic集群中的负载均衡器,比如Apache或Apusic Load Balancer,在转发用户请求到集群内的Apusic实例中时,总是将一个用户的请求固定的转发到第一次响应他的Apusic实例中,这就是Apusic集群的Session Stick。这可以避免频繁的Session迁移,减小网络和服务器的负担。
Session Timeout:Apusic应用服务器可以对部署在其上的Web应用的Session超时时间进行全局的设置,也可以对每个应用的Session超时时间进行单独的设置。
Stateful Session Bean:在单个Apusic实例时,SFSB(Stateful Session Bean)的Session状态保存在服务器端的SFSB对象实例中。而在Apusic集群中,采用创新的CSC(Client Session Cache)技术保存SFSB的状态。CSC直接将Session状态保存在客户端,当服务器失效时将Session状态转移到可用的服务器上。SFSB的特点决定了CSC技术是有效的,根据EJB规范,一个SFSB仅限于单个客户使用,不存在共享的情况,因此只需要在客户和服务器之间共享Session状态,而不需要在服务器之间共享Session状态。CSC避免了Session状态发生改变时,在集群节点之间频繁的Session复制,提升了集群的性能。
5 基础服务
5.1 JCA 服务
J2EE连接器架构是为了和传统的应用系统进行连接定义的一套标准的架构。它定义了一套可升级的,安全的,能基于事务的机制,以便J2EE平台可以和传统的应用系统进行整合。J2EE连接器架构还定义了公用客户端接口,使其它平台的应用能访问J2EE平台。对于不同的应用,Apusic应用服务器需要其提供资源适配器,Apusic应用服务器能将符合规范的资源适配器插入应用服务器,以达到应用服务器访问异构系统的目的。
Apusic应用服务器目前提供了 JCA 1.5的完整实现。
5.2 命名服务
由于J2EE 应用的关键特性是分布式的,其提供的服务可能分布在任何一个机器或网络,应用的开发统一通过JNDI(Java Naming and Directory Interface)来获得服务,开发者在开发时可以不用关心服务的物理位置。
Apusic 完全支持使用JNDI 1.2,并且开发完成后,部署者(Deployer)可以在部署工具中配置应用所需要的环境、资源、服务,使应用获得所需的分布式服务,完成最终运行环境的建立。
5.3 JTA 服务
J2EE 中对于事务的处理是分布式的,Apusic应用服务器完全提供对XA 事务的支持。为了简化开发者对事务的处理,Apusic 应用服务器在EJB 容器中提供容器管理事务(Container Managed Transaction),应用开发者使用EJB 管理数据即自动获得了事务的保证,由于EJB 容器对数据库的管理是分布式的,开发者由此自动获得了对应用开发较为困难的分布事务管理能力,这一切都由应用服务器完成。 为保证应用数据和业务逻辑的的完整性,除了提供完全符合规范和强壮的事务管理器之外,Apusic 应用服务器还提供了强壮而灵活的事务构架。JTA(Java事务API)对数据的完整性起到关键作用,Apusic支持的事务包括EJB,JMS,JCA,JDBC等。支持分布式事务,两阶段提交。
5.4 死锁检测
Apusic应用服务器能够根据资源等待图自动检测出死锁状态,当事务发生死锁时将其中一个事务回滚,以释放事务所占用的资源,使其他事务能够继续执行。
5.5 并发控制
Apusic应用服务器提供了灵活和强壮的并发控制机制,单独分离出了并发控制部分,可以使用插件的形式同时提供多种并发控制协议。
5.6 JMS 全局事务
Apusic应用服务器提供了一个作为事务性资源管理器的JMS 提供者(Provider),允许从JSP,Servlet, EJB等应用组件中对JMS 进行事务性的访问。同时,从一个单一事务边界中允许多个应用组件访问JMS 提供者。
5.7 JDBC数据源服务
Apusic 应用服务器模型中的数据层提供企业应用对关系型数据库和传统企业应用数据的高效而可靠的访问。使得企业应用可以通过JDBC 实现对关系型数据库安全、可靠而且高效的访问。目前Apusic 应用服务器提供了对最新的JDBC3.0 版本的支持。任意合法的J2EE 编程模型都可以从Apusic 应用服务器数据库连接池中获得对关系型数据库的连接。Apusic 应用服务器提供了很多功能或特性,使对数据层访问的开发更为简单,同时达到更为高效和安全的目标。
5.8 JDBC 结果集缓存
对于Session Bean、JSP、Servlet 为主的J2EE 应用中,频繁访问数据库而缺少对应的数据缓存等机制,往往会成为企业应用的瓶颈。因此,Apusic 应用服务器提供了JDBC结果集缓存技术,通过将数据库返回的结果集保存在内存中,可以大幅提高应用系统的性能,同时,使用结果集缓存对应用开发者是完全透明的,保证了应用的可移植特性。
5.9 JDBC 语句缓存
企业应用频繁对数据库的访问,往往会成为企业应用的瓶颈。因此,Apusic 应用服务器还提供了JDBC语句缓存技术,同时使用预编译的查询语句,提高应用程序访问数据库的效率。
5.10 消息服务
JAVA 消息服务(JMS)定义了Java 中访问消息中间件的接口。消息中间件提供数据的异步传输,通过消息中间件,一些原本互相孤立的业务组件可以组合成一个可靠的、灵活的系统。消息中间件分为两类:Point-to-Point(PTP)和Publish-Subscribe(Pub/Sub)。
PTP是点对点传输消息,建立在消息队列的基础上,每个客户端对应一个消息队列,客户端发送消息到对方的消息队列中,从自己的消息队列读取消息。
Pub/Sub是将消息定位到某个层次结构栏目的节点上,Pub/Sub 通常是匿名的并能够动态发布消息,Pub/Sub 必须保证某个节点的所有发布者(Publisher)发布的信息准确无误地发送到这个节点的所有消息订阅者(Subscriber)。 Apusic应用服务器支持以上两种模型,并完全实现了JMS1.1版本。
5.11 JavaMail
JavaMail 是一个用于阅读,编写和发送电子消息的API,可以用来建立基于标准的电子邮件客户机,它支持各种因特网邮件协议,包括SMTP,POP,IMAP,MIME,NNTP,S/MIME及其他协议。
Apusic服务器支持所有邮件协议,并完全支持JavaMail 1.4版本。
5.12 JMX
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。基于JMX架构的Apusic应用服务器具备高度可管理性。而服务器基于JMX的体系架构,也带来管理的便利性与可靠性。我们可以通过JMX管理获取服务器的运行现状,并能够通过微内核所提供的诊断数据了解服务器的健康水平。
6 Web Services
Web Services是一种自包含、模块化的应用,且能够在网络上发布、定位和调用。Web Services是一种发展中的用于实现服务驱动架构(SOA)的技术,其注意力主要集中于如何使应用功能模块能够通过标准的互联网协议进行互用,而与运行平台、编程语言等无关。
6.1 Web Services引擎
Apusic应用服务器5.0提供了符合JavaEE 5及相关规范的Web Services服务支持。Apusic对Web Service的支持包括:
JAX-WS 规范
J2EE 1.4使用JAX-RPC作为Web Services的API规范,Java EE 5引入了Java API for XML-Based Web Services (JAX-WS)规范。这个规范是对JAX-RPC扩展,由一系列相关规范整合而成,包括JAX-WS 2.1、 JAXB 2.0、 SAAJ 1.3等等,用于取代原有的JAX-RPC规范。Apusic Web Services引擎完全支持JAX-WS规范,同时向下兼容JAX-RPC规范。 Apusic应用服务器5.0的Web Services引擎具有以下特性:
UDDI (Universal Discovery Description and Integration) UDDI提供了在互联网上进行全球范围的业务注册并相互发现的开放式注册框架。
JAXB 2.0
JAXB 2.0定义了Java与XML数据绑定规范,并提供了Java与XML间双向的自定义数据绑定规则。它提供了一种简便的方法,通过使用Java对象来处理XML文档。
SOAP 1.2
SOAP定义了在HTTP协议上通过XML实现跨系统信息交换的轻量级协议。
SAAJ (SOAP with Attachments API for Java)
SAAJ为Java平台提供了在互联网上发送XML文档的标准方法。
支持元数据注解 (Metadata annotation)
JAX-WS定义了Java语言注解(JSR 175)在Web Services中的应用,并支持Java平台Web Services注解(JSR 181),使客户端与服务器端应用开发更为方便简洁。
支持WS-I Basic Profile 1.1
WS-I BP是由Web Services可互用性组织(Web Services
Interoperability Organization)整理的一系列非其私有的规范集合,并对这些规范进行了阐明、修正、扩展等,用于提高Web Services的可互用性。
异步操作
加入了对客户端异步操作的支持。
加强了对非HTTP传输机制的支持
JAX-WS增强了XML消息与底层传输机制的分离,简化了非HTTP传输的使用。
基于消息的会话管理
JAX-RPC 1.1的会话(Session)管理依赖于HTTP协议。JAX-WS 2.0加入了对基于消息的会话管理的支持。
对Web Services for Java EE的支持
Apusic应用服务器5.0遵循Web Services for JavaEE规范(JSR109),允许建立基于JavaEE组件架构的Web Services服务架构,提供了一个可在多应用服务器间移植和互动的客户端与服务器端编程模型。这个模型提供了可扩展的安全环境,并为JavaEE开发人员所熟悉。
在客户端,允许服务客户通过JNDI查找来获取服务接口(Service Interface)或服务端点接口(Service Endpoint Interface)。服务客户还可使用WebServiceRef注解来注入服务或服务端点。Apusic应用服务器扮演中间代理的角色,保证JNDI查找在web容器、EJB容器以及客户端容器中顺利进行。
在服务器端,允许服务提供方使用无状态会话Bean来作为服务实现Bean(Service Implementation Bean),在实现服务逻辑过程中,可查找或请求容器注入上下文实例,访问容器所提供的各种资源与服务。Apusic应用服务器自动管理服务实现Bean的生存周期与实例池。
Apusic应用服务器还为所部署的Web Services提供基于Java EE规范的安全环境。包括JavaEE身份验证与授权模型。
Apusic应用服务器的消息安全机制
Apusic应用服务器采用OASIS的Web Services安全标准(WS-Security),这是一套为可交互的Web Services安全性而订的国际标准,由加盟OASIS的主要网络服务技术提供商共同制定。
Web Services安全标准是一套使用XML加密技术与XML数字签名技术的消息安全机制,保证在SOAP协议上的消息安全性。消息安全机制将安全信息插入到消息中,伴随消息一起传输到发送目的地。消息安全机制独立于传输层安全机制,因此能保证在传输完成后,消息仍然是受保护的。
Apusic应用服务器遵循Web Services安全标准,支持多种安全标识
(Token),包括X.509认证,SAML断言,Username/Password标识等,来验证与加密SOAP上的Web Services消息。
UDDI
UDDI提供了一个基于XML,可以让全球范围的业务注册并相互发现的开放式注册框架,其最终目的是允许不同公司的业务系统能在全球互联网上相互发现,共享描述信息并协同工作,简化在线事务处理。Apusic应用服务器5.0支持全部UDDI V3 API以及部分UDDI V1与UDDI V2 API。同时,Apusic应用服务器5.0中整合了符合UDDI V3标准的UDDI注册服务。
7 安全框架
对于企业应用而言,应用服务器所能提供的安全方面的功能,是保证企业应用数据完整、逻辑完整和减少被入侵可能的重要特性。针对多层的分布式企业应用的安全要求,Apusic 应用服务器提供了可靠高效的安全构架。同时,为应用程序的加密需求提供了一个安全、强壮、高效的JCE(Java Cryptography Extension)提供者。
同时,Apusic5.0应用服务器以一种可靠的安全框架实现对资源(Web资源,EJB资源,数据源资源)进行有效保护,Apusic应用服务器的安全框架提供了灵活,易于扩展的机制,并允许用户实现自己的安全认证服务。
JAVA授权和鉴定服务(JAAS)
JAVA授权和鉴定服务(JAAS)是基于用户的访问控制,即根据谁在运行代码来进行授权。JAAS认证被实现为可插入的方式,允许应用程序与具体认证技术保持独立,新增或者更新认证方法并不需要更改应用程序本身。
JAAS目前已经整合进了Java 2 SDK 1.4及以上版本,作为标准的用户认证与授权模型。Apusic应用服务器也提供了JAAS的实现。
JavaEE容器的授权合约(JACC)
JavaEE容器的授权合约(JACC), 定义了J2EE容器和外部授权系统之间的合约,定义了外部授权提供者如何与 J2EE 进行交互,以达到使用其它授权系统的目的。例如,J2EE和网络管理系统的结合等。 Apusic应用服务器提供了JACC1.0的完整实现。
Apusic Security Extensions
Apusic Security Extensions即Apusic应用服务器的安全扩展特性,Apusic服务器提供了一套方便、灵活的安装机制能够用于处理Apusic应用服务器本身的安全,同时也提供了与第三方安全验证产品整合的能力,如:LDAP、数据库系统、Sun Access Manager等,共同完成身份验证和授权工作。同时,Apusic应用服务器所提供的安全扩展功能,允许开发自己的安全提供程序,来完成与自己的特有系统进行安全整合。
Apusic SSO
SSO全称Single Sign On,即单点登录,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。Apusic SSO提供了单点登录的解决方案,市场上所提供的单点登录产品有Yale CAS,OpenSSO,Sun Access Manager等,Apusic应用服务器能够有效地与这些产品整合.
身份鉴定
Apusic 应用服务器提供了面向用户、调用过程和客户端调用等方式的身份鉴定,通过使用用户名和密码、证书等等方式,将合法的应用用户和调用程序与非法的入侵者区分开来。
授权
授权是使企业应用的完整性和安全性得以保证的重要因素,Apusic 应用服务器对企业应用的授权策略提供了易于配置和修改的方法与工具,同时提供了可靠安全的授权机制。
加密
对于企业应用中的敏感数据的保存和交换,Apusic 提供了高效可靠的加密机制。Apusic 安全服务提供了数字签名、消息摘要、消息鉴别码、RSA 非对称加密、序列密码加密、分组密钥密码加密、密钥生成、密钥交换等常用的算法。
安全数据存储
对于系统中的关键数据,如消息、用户信息等等,Apusic 提供了安全的内部保护存储机制。
8 管理与监控
Apusic应用服务器管理模型基于JMX框架并遵循JSR160规范。使用JMX框架能通过Java语言封装软硬件资源并将其暴露在分布式环境下。JMX同时还提供了映射框架,以便将已存在的管理协议如SNMP集成到自身的管理体系结构中。
Apusic应用服务器提供管理服务,它作为管理工具与服务器MBean之间的接口,为管理工具提供必要的管理功能。
8.1 管理接口
Apusic应用服务器提供管理服务作为管理接口,分为以下几部分:
系统管理服务
提供对Apusic应用服务器大部分的管理功能,如启动与停止应用服务器、创建数据源及设置优化选项、配置多路复用端口号、设置事务缺省超时时间、调整HTTP线程池最大线程数等。
部署管理服务
提供应用部署管理功能,如部署与卸载应用、启动与停止应用等。
监控服务
提供监控Apusic应用服务器运行时状态的功能,如观察某个数据源的连接创建数、某个Servlet的执行时间、HTTP线程池的当前工作线程数等。
8.2 管理工具
Apusic应用服务器提供以下管理工具:
Apusic管理控制台(Admin Console)
Admin管理控制台是基于Eclipse技术的管理工具,通过它可以方便的对Apusic应用服务器以及Apusic MQ服务器进行配置与监控操作。
Admin管理控制台提供性能监控功能,使用它可以通过曲线视图的方式观察最近自定义时间段内Apusic应用服务器组件及服务的运行状况,如观察最近一段时间内某个Servlet的服务时间;同时用户可以通过表格的方式查看当前监控项的一些统计信息,如Servlet服务的最大时间、最小时间、平均时间等等。
它还能够在一个视图中监控多个项,如在一个视图中监控两台Apusic应用服务器中HTTP线程池的工作线程个数,方便用户对多个监控项进行比较查看。
Web管理控制台(Web Admin)
Apusic Web管理控制台是基于浏览器的管理工具。用户通过Web浏览器就能够对Apusic应用服务器进行配置与管理操作。Web浏览器支持目前比较流行的IE及Firefox,其中IE支持6.0及以上版本,Firefox支持1.5及以上版本。
Web管理控制台的界面风格与Apusic管理控制台类似,实现的配置功能也完全相同,但它不提供监控功能。如果没有安装Apusic管理控制台,可以通过浏览器完成大部分相同的配置操作。
Shell Script
为方便用户进行自动化操作,Apusic 5.0提供了通过Shell命令方式对Apusic应用服务器进行配置与管理操作,这些命令存在于 9 集群服务 Apusic应用服务器对集群服务提供了优异的支持,通过Apusic集群服务,企业应用能够获得高可用性及水平可扩展性。 Apusic集群提供了创新性的设计与实现。例如:Apusic独创的Client Session Cache(客户端会话缓存)技术。我们知道在集群中需要在各结点之间同步一些状态信息,如果采用通用的内存复制技术,将耗费大量的网络带宽,对性能也有很大影响。这是因为每当一个结点的状态发生变化时,都需要通过多播等方式向其他结点传递状态信息,随着集群内部结点的增多,内存复制将会非常频繁,从而造成广播风暴,严重阻塞带宽。在某些集群场景下, Apusic所采取的技术是客户端缓存,直接将状态信息保存在客户端,当服务器失效时将状态转移到可用服务器,这将有效降低广播风暴出现的机率,从而大大提升集群效果。 Apusic作为专业的、成熟的JavaEE应用服务器,它提供了整套的、灵活的、有效的集群方案,是金融、电信、电力等行业的基于JavaEE技术的高性能、高可用、可扩展系统的保障。 Apusic集群主要包括Web集群、JNDI集群、EJB集群、JMS集群。 9.1 Web集群 一般来说,Web集群试图解决两个问题:客户请求的负载均衡和Session的高可用。 Apusic Web集群为这两个问题提供了灵活、全面的解决方案。客户请求的负载均衡是指客户的请求依赖特定算法被合理地分配给多台Web Server来处理。Session的高可用性是指当某台Web Server失效,这台Web Server服务的客户的请求会被透明地转发给其它有效Web Server,而会话状态(Session)依然可用。我们把集群范围内具有高可用性的Session称为集群Session。 Apusic Session集群采取Instant Replication,即某节点的Session操作是即时传播(同步)到集群中的其它节点的;一些应用服务器厂商的集群Session 同步采取非即时的方式,这会降低Session可用性。还有一个比较常见的场景是新节点加入工作中的Apusic集群时,新节点的Session会自动与集群同步。 9.2 JNDI集群 JNDI作为JavaEE的基础技术,JNDI集群往往是其它上层集群技术的必要条件。JNDI集群是Apusic服务器提供的一个服务,一旦启用这个服务,集群的各节点(指Apusic服务器)都拥有一个集群JNDI树,它有别于本地JNDI树,事实上,在JNDI集群节点中,这两棵树是同时存在的。 Apusic JNDI同时具有JNDI负载均衡和失效恢复能力。Apusic JNDI负载均衡和失效恢复能力,可以通过指定JNDI服务的集群节点来实现,也可以通过启动discovery服务,自动发现能够提供JNDI服务的集群节点。 9.3 EJB集群 Apusic EJB集群主要面向两个问题:负载均衡和高可用性。值得注意的是,EJB集群一般都是针对EJB远程调用而言,而非本地调用(包括集群节点内部使用远程接口,因为对于这种情况,Apusic会自动优化成本地调用)。 EJB负载均衡指EJB调用通过特定算法分配到多台应用服务器的行为。这里的EJB调用指对EJB Bean接口的调用。然而,Apusic EJB集群还支持Home接口的负载均衡。目前,Apusic EJB集群支持的负载均衡算法有:RANDOM,ROUND_ROBIN,WEIGHTED,STICKY。 EJB高可用性指在某集群节点失效的时候,对它的EJB Home接口的调用或者Bean接口的调用会透明地转移到其它有效节点。 9.4 JMS集群 JMS是JavaEE相当重要的一部分,它为开发异步、可靠、高性能、灵活的系统提供支持。目前广泛应用于EAI、EDI等领域。Apusic JMS集群主要包括消息路由和集群队列功能。 消息路由 消息路由一般用来解决在发送消息的客户端和消息目的地不能直接连通的情况。依赖智能路由算法,Apusic会在JMS网络中选择一个或多个消息路由器(Router)组成一条到达消息目的地的最优通路,负责转发消息。 消息队列 Apusic MQ支持消息队列集群(Message Queue Clustering)。所谓消息队列集群是指在多个Apusic MQ之间建立路由连接,从而组成一个消息路由网络。在网络中任何一个节点上定义的集群队列都将被全部节点所共享,通过任何一个节点向一个集群队列发送/接收消息都是等效的,对客户来说无法察觉是否正在使用集群,集群中网络拓扑结构发生变化对客户也没有任何影响。 当路由节点与其他节点建立连接时,通过发布自身定义的集群队列,从而使集群队列获得共享,无须系统管理员干预,大大减少了路由网络的维护量。使用集群还可以提高系统的可用性,路由网络中单个节点发生故障停机或部分网络 无法连通时并不影响集群队列的使用,同时在发送消息时根据各节点的负荷情况对负载进行分配,从而使节点处理能力和网络带宽被充分利用。 10 技术汇总 下表列出了Apusic应用服务器5.0支持的技术与规范: Java平台 Java Platform, Standard Edition 5 Java Development Kit 1.5 JavaEE规范 Java Platform, Enterprise Edition 5 Servlet 2.5 JSP 2.1 JSF 1.2 EJB 3.0 JMS 1.1 JTA 1.0 JavaMail 1.3 JCA 1.5 Web Services for JavaEE 1.2 JAX-WS 2.1 JAX-RPC 1.1 SAAJ 1.3 JMX 1.4 JACC 1.0 JDBC 3.0 JNDI 1.2 Security JAAS 1.0 JACC 1.0 Apusic SSO Apusic Security Extensions JSF support Apusic Ajax Support Apusic Layout Controls Apusic UI Components Portal support Apusic Portlet Container Web Services JAX-WS 2.1 JAX-RPC 1.1 Web services for JavaEE 1.2 WS-I Basic Profile 1.2 SAAJ 1.3 UDDI V2 and V3 API support Private UDDI V3 registry SOAP 1.2 JAXB 2.0 WSDL 1.1 and 2.0 OASIS Web Services Security:SOAP Message Security 1.1 OASIS Username Token Profile 1.1 OASIS X.509 Token Profile 1.1 Clustering Failover Support Load Balance Administration and Deployment Apusic Web-based administration center Apusic GUI-based administration console (Eclipse-based) Apusic Shell script administration support Java EE Management (JSR 077) Java EE Application Deployment (JSR 088) 下表列出了Apusic应用服务器5.0支持的操作系统: HP-UNIX 11.0, 11i (PA-RISC) HP NonStop server (MIPS) HP-UNIX 11i V2 (Itanium) HP OpenVMS 7.3-1 (Alpha) HP Tru64 UNIX 5.1 (Alpha) Red Hat Enterprise Linux 2.1 AS, ES, WS (Pentium) Red Hat Enterprise Linux 2.1 AS, ES (Itanium) Red Hat Enterprise Linux 3.0-1 AS, ES, WS (x86) Red Hat Linux Advanced Server 2.1 (Pentium) Red Flag Linux 4.0,4.1 SuSE Linux Enterprise Server(SLES) 8 (Pentium) SuSE Linux Enterprise Server(SLES) 8 (PowerPC, POWER4) SuSE Linux Enterprise Server(SLES) 8 (IBM zSeries/S390 G5 or later models) Sun Solaris 8 (SPARC) Sun Solaris 9 (SPARC, x86) Sun Solaris 10(SPARC,x86) IBM AIX 5L v5.1, v5.2 (PowerPC POWER3, PowerPC POWER4) MS Windows 2000 Professional, MS Windows 2000 Server, MS Windows 2000 Advanced Server, MS Windows 2000 Datacenter Server (Pentium) MS Windows Server 2003 Standard, Enterprise, Datacenter Edition(Pentium) MS Windows Server 2003 Enterprise, Datacenter Edition (Itanium) MS Windows XP (Pentium) 注:经金蝶中间件公司进行测试,Apusic应用服务器5.0可良好的运行于以上所列出的平台。Apusic应用服务器支持但不限于以上列出的平台。理论上,只要支持标准的JavaSE 5的操作系统,Apusic应用服务器均能够支持。 下表列出了Apusic应用服务器5.0支持的数据库: Oracle 8i, 9i, 10g DB2 7.x, 8.x Microsoft SQL Server 7、2000、2005 Sybase 11.x, 12.x MySQL 4.x, 5.x PostgreSQL 7.x, 8.x 注:经金蝶中间件公司进行测试,Apusic应用服务器5.0可良好的支持以上所列出的数据库。Apusic应用服务器支持但不限于以上列出的数据库。理论上,只要支持标准JDBC的数据库,Apusic应用服务器均能够支持。 11 Apusic应用服务器 5.0 与Apusic Platform的关系 由金蝶中间件公司研发的Apusic JavaEE应用服务器,Apusic消息中间件及 Apusic Studio集成开发环境,组成了企业级中间件平台 — Apusic Platform。Apusic Platform金蝶在J2EE多年积累的集大成者,有效传递了金蝶十几年企业级应用开发过程中,和广大合作伙伴、用户一起探索、积累的开发经验和体会,不仅向用户提供企业级基础中间件,更重要的是通过Apusic Platform分享应用开发经验,把开发思想、开发模式、开发工具、应用基础组件等构成的全方位企业级中间件平台提供给合作伙伴和客户。 无疑,Apusic应用服务器 5.0是Apusic Platform的核心产品。 11.1 Apusic Studio Apusic Studio开发平台是建立 在Eclipse基础之上的“轻量级”开发平台,它通过良好的工具支持以及与Apusic应用服务器的紧密集成,大幅降低J2EE应用开发的学习曲线,提升应用开发效率;通过优秀的框架支持及基础组件,成功地解决了应用软件在开发、实施和维护过程中的质量、周期、成本、风险等方面的问题。 对应用服务器的管理: 在Apusic Studio中,可以连接上Apusic应用服务器,完成对服务器的管理功能,包括配置、部署、监控等。事实上,这些工作是开发过程不可缺少的组成部分,将这些工作与开发过程有机的融合在一起, 是Apusic Studio与其它开发工具的显著区别之一。 J2EE工程的管理: 开发一个J2EE应用,对整个工程的清晰的管理,对于高效率的开发来说是必须的,Apusic Studio采用贴近用户思维的方式管理工程,既有对整个工程中实际文件结构的表述,也有对J2EE模块层次、组件层次的表述,使你对整个工程的结构从不同的角度了然于胸,开发起来当然会得心应手。 部署描述文件的管理: J2EE中部署描述文件提供了一种对程序配置的途径,可以不修改代码来获得程序的某种可配置性,而J2EE的部署描述文件的格式往往是很复杂的,用户很难记得住,记得准,Apusic Studio可以免去用户在这方面的麻烦和担忧,GUI的配置界面,使用户方便地进行配置,无需考虑Xml配置文件的格式,Apusic Studio将帮您照料这一切,在后台自动地生成正确格式的配置文件。 运行、调试的支持: 开发任何一个应用,用户都喜欢能够随时运行自己写的代码,随时看到代码运行产生的效果,代码成功的运行,将增强自己的信心,正面强化自己的情绪,Apusic Studio能让用户随时运行自己的J2EE应用程序。 对于复杂程序中的错误,单凭现象,往往很难查找问题的所在,所以,调试功能是必不可少的,Apusic Studio不仅支持普通的Java调试,而且支持JSP、EJB的断点调试,对于JSP调试,不仅支持<% ... %>内部的Java代码的调试,而且可以在tag handler和EL表达式等其他地方设置断点。 Apusic Studio强大的运行调试能力为你迅速地开发运行正确的应用提供了有力的保障。 Web开发环境: Apusic Studio提供了JSP、Servlet、JSF的开发环境。Apusic Studio拥有业界最优秀的可视化设计工具,任何复杂的界面,只需要通过简单的拖拽操作即可完成。可视化设计并不是Web开发环境的全部,Apusic Studio提供了功能强大的代码编译器,包括语法加亮、代码辅助、断点调试、Web页面与Java Bean之间的快速导航等一系列全方位的细节考虑,再加上对Apusic OperaMasks Rich Components的支持,Apusic Studio足以称得上是Web开发的利器! EJB开发环境: Apusic Studio的EJB开发环境,大幅度降低了EJB的开发复杂度,使EJB的开发如同普通的POJO一样简单。Apusic Studio提供的EJB管理功能可以方便地添加、删除、修改EJB的业务方法,设置EJB业务方法的事务属性,用户无需考虑方法的组件接口和bean实现类的同步问题,以及部署描述文件的更改问题,只需做他应该关注的问题即可。 开发J2EE应用变得如此简单: 如果手工从头开始写一个复杂的EAR,里面有Web模块,EJB模块,多个Servlet,Listener,Filter,EJB等等,想必大多数人会觉得是一件很复杂很繁琐的事,即便整个过程你很熟悉,但其复杂度也足以让人望而生畏,采用Apusic Studio,将使这一过程变得有如行云流水一般,除了每一阶段有 向导帮助你快速实现以外,过程中的一些细节也自有Studio帮你照料得无微不至,当你需要完成什么功能时,你会发现它就在你手边,使你感觉开发这样一个EAR不再是一种负担,而完全是一种享受。 极限编程的最佳实践: Apusic Studio从工具上对极限编程予以支持,包括:对测试驱动的支持,在Apusic Studio中,可以非常轻松的构建对各种J2EE组件的测试案例;对重构的支持,重构J2EE组件将同时重构类文件及配置文件等等。 简而言之,Apusic Studio是能够与Apusic应用服务器紧密集成的JavaEE开发工具。 11.2 Apusic消息中间件 MQ Apusic消息中间件MQ是一种出色的消息中间件,它能够很好地解决业务系统之间通讯基础架构上的难题,而且Apusic MQ还提供了消息压缩、消息拆分、智能路由、集群等功能,保证业务系统之间通讯的高可用性。通过Apusic MQ,您可以专注于业务系统之间信息的交换或者业务系统之间的集成,而不必理会消息通讯上的种种难题。 Apusic MQ同时还提供了许多增强特性,在安全方面,我们提供了队列、主题权限控制;在持久化消息存储方面,我们提供了多种消息存储机制;在消息传输可用性和 易用性方面,我们提供了远程队列直接消息存储、分层次主题命名及多主题订阅;在海量数据传输方面,我们提供了大尺寸对象消息传输、大文件传输;在业务操作一致性方面,我们提供了分布式事务支持;在对整个Apusic MQ网络的管理与监控方面,我们提供了基于Eclipse技术的MQ管理与监控工具等等。 在Apusic应用服务器 5.0中的JMS实现是基于Apusic MQ产品实现的,具备其它应用服务器不可具备的稳定性与健壮性。 12总结 金蝶Apusic J2EE应用服务器历经5个版本的沉淀积累,在稳定性、可靠性、执行性能和安全性等方面都已经取得了相当可观的成果。此次,Apusic应用服务器5.0在全球范围内率先取得JavaEE 5.0兼容性认证,更凸显了金蝶中间件公司的技术实力。除了实现JavaEE 5规范所要求的全部特性之外,Apusic应用服务器 5.0 还在Web应用开发方面进行了大胆的创新与突破,形成J2EE Web开发技术新变革。此外,Apusic 应用服务器 5.0对中国特色的电子政务系统予以特别支持,再加上本土得天独厚的技术支持和交流上的优势,专家评价Apusic应用服务器 5.0 是“最贴近中国应用水平和需求现状”的应用服务器产品。 金蝶Apusic应用服务器 5.0 是历经考验的中间件产品,能够为各种复杂应用系统提供标准、安全、集成、高效的企业级基础服务。 因篇幅问题不能全部显示,请点此查看更多更全内容