`

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

 

 

分享到:
评论

相关推荐

    JBoss学习全集多本书整合

    是JBoss学习的最佳材料,包含JBoss的配置以及其文件修改方法和文件介绍。

    JBossESB学习笔记(1-16全)

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

    jboss as 5 developments

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

    JBoss ESB 学习笔记

    自己辛苦整理的网上的JBoss ESB学习笔记 ,非常详细,代码操作都有截图; 希望大家多支持! 学习笔记PDF的目录如下: 1——搭建ESB开发环境 2 2——第一个ESB代码Hello World 12 3——第二个ESB代码Hello World ...

    JBOSSESB学习小结

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

    JBOSS7学习笔记

    NULL 博文链接:https://yang-min.iteye.com/blog/1954854

    JBoss5.pdf

    JBoss_Enterprise_Application_Platform-5-Hibernate_Entity_Manager_Reference_Guide-en-US

    Apache2.2+JBOSS 5 集群配置

    Apache2.2+JBOSS 5 在LIUXN下的集群配置

    jboss7学习配置.ppt

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

    jboss学习资料/JBOSS使用指南

    JBOSS使用指南JBOSS使用指南JBOSS使用指南JBOSS使用指南JBOSS使用指南JBOSS使用指南JBOSS使用指南JBOSS使用指南

    JBoss5部署原理

    JBoss5部署原理 基本可以了解 具体的可以参考官方文档

    jboss 5 原理 2 classloader

    JBoss has always had a unique way of dealing with classloading, and the new classloading layer that comes with Microcontainer is no exception (keep in mind that you can use Microcontainer without ...

    jboss5服务器1

    jboss服务器,javaee容器,分布式

    jboss学习记录

    个人的一些学习记录,大家可以做个参考。 安装 启动 部署 端口修改 访问jboss 连接池配置 连接池验证 JVM内存 连接池参数 线程参数

    jboss5 as development源码

    jboss5 as developemnt是一本很好的书,基本上包括了从entitybean,sessionbean,messagedrivenbean,managedbean的开发。 从ejb工程,到jsf2.0工程,很好的示例,手把手交的。底层连接数据库,开发工具是eclipse ...

    jboss5服务器2

    JBOSS,javaee,分布式,java web容器

    jboss rules 中文学习资料.chm

    jboss rules 中文学习资料.chm

    JBOSS_Esb学习资料

    JBOSS_Esb学习资料包含各种基础学习资料与协议交互资料

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

    jboss5官方源代码,由于大小,分几部分传

    Jboss AS 5 Development

    The latest JBoss AS 5 Development Guide book, very practical to any developer who is or is going to use JBoss AS

Global site tag (gtag.js) - Google Analytics