1

Webアプリケーションの開発にPlayフレームワーク1.2.5とHibernate3.25を使用しています。アプリケーションの起動に問題があります。非常に遅いです:(

Java EEサーブレット駆動型アプリケーションの場合ServletContextListener、セッションファクトリの初期化にを使用します(これは実際には時間のかかる作業です)。アプリケーションがデプロイされると、セッションファクトリが初期化され、アプリケーションをエンドユーザーが使用できるようになる前に、これらすべてを完了する必要があります。このように、ユーザーが最初の要求をトリガーすると、最初の要求の応答時間が速くなります。

ただし、Playフレームワークの場合、サーブレットアーキテクチャには準拠していません。ServletContextListenerしたがって、アプリケーションがエンドユーザーに使用できるようになる前に、すべてのセッションファクトリを作成するのと同様の実装方法がわかりません。

これがないと、初めてアプリケーションは最初のリクエストに対して非常に遅くなります。

Play Frameworkにも同じことをする何かがあるかもしれないと確信していますが、私はそれを知りません。

これについて教えてください。

4

3 に答える 3

3

ジョブを使用して、アプリケーションを初期化できます。たとえば、@ OnApplicationStartで注釈が付けられたブートストラップジョブを使用して、静的データのロードやキャッシュまたはファクトリの初期化を処理できます。

@OnApplicationStart
public class Bootstrap extends Job {

    public void doJob() {
        //Load static data
        //Initialise cache
        //Initialise factories
        ...
        // ready to serve application
    }
}
于 2013-01-27T10:57:50.790 に答える
1

最初のリクエストで、アプリケーションを開発モードで実行している可能性があります。このモードでは、すべてが遅延してコンパイルおよび初期化されます。本番モードでは、サーバーを実際に起動する前にすべてをコンパイルします。http://www.playframework.org/documentation/1.2.5/productionを参照してください

于 2013-01-27T08:53:37.603 に答える
0

JBは正しいはずです。つまり、次のオプションを使用してサーバーを起動でき--%prodます。

play run --%prod

また

play start --%prod
于 2013-01-27T10:19:35.950 に答える