Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:部署.war文件时执行方法_Java - Fatal编程技术网

Java:部署.war文件时执行方法

Java:部署.war文件时执行方法,java,Java,我想在Tomcat或JBoss部署.war文件后立即执行一些方法,我该怎么做 我尝试了ServletContextListener,但它不起作用。 谢谢。您是否尝试过在Servlet中添加方法,然后在启动时运行它 在您的Web.xml中: <servlet> <servlet-name>YourServlet</servlet-name> <servlet-class>com.your.domain.YourServlet</

我想在Tomcat或JBoss部署.war文件后立即执行一些方法,我该怎么做


我尝试了
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了解不多,因此我无法帮助您解决问题。你查过了吗?