2016-04-08 2 views
0

Я хочу выполнить некоторые методы, как только файл .war будет развернут Tomcat или JBoss, как я могу это сделать?Java: выполнить метод при развертывании .war-файла

Я пробовал ServletContextListener, но он не работает. Спасибо.

+0

Посмотрите здесь: http://stackoverflow.com/questions/6610370/jboss-tomcat-deploy-listener. Это должно решить вашу проблему. Из оригинального ответа: «Посмотрели ли вы на JBoss JMX API? Среди других есть MBEM MainDeployer, который позволяет управлять развертываниями, имеет список методовIncompletelyDeployed(), который вы можете вызвать, чтобы проверить, что еще не развернуто. ListenerServiceMBeanSupport позволяет вам подписаться на уведомления JMX. Ну, я не могу дать вам точного решения, но тыкать вокруг JMX может принести вам то, что вам нужно ». –

+0

Почему бы просто не использовать инициализатор сервлета? – blgt

+0

'ServletContextListener' должен сделать трюк. С какими проблемами вы столкнулись? Вы добавили аннотацию '@ WebListener'? –

ответ

1

OK Я решил это, это работает с 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(); 
} 
} 
3

Вы пробовали добавлять свои методы в 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> 
Смежные вопросы