0

単純な Java クラスに ServletContextListener を実装しました。この内部で、ServletContextListener の contextInitialized が実行されるとすぐに実行するメソッドを呼び出しました。呼び出されたメソッドの性質は、複雑であり、実行に長時間かかることです。Web アプリケーションが実行されるとすぐにブラウザに表示される必要があるウェルカム ページである index.jsp という Web ページが 1 つだけありますが、これは最初に呼び出されたメソッドの実行時に表示されず、実行に時間がかかります。

バックグラウンドで実行するために、表示するウェルカムページと ServletContextListener で呼び出される関数が必要です..

ここに私の ServletContextListener クラスがあります..

public class Startup implements ServletContextListener
{
@Override
public void contextDestroyed(ServletContextEvent sce) {}

@Override
public void contextInitialized(ServletContextEvent sce)
{
    // Do your startup work here
     executeprocess();
}

}

ここに私のweb.xmlファイルがあります..

 <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
 <listener>
    <listener-class>org.myapp.Startup</listener-class>
</listener>

私を助けてください。前もって感謝します..

4

2 に答える 2

6

以下のようにスレッドを追加してみてください。

@Override public void contextInitialized(ServletContextEvent sce) {
new Thread(new Runnable() {
    @Override
    public void run() {
        executeprocess();
    }
}).start();}
于 2013-11-15T09:02:21.833 に答える
2

メソッドは、contextInitializedメソッドが終了するまでデプロイを一時停止します。

于 2013-11-15T09:00:05.343 に答える