Java:部署.war文件时执行方法
我想在Tomcat或JBoss部署.war文件后立即执行一些方法,我该怎么做Java:部署.war文件时执行方法,java,Java,我想在Tomcat或JBoss部署.war文件后立即执行一些方法,我该怎么做 我尝试了ServletContextListener,但它不起作用。 谢谢。您是否尝试过在Servlet中添加方法,然后在启动时运行它 在您的Web.xml中: <servlet> <servlet-name>YourServlet</servlet-name> <servlet-class>com.your.domain.YourServlet</
我尝试了
ServletContextListener
,但它不起作用。
谢谢。您是否尝试过在Servlet中添加方法,然后在启动时运行它 在您的Web.xml中:
<servlet>
<servlet-name>YourServlet</servlet-name>
<servlet-class>com.your.domain.YourServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
YourServlet
com.your.domain.YourServlet
1.
您是否尝试过在Servlet中添加方法,然后在启动时运行它
在您的Web.xml中:
<servlet>
<servlet-name>YourServlet</servlet-name>
<servlet-class>com.your.domain.YourServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
YourServlet
com.your.domain.YourServlet
1.
好的,我解决了这个问题,这个问题适用于JBoss:
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Startup;
import javax.ejb.Singleton;
@Singleton
@Startup
public class InitializerEjb {
@PostConstruct
public void init() {
SMTPServer smtp_server = SMTPServer.getInstance();
smtp_server.start();
}
}
这与Tomcat一起工作:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class Initializer implements ServletContextListener {
@Override
public final void contextInitialized(final ServletContextEvent sce) {
SMTPServer smtp_server = SMTPServer.getInstance();
smtp_server.start();
}
}
好的,我解决了这个问题,这对JBoss有效:
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Startup;
import javax.ejb.Singleton;
@Singleton
@Startup
public class InitializerEjb {
@PostConstruct
public void init() {
SMTPServer smtp_server = SMTPServer.getInstance();
smtp_server.start();
}
}
这与Tomcat一起工作:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class Initializer implements ServletContextListener {
@Override
public final void contextInitialized(final ServletContextEvent sce) {
SMTPServer smtp_server = SMTPServer.getInstance();
smtp_server.start();
}
}
请看这里:。那应该能解决你的问题。从最初的答案来看:“您看过JBoss JMX API了吗?除此之外,还有一个MainDeployer MBean可以让您管理部署,它有一个方法ListIncomplelyDeployed()你可以调用它来检查尚未部署的内容。ListenerServiceMBeanSupport允许你订阅JMX通知。我不能给你一个确切的解决方案,但是浏览JMX可能会得到你所需要的。“为什么不使用servlet的初始化器呢?
ServletContextListener
应该可以做到这一点。你遇到了什么问题?您添加了@WebListener
注释了吗?@f_puras是的,我添加了,它与Tomcat一起工作,但与JBoss不一起工作。我对JBoss了解不多,因此我无法帮助您解决问题。你查过了吗?看看这里:。那应该能解决你的问题。从最初的答案来看:“您看过JBoss JMX API了吗?除此之外,还有一个MainDeployer MBean可以让您管理部署,它有一个方法ListIncomplelyDeployed()你可以调用它来检查尚未部署的内容。ListenerServiceMBeanSupport允许你订阅JMX通知。我不能给你一个确切的解决方案,但是浏览JMX可能会得到你所需要的。“为什么不使用servlet的初始化器呢?ServletContextListener
应该可以做到这一点。你遇到了什么问题?您添加了@WebListener
注释了吗?@f_puras是的,我添加了,它与Tomcat一起工作,但与JBoss不一起工作。我对JBoss了解不多,因此我无法帮助您解决问题。你查过了吗?