2016-04-08 9 views
0

TomcatまたはJBossによって.warファイルがデプロイされるとすぐにいくつかのメソッドを実行したいのですがどうすればいいですか?Java:.warファイルがデプロイされたときにメソッドを実行

私はServletContextListenerを試しましたが、動作しません。おかげさまで

+0

こちらをご覧ください:http://stackoverflow.com/questions/6610370/jboss-tomcat-deploy-listenerそれはあなたの問題を解決するはずです。 JBoss JMX APIを見ましたか?他の中には、デプロイメントを管理できるMainDeployer MBeanがありますが、まだデプロイされていないものをチェックするために呼び出すことができるメソッドlistIncompletelyDeployed()があります。ListenerServiceMBeanSupportを使用すると、 まあまあ私はあなたに正確な解決策を教えてもらえませんが、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

あなたはサーブレットであなたのメソッドを追加しようとした後、あなたののWeb.xmlで起動

上でそれを実行した:私はこれを解決

<servlet> 
    <servlet-name>YourServlet</servlet-name> 
    <servlet-class>com.your.domain.YourServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet>