JBOSS EJB 3プロジェクトの起動によるタスクの実行


jbossのプロジェクトでは、jbossが起動すると、クラスの実行が牽引され、webプロジェクトであればサーブレットContextListenerで実現できます.非webプロジェクトであればjmx実装を採用します.
@Serviceと@Managementで実現
import org.jboss.ejb3.annotation.Management;
/**
 * 
 * <p>    ,            。<p>
 *
 *      2013-8-6<br>
 * @author  $Author$<br>
 * @version $Revision$ $Date$
 * @since   3.0.0
 */
@Management
public interface BeanLauncherManagement
{
    public void start() throws Exception;
}

 
 
/**
 * 
 * <p>EJB3  @Service        ,      <p>
 *
 *      2013-8-6<br>
 * @author  $Author$<br>
 * @version $Revision$ $Date$
 * @since   3.0.0
 */
@Service
public class BeanLauncher implements BeanLauncherManagement
{

    public void start() throws Exception
    {
    	System.out.println("jboss    ");
    }
}


 
 
 
jmxによる実現は以下の通りである.
import org.jboss.system.ServiceMBean;
public interface HelloWorldServiceMBean extends ServiceMBean {
    String getMessage();
    void setMessage(String message);
}

 
 
/**
 * <p>EJB3      <p>
 *
 *      2013-8-6<br>
 * @author  $Author$<br>
 * @version $Revision$ $Date$
 * @since   3.0.0
 */
import org.jboss.system.ServiceMBeanSupport;

public class HelloWorldService extends ServiceMBeanSupport implements HelloWorldServiceMBean {
    private String message;

    public String getMessage() {
        System.out.println("getMessage()=" + message);
        return message;
    }

    public void setMessage(String message) {
        System.out.println("setMessage(" + message + ")");
        this.message = message;
    }
}

 
META-INF/jboss-service.xml
 
<?xml version="1.0" encoding="UTF-8"?>
<server>
    <mbean code="com.easy.jmx.HelloWorldService" name="www.chengang.com.cn:service=HelloWorld">
        <attribute name="Message">Hello World</attribute>
    </mbean>
</server>