Mark Newton 在瑞士JUG上展示了JBoss应用服务器5.0的 新特性
。
JBoss AS 的历史
平均发布周期为119天,共发布JBoss 3.2.x版本9个,J2EE 1.3认证,JDK 1.3。
平均发布周期为126天,共发布JBoss 4.0.x版本6个,J2EE 1.4认证,JDK 1.4。
平均发布周期为55天,共发布JBoss 4.2.x版本3个,JEE 5.0兼容实现,未认证,实现95%的功能并需要JDK 5.0。
JBoss AS 5.0.x的新独立实现
- JBoss Messaging(替代旧的JBoss MQ)
- JBoss 安全性
- JBoss 联邦SSO
新内核是JBoss Microcontainer 2.0和一个配置服务,该服务负责管理现在绑定服务的POJO。目标是在2008年第一季度发布最终版本并在2007年进行CR。
JBoss Messaging 1.4
新的JMS 1.1兼容消息实现支持分布式队列和主题,以及透明故障转移和负载分配——内部使用JGroups作为传输。
集群
JBoss Cache(2.1)的新主要修订版,具有更简单的API和更注重JBoss AS之外的使用。
JBoss AOP 2.0
与微容器集成:如果您使用AOP向POJO添加行为,并部署它,则获得依赖管理——您不能在不使用方面的情况下调用POJO,它不会在方面可用之前部署。反之亦然,如果依赖的POJO尚未部署,则方面不会部署。方面可以绑定到POJO生命周期,例如,当POJO进入“已部署”状态时将代理绑定到JNDI的方面。它还有一些新的纯AOP功能:Before、After、Throwing、Finally 流
用于拦截。
内核做什么?
微内核需要支持服务的动态加载和卸载。为此我们需要
- 一种部署新服务的方法
- 一个总线,以便客户端不直接与服务通信,客户端与服务解耦
在 JBoss 3.x 和 4.x 中是如何实现的?我们使用 MBeanServer 来提供总线以及将服务加载到内核的部署器,并使用简单的依赖注入机制。MBeans 用于实现服务,并通过 XML 描述符配置,在部署时将属性值注入到 MBeans 中。XMBean 是特殊的 MBeans,允许您向 MBean 添加方法拦截。调用通过总线传递,并通过通用invoke(method, arguments, argumentTypes)操作进行拦截。
出于性能考虑,总线实际上并未得到充分利用:服务引用会直接在注册表中查找。因此,拦截器没有被使用。
JBoss JMX 微内核的不足之处是什么
- JMX 有限制,生命周期和类加载存在问题
- 您无法在 Java ME 上运行 JMX
- 您实际上需要知道如何实现 MBeans
- 如果您通过引用直接访问服务,则不会应用拦截器
JBoss AS 5.x 的设计目标
服务应该是 POJO,行为应通过 AOP 添加 - 有效复制 JMX 微内核的所有功能。大大改进了依赖注入和类加载。分层且易于扩展的设计(没有对 JBoss 类的引用),应该可以在没有 JBoss AS 的情况下使用。
该内核的新名称是 Microcontainer。
微容器的核心是 Container、Kernel、Dependency。行为通过 JBoss AOP 添加。
内核:提供总线、注册表和事件管理器。
容器:POJO 的包装器,AOP 联合点和实际服务实现 POJO 的反射。
依赖:基本上是一个管理服务依赖关系的抽象状态机。
核心之上的可选包:OSGI 集成、Guice 集成。
创建服务
使用<bean>和<property>声明在jboss-beans.xml(替代旧的 jboss-service.xml)。Bean 有一个名称和一个类,属性支持通过(其他)Bean 名称的引用进行注入。
使用<aop:aspect>命名空间和元素以及切入点表达式添加行为。您还可以将方面/切入点提取到单独的文件中。
配置服务
POJO 的管理系统,而不是基于编辑 XML 文件的旧 JMX 基于的管理,人们会通过将这些文件保存在 CVS 中来管理配置。Web 控制台只支持更改内存中的运行时值,不会将这些值写回文件中。
我们想要
- 集中维护,例如,所有、最小、默认等配置文件
- 跨服务器重启持久化对配置文件所做的更改
- 跨集群传播配置文件更改
- 配置文件版本控制
实现类似于 JDK 6 Open MBeans 规范:部署有一个受管理对象的集合,您可以通过在服务中添加注解来定义它们,例如。@ManagedOperation(description="您可以更改的设置")
摘要
- JBoss AS 5.0 基于微容器和 POJO 以及 AOP 具有全新的架构
- 通过添加配置文件服务改善了管理
- 集群和安全得到了很大增强
- 它将完全符合 Java EE 5.0