【发布时间】:2012-09-17 17:46:07
【问题描述】:
您好,我正在使用 struts 2,并且想在服务器启动后调用一个方法。 在服务器启动时,我们可以使用 FILTER DISPATCHER。 我正在使用 jax ws。我正在同一个 jboss 服务器上部署我的 jax 客户端和端点项目。 如何解决这个问题 请帮忙
【问题讨论】:
标签: jboss struts2 servlet-filters dispatcher
您好,我正在使用 struts 2,并且想在服务器启动后调用一个方法。 在服务器启动时,我们可以使用 FILTER DISPATCHER。 我正在使用 jax ws。我正在同一个 jboss 服务器上部署我的 jax 客户端和端点项目。 如何解决这个问题 请帮忙
【问题讨论】:
标签: jboss struts2 servlet-filters dispatcher
您可以实现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>
【讨论】:
// 作者 Gaurav Kumar(Skillrock 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);
}
【讨论】:
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**);
您可以做的另一件事是运行一个线程并检查过滤器调度程序中var 的值。如果为真,则调用 Web 服务并将数据设置到您的 Servlet 上下文中,否则将线程休眠一段特定的时间。一旦您检索到值,请停止此线程。
【讨论】: