在jobss启动后调用方法

时间:2012-09-26 06:44:15

标签: jboss struts2 servlet-filters dispatcher

您好我正在使用struts 2并希望在服务器启动后立即调用方法。 在服务器启动时,我们可以使用FILTER DISPATCHER。 我正在使用jax ws。我正在同一个jboss服务器上部署我的jax客户端和端点项目。 怎么解决这个问题 Plz帮助

3 个答案:

答案 0 :(得分:2)

您可以实现ServletContextListener来响应启动的servlet。

像这样创建你的实现:

public class SimpleInitializer implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //Place your startup logic here.
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    }
}

然后,将其包含在web.xml中,如下所示:

<listener>
    <display-name>SIMPLE Startup Listener</display-name>
    <listener-class>com.you.init.SimpleInitializer</listener-class>
</listener>

答案 1 :(得分:1)

MBeanServerConnection server = (MBeanServerConnection)new InitialContext().lookup("jmx/rmi/RMIAdaptor");
ObjectName on = new ObjectName("jboss.system:type=Server");
Object var = server.getAttribute(on, "Started");
System.out.println(**var**);

您可以做的另一件事是运行一个线程并检查Filter Dispatcher中var的值。如果是,则调用Web服务并将数据设置为Servlet上下文,否则将线程休眠一段特定时间。一旦您检索到的值停止此线程。

答案 2 :(得分:0)

//由Gaurav Kumar(Skilrock Technology的SE)

    try{
    MBeanServerConnection server = (MBeanServerConnection)new InitialContext().lookup("jmx/rmi/RMIAdaptor");
    ObjectName on = new ObjectName("jboss.system:type=Server");
    Object var = server.getAttribute(on, "Started");
    System.out.println(var);

        String serverURL = "http://gaurav-compaq-presario-c700-notebook-pc:8080/WServer?wsdl";
        String message = "gaurav";
        HashMap env = new HashMap();
        String[] creds = new String[1];
        creds[0] = message;
        env.put(JMXConnector.CREDENTIALS, creds);
        JMXServiceURL url = new JMXServiceURL(serverURL);
        JMXConnector jmxc = JMXConnectorFactory.connect(url, env);
           // Remember to call jmxc.close() when you are done with server connection.
        MBeanServerConnection server1 = jmxc.getMBeanServerConnection();
          System.out.println(server.getAttribute(new ObjectName("MyDomain:key=property"), "AnAttribute"));
          server.invoke(new ObjectName("MyDomain:key=property"), "doSomething", new Object[0], new String[0]);
    }catch(Exception e){
        System.out.println(e);
    }