这个地方思维模式比较新颖,这里翻译一下:
有时候一个bean了解其他已经发布的bean的信息是非常重要的。比如一个管理类需要了解他管理的bean对象的列表。比起将注册代码放到每一个发布的bean中,管理类在发布类的时候自动回调将是一种更好的解决方案。jboss的微内核可以通过@Install/@Uninstall注释或者<incallback>/<uncallback> 标签定义.
注意:incallback是installCallback的缩写,uncallback是uninstallCallback的缩写
public class Example {
@Install
public void addEditor(Editor editor) {
...
}
@Uninstall
public void removeEditor(Editor editor) {
...
}
}
<bean name="editorHolder" class="com.acme.Example">
<incallback method="addEditor"/>
<uncallback method="removeEditor"/>
</bean>
上面的二段代码表示一个是一个意思,在每一个Editor的对象发布的时候,都会调用容器eidtorHolder的addEditor方法,相同道理,在每个Editor销毁的时候都会调用removeEditor方法。缺省情况下通过回调定义的方法中的参数的bean的类型决定查找的类,如果管理类中有多个同名的方法,但是参数不同,如果想发布某一特定的方法,可以在incallback标签中定义signature属性指定参数的名称
public class Example {
public void addEditor(Editor editor) {
...
}
@Install
public void addEditor(DifferentEditor editor) {
...
}
}
<bean name="editorHolder" class="com.acme.Example">
<incallback method="addEditor" signature="org.jboss.example.DifferentEditor"/>
</bean>
上面的二段代码表示的是相同的意思,只是给DifferentEditor实例化的时候进行回调。
每个bean可以定义多个回调函数,他会按照定义出现的顺序执行
public class Example {
@Install
public void addEditor(Editor editor) {
...
}
@Install
public void addViewer(Viewer viewer) {
...
}
@Uninstall
public void removeEditor(Editor editor) {
...
}
@Uninstall
public void removeViewer(Viewer viewer) {
...
}
}
<bean name="editorHolder" class="com.acme.Example">
<incallback method="addEditor"/>
<incallback method="addViewer"/>
<uncallback method="removeEditor"/>
<uncallback method="removeViewer"/>
</bean>
缺省状态下是匹配到发布的被管理的bean到INSTALLED 状态的时候就会执行回调函数,也可以指定bean调用回调函数的的状态
public class Example {
@Install(dependentState="Configured")
public void addEditor(Editor editor) {
...
}
}
<bean name="editorHolder" class="com.acme.Example">
<incallback method="addEditor" state="Configured"/>
</bean>
这样bean会在发布到Configured状态的时候执行回调函数,
<!--我个人添加的注释>
其中包括的状态如下
NOT_INSTALLED - deployment descriptor parsed
DESCRIBED - aop dependencies added to the bean
INSTANTIATED - an instance has been created
CONFIGURED - properties have been injected
CREATE - the create method, if defined, was called
START - the start method, if defined, was called
INSTALLED - custom install actions executed, bean is ready to access
<!--我个人添加的注释结束>
我们也可以给发布的bean配置whenRequired 属性
public class Example {
@Install(whenRequired="Installed")
public void addEditor(Editor editor) {
...
}
}
<bean name="editorHolder" class="com.acme.Example">
<incallback method="addEditor" whenRequired="Installed"/>
</bean>
这样我们的管理类在到Installed状态的时候才会调用,默认状态时CONFIGURED
最后我们可以定义我们的bean管理类可以依赖的发布的bean的数量,通过cardinality 属性
public class Example {
@Install(cardinality="2..n")
public void addEditor(Editor editor) {
...
}
}
<bean name="editorHolder" class="com.acme.Example">
<incallback method="addEditor" cardinality="2..n"/>
</bean>
这样定义表示我们的editorHolder只有在第二次到第n次发布的时候才会执行。
分享到:
相关推荐
5. **EAP与AS区别**:JBoss AS是社区版,而JBoss Enterprise Application Platform (EAP)是企业级的付费版本,包含更多的企业级特性、长期支持和专业的技术支持。 6. **微容器(Microcontainer)**:JBoss7的...
### JBoss5部署原理详解 #### 一、JBoss5微容器架构与启动流程 JBoss5采用了全新的微容器架构,这种设计使得整个系统更为灵活且易于扩展。启动时,JBoss5首先会加载一个名为`ProfileServiceBootstrap`的类,该类...
通过深入研究这部分JBoss5的源代码,开发者不仅可以理解JBoss5的工作机制,还能学习到Java EE应用服务器的设计原则,这对于提升Java企业级开发技能大有裨益。同时,这也为定制和优化JBoss5提供了可能,以满足特定...
JBoss EAP 5 Hibernate EntityManager Reference Guide是一份指南文档,用于指导开发者如何在JBoss EAP 5的环境中使用Hibernate EntityManager。它详细描述了JBoss EAP 5中Hibernate EntityManager的配置和使用方法...
`jboss.deployment`和`jboss.as.deployment scanner`包提供了部署单元的解析和加载,以及热部署功能。 8. **网络通信**:JBoss使用NIO(非阻塞I/O)进行网络通信,提供高效的服务。`jboss.nio`包包含了NIO相关的...
【JBoss学习全集多本书整合】集合了丰富的JBoss相关知识,涵盖了JBoss服务器的配置、管理和优化等多个方面,是深入理解与掌握JBoss的理想资料。JBoss,作为一个开源的应用服务器,基于Java EE(现在被称为Jakarta EE...
JBoss 5是一款知名的Java应用服务器,其在类加载(Class Loading)方面有着独特的处理方式。随着OSGi(Open Services Gateway Initiative)风格的类加载机制逐渐流行,以及新的Java模块和类加载规范的出现,JBoss对...
【JBoss5服务器详解】 JBoss5,全称为JBoss Application Server 5,是Red Hat公司推出的基于Java EE(Java Enterprise Edition)规范的开源中间件平台。作为一个强大的Java Web容器,它提供了对多种企业级服务的...
1. **基础入门**:如《JBoss_ESB学习笔记5——第四个ESB应用Hello World File Action.doc》所示,初学者通常从“Hello World”程序开始,了解如何创建并运行一个简单的ESB服务。这一阶段会介绍ESB的基本概念,如服务...
Apache2.2+JBOSS 5 集群配置主要涉及在Linux环境下构建高可用性和负载均衡的服务器集群,以提升应用服务的稳定性和处理能力。以下是详细的知识点: 1. **JBoss集群架构**: JBoss 集群可以采用两种架构:客户端...
JBossESB学习笔记 收集了网上1-16系列教程,笔记详细介绍了JBossESB各个组件的特性及配置文件的说明
jboss 5的详细说明。对在jboss5上进行开发来说是很好的参考资料。
NULL 博文链接:https://siye1982.iteye.com/blog/592400
### JBoss AS 5 Development: 关键知识点解析 #### 一、JBoss AS 5 概述 ...通过深入学习本书,读者不仅可以掌握JBoss AS 5的基本使用方法,还能了解到许多高级特性和最佳实践,有助于提升自己的技术水平。
在windows 下对于jboss7配置的学习ppt,包括如何建立一个Datasource
### JBoss ESB 学习笔记知识点概览 #### 一、搭建ESB开发环境 - **工具准备**: - Eclipse-JEE 3.5:集成开发环境,支持Java EE标准,适合企业级应用程序开发。 - jbossesb-server-4.7:JBoss ESB的具体版本,为...
【JBoss5加载项目完整过程】 JBoss5.1.0.GA是一个成熟的Java应用服务器,用于部署和管理Web应用程序。在这个过程中,最常见的部署格式是WAR(Web Application Archive),它是一个包含所有必要资源和配置的压缩文件...
标题 "jdk6 jboss5 webservice bug" 暗示了这是一个关于Java开发环境中,具体是JDK 6和JBoss Application Server 5版本中Web服务(Webservice)出现的问题。这个问题可能是由于某些兼容性、配置错误或者已知的bug...