序言
JBOSS 是一个安装简单包含EJB容器Java消息服务等等功能的应用服务器但是他的面向方面设计(AOP)是它真正突出的部分JBOSS的优点很多它不但是一个开放源代码平台独立全面的JEE支持应用服务器而且安装也非常简单
JBOSS包括web服务器(servlet/JSP容器HTML服务器)EJB容器完整的纯Java的数据库引擎(Java消息服务)JMSJavaMail和Java事务处理API/Java事务处理服务(JTA/JTS)支持早期的JBOSS使用了Apache Tomcat Web服务器但在JBOSS中已经吧Apache Tomcat内嵌到JBOSS中了
JBOSS在今年的JavaOne大会上发布JBOSS组织把这个版本的JBOSS作为一个开发版以便进行开发代码的测试正式的产品级的版本预计要到今年的第四季度发布新增的功能包括集成Java数据对象(JDO)对于JMS多点传送机制支持的修补对JEE的完全实现和分布式事务机制
安装JBOSS非常简单先解压缩JBOSS打包文件在配置一些环境变量就可以了 假设我现在有一个WAR文件并且这个文件已经使用JDBC进行了测试当JBOSS已经正常运行我把这个WAR文件放到JBOSS的部署目录下这时JBOSS的热部署功能就可以自动部署这个WAR从下载JBOSS到安装并运行我的应用程序大概花不了分钟
JBOSS的应用服务器控制和配置-JMX机制运行一次可以部署所有的组件和服务资源属性和可配置参数可以通过MBeans(可控制beans)映射和更改这些控制可以在JBOSS的控制台进行设置一旦我们的servletbased的应用程序被部署JBOSS就自动安装一个部署MBeans这个MBeans会被添加到JMX控制台的导航菜单中通过这个MBean就可以部署或卸载WAR应用程序或查看应用程序相关的属性
不可否认JBOSS的控制台在图形话方面比起IBMs WebSphere 或BEAs WebLogic要显得简单的多但效果是一样的完全可以满足工作的需要另外由于JBOSS是开发源代码的所以你可以根据需要扩展控制台加上你想要的东西
aspects 介绍
JBOSS的的新特性体现在面向方面设计(AOP)方面通过适当的扩展AOP可以使你描述类似共享自父类的类在JBOSS中AOP特性有许多好处最重要的一个特性是它可以向你的类中注入一个行为而无需更改类的源代码这一特性允许你维护对象的持久行使对象的方法有目的的处理(transaction aware)并使一个类能够多集成
JBOSS的AOP架构负责处理AOP使用了一组命名概念比如interceptor pointcut 和introduction
一个interceptors编码拦截器(intercepts)它把一个对象放到一个被拦截的类中JBOSS允许你定义拦截器这个拦截器被hook到构造方法和存取字段上一个由pointcut定义的点被插入到拦截器类内部他是一段定义在一个specificxml文件中的XML代码这也是一个像上面讲到的热部署的过程
一个pointcut定义了已经拦截的(intercepted )和正在拦截的类的规范它是一个可选项可以通过XML文件中的过滤机制来选择它所以只有规范的字段和方法会被拦截拦截类扩展了一个invoke()方法只
要拦截类的方法或字段被访问这个方法就会被JBOSS AOP架构调用结果是拦截者看不到外部系统和拦截类之间被插入了什么
JBOSS在引导时通过拦截类的类文件实现了这一切当一个拦截类被引导ClassLoader通过类文件向类中加入字节代码在运行之后字节代码把控制传输到一个控制类中并且扮演一个交换器的角色把拦截发送到适当的处理类
JBOSS AOP架构超出了简单的向一个类中注入行为的操作它提出了引言的概念这个引言是一个特定的拦截它在引导时把一个新的接口存储到类中另外引言提供了类的接口的实现
如果你觉得多重继承还不够JBOSS还使用AOP来把类和类的方法与元数据关联起来实际上JBOSS参照了JSR中的元数据机制这使得今后JBOSS可以透明的向一个已有的Java对象添加所有的持久行机制和传输控制
如果对AOP的方面的知识很感兴趣但是你又不想通过一个应用服务器来体验他的特性你可以从上下载一个分离的AOP架构单独使用
复杂但却很有用
我必须承认我对JBOSS AOP的担心它非常像FastObjects 的oop 我也非常喜欢FastObjectsJBOSS的AOP很先进但也很麻烦它在类装载时处理所以没有外在的附加的编辑步骤对于向类中插入方法不需要改变源代码
当我重新考量JBOSS的简单安装和优秀的热部署功能后我打消了上述对JBOSS的担心现在只剩下对JBOSS的另一个看法那就是他的文档JBOSS站点上发布的免费文档好像是原来的旧文档