Jboss有一个扩展的annotation——@Service。被加了这个annotation的bean就变成server里面的一个单例bean。所有请求该bean资源的client获得到的是同一个实例。
@Service的bean出了支持@Local 和@Remote外,还支持使用@Management来管理它的生命周期。使用方法如下:
一. 创建一个接口
package org.jboss.tutorial.service.bean;
import org.jboss.annotation.ejb.Management;
public interface ServiceOneManagement { void create() throws Exception; void start() throws Exception; void stop(); void destroy();
//other method }
|
二. 创建一个@Service的bean
package org.jboss.tutorial.service.bean;
import org.test.OtherServiceManagement;
import javax.ejb.Remote; import org.jboss.annotation.ejb.Service; import org.jboss.annotation.ejb.Depends;
@Service @Management(ServiceOneManagement.class) public class ServiceOne implements ServiceOneManagement { // Lifecycle methods public void create() throws Exception { System.out.println("ServiceOne - Creating"); }
public void start() throws Exception { System.out.println("ServiceOne - Starting"); }
public void stop() { System.out.println("ServiceOne - Stopping"); }
public void destroy() { System.out.println("ServiceOne - Destroying"); } }
|
加了@Management以后,该bean自动成为一个MBean,在JMXConsole里面就可以找到对应的管理方法。
容器自动会load这个类,而且会自动调用create()和start()。在关闭的时候会自动调用stop()和destroy()。