`

Jboss5学习Deployment callbacks

    博客分类:
  • JAVA
阅读更多

这个地方思维模式比较新颖,这里翻译一下:

      有时候一个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次发布的时候才会执行。

 

 

分享到:
评论

相关推荐

    JBOSS7学习笔记

    5. **EAP与AS区别**:JBoss AS是社区版,而JBoss Enterprise Application Platform (EAP)是企业级的付费版本,包含更多的企业级特性、长期支持和专业的技术支持。 6. **微容器(Microcontainer)**:JBoss7的...

    JBoss5部署原理

    ### JBoss5部署原理详解 #### 一、JBoss5微容器架构与启动流程 JBoss5采用了全新的微容器架构,这种设计使得整个系统更为灵活且易于扩展。启动时,JBoss5首先会加载一个名为`ProfileServiceBootstrap`的类,该类...

    Jboss5源代码-官方-第二部分

    通过深入研究这部分JBoss5的源代码,开发者不仅可以理解JBoss5的工作机制,还能学习到Java EE应用服务器的设计原则,这对于提升Java企业级开发技能大有裨益。同时,这也为定制和优化JBoss5提供了可能,以满足特定...

    JBoss5.pdf

    JBoss EAP 5 Hibernate EntityManager Reference Guide是一份指南文档,用于指导开发者如何在JBoss EAP 5的环境中使用Hibernate EntityManager。它详细描述了JBoss EAP 5中Hibernate EntityManager的配置和使用方法...

    Jboss5源代码-官方-第一部分

    `jboss.deployment`和`jboss.as.deployment scanner`包提供了部署单元的解析和加载,以及热部署功能。 8. **网络通信**:JBoss使用NIO(非阻塞I/O)进行网络通信,提供高效的服务。`jboss.nio`包包含了NIO相关的...

    JBoss学习全集多本书整合

    【JBoss学习全集多本书整合】集合了丰富的JBoss相关知识,涵盖了JBoss服务器的配置、管理和优化等多个方面,是深入理解与掌握JBoss的理想资料。JBoss,作为一个开源的应用服务器,基于Java EE(现在被称为Jakarta EE...

    jboss 5 原理 2 classloader

    JBoss 5是一款知名的Java应用服务器,其在类加载(Class Loading)方面有着独特的处理方式。随着OSGi(Open Services Gateway Initiative)风格的类加载机制逐渐流行,以及新的Java模块和类加载规范的出现,JBoss对...

    jboss5服务器2

    【JBoss5服务器详解】 JBoss5,全称为JBoss Application Server 5,是Red Hat公司推出的基于Java EE(Java Enterprise Edition)规范的开源中间件平台。作为一个强大的Java Web容器,它提供了对多种企业级服务的...

    JBOSS_Esb学习资料

    1. **基础入门**:如《JBoss_ESB学习笔记5——第四个ESB应用Hello World File Action.doc》所示,初学者通常从“Hello World”程序开始,了解如何创建并运行一个简单的ESB服务。这一阶段会介绍ESB的基本概念,如服务...

    Apache2.2+JBOSS 5 集群配置

    Apache2.2+JBOSS 5 集群配置主要涉及在Linux环境下构建高可用性和负载均衡的服务器集群,以提升应用服务的稳定性和处理能力。以下是详细的知识点: 1. **JBoss集群架构**: JBoss 集群可以采用两种架构:客户端...

    JBossESB学习笔记(1-16全)

    JBossESB学习笔记 收集了网上1-16系列教程,笔记详细介绍了JBossESB各个组件的特性及配置文件的说明

    jboss as 5 developments

    jboss 5的详细说明。对在jboss5上进行开发来说是很好的参考资料。

    JBOSSESB学习小结

    NULL 博文链接:https://siye1982.iteye.com/blog/592400

    JBoss AS 5 Development

    ### JBoss AS 5 Development: 关键知识点解析 #### 一、JBoss AS 5 概述 ...通过深入学习本书,读者不仅可以掌握JBoss AS 5的基本使用方法,还能了解到许多高级特性和最佳实践,有助于提升自己的技术水平。

    jboss7学习配置.ppt

    在windows 下对于jboss7配置的学习ppt,包括如何建立一个Datasource

    JBoss ESB 学习笔记

    ### JBoss ESB 学习笔记知识点概览 #### 一、搭建ESB开发环境 - **工具准备**: - Eclipse-JEE 3.5:集成开发环境,支持Java EE标准,适合企业级应用程序开发。 - jbossesb-server-4.7:JBoss ESB的具体版本,为...

    关于JBoss5加载项目的完整过程以及相关错误解决

    【JBoss5加载项目完整过程】 JBoss5.1.0.GA是一个成熟的Java应用服务器,用于部署和管理Web应用程序。在这个过程中,最常见的部署格式是WAR(Web Application Archive),它是一个包含所有必要资源和配置的压缩文件...

    jdk6 jboss5 webservice bug

    标题 "jdk6 jboss5 webservice bug" 暗示了这是一个关于Java开发环境中,具体是JDK 6和JBoss Application Server 5版本中Web服务(Webservice)出现的问题。这个问题可能是由于某些兼容性、配置错误或者已知的bug...

Global site tag (gtag.js) - Google Analytics