2016-12-06 4 views
0

私はJavaアプリケーションにJettyを埋め込みました。実行可能なjarファイルを作成しました。cmdのjettyサーバからjarファイルを実行すると、 Jettyサーバーのスタータークラス。jarファイルの一部をコンテキスト・テンポラリ・ロケーションに抽出する方法

protected void configureWebApp() throws IOException { 
     File webAppDir=new File(getClass().getProtectionDomain().getCodeSource().getLocation()); 

     WebAppContext context = new WebAppContext(webAppDir.getPath(), "/"); 
     resetTempDirectory(context, currentDir); 
     context.setInitParameter("development", "false"); 
     server.setHandler(context); 
     } 

protected void resetTempDirectory(WebAppContext context, File currentDir) throws IOException { 
     File workDir; 
     if (workPath != null) { 
      workDir = new File(workPath); 
     } else { 
      workDir = new File(currentDir, "work"); 
     } 
     FileUtils.deleteDirectory(workDir); 
     context.setTempDirectory(workDir); 
    } 

cmd webAppDir設定されたパスから実行すると、自分のアプリケーションjar.so桟橋を指摘し、その一時directory.Itにすべてのjarファイルの内容を抽出します私は、リソースを無駄にし、自分のアプリケーションの起動が遅くなるように思えます。

私の瓶の中にそれが

  1. がどのように私は tempディレクトリにwebApp folderを抽出伝えるために桟橋を指示することができ、ウェブreleated stuff.My質問がある含まれているwebAppフォルダを持っていますか?
  2. 私は一時的な指示に桟橋の抽出をオフにすることができますし、 私の必要なフォルダを抽出し、その桟橋の温度 ディレクトリとしてそのフォルダをポイントする独自の方法を書いてください。

私はこれを行う方法を教えてください。

答えて

1

サーブレット仕様の一時ディレクトリにその処理を許可したいが、依然としてサーブレット仕様を使用しますか?

prior answer on how the temp directory worksを参照してください。

オプション#1

これは組み込み桟橋、WebAppContext(およびそのサーブレット仕様義務付けられた行動)をスキップし、ハンドラを経由して(ServletContextHandlerのような)すべてを構成しています。

コンポーネントを "発見"する能力がなくなり、バイトコードのスキャンもありませんが、究極の制御とスタートアップはサブ秒のタイミングで測定されます。

オプション#2

これはちょうどスタートアップの問題であれば、あなたが展開する前に、サーブレットのマニフェストのquickstart生成を実行し、一時ディレクトリの問題を無視し、(構築済み)クイックスタートを使用してWebAppContextを開始メタデータ。

関連する問題