2016-08-26 3 views
0

私はスプリング・バック・バックエンド+別(AngularJSベース)クライアント・アプリケーションを持っています。私のビルドプロセスは、最初にクライアントアプリケーションのコードを縮小し、それを圧縮し、それをローカルMavenリポジトリのライブラリとしてインストールします。サーバーはpom内のクライアント・ライブラリーを参照するので、サーバーがビルドされると、クライアントはjarにパッケージ化されます。スプリング・ブート・ジャーを実行できません

問題は、jarファイル(java -jar)を実行すると、起動に時間がかかりすぎる(5-10分)か、まったく起動しないことがあります。 -10秒)。私は何が原因だろうと思っていたのですか?それは、クライアントのzipが大きすぎることと関係しているでしょうか(そして時には何とかキャッシュされるかもしれません)?

編集:jarが実行されたとき(java -jar server.jar経由)。 Afterwarsログは次のようになります

Starting Application ... with PID ... 
Mapping servlet: 'dispatcherServlet' to [/] 
Mapping filter: .... 
Mapping filter: 'requestContextFilter' to [/*] 

このフィルタマッピングではスタックしません。

+1

(春の起動アプリケーションの)最小限のコードまたは最小のログ出力と完全なコマンドライン呼び出しを提供してください。完全な情報を得るには、ロガーを 'TRACE'に設定してください。クライアントコードを参照しているサーバーまたはクライアントコードがサーバーのjarファイルに含まれている恐ろしいデザイン: –

+0

@ user2393012、なぜ、クライアントコードを参照するのがよいでしょうか? – asenovm

答えて

1

バンプブートログファイルを調べて、アプリの所要時間を確認する必要があります。 TRACEでログレベルを設定し、タイムスタンプを見てください。

スプリングブートでは、静的コンテンツを提供するためにResourceHandlersを追加できます。リンクに記載されているようにあなたは、同様のオーバーライドをしなければならない :あなたは別のパッケージとしてあなたのクライアントコードを配布することができ、および展開プロセスでは、あなたがそのパッケージを入れて(そしておそらく解凍する必要が

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    if (!registry.hasMappingForPattern("/webjars/**")) { 
     registry.addResourceHandler("/webjars/**").addResourceLocations(
       "classpath:/META-INF/resources/webjars/"); 
    } 
    if (!registry.hasMappingForPattern("/**")) { 
     registry.addResourceHandler("/**").addResourceLocations(
       RESOURCE_LOCATIONS); 
    } 
} 

この方法それを適切な場所に置いてください。そうすれば、リソースハンドラによってそれを取り出すことができます。

関連する問題