2016-05-13 5 views
0

私はtomcat 8を使用しています。プロフィール画像を検索して更新する機能があります。ファイルは外部フォルダにあります。それは私の地元のTomcatに罰金を働いてTomcat context docbase

<Context docBase="C:/assets" path="mywebapp/files"/> 

servlet.xmlにこのコードを使用して取得しますが、リモート・サーバーでそれにアクセスする際に、新しく作成されたファイルが表示されていません。新しい画像が表示されるように、サーバーでTomcatを再起動する必要があります。

また、私はこの

<Context docBase="C:/assets" path="mywebapp/files" reloadable="true"/> 

を試みたが、まだそれは、Tomcatを再起動する必要はありませ方法

任意のアイデアを動作しませんでしたか?

+0

"C:/ assets"はリンクですか? –

答えて

0

あなたのdocBase行はservlet.xmlではなくserver.xmlに属していると思います。私はあなたのパス変数が先頭のスラッシュで始まる必要があるとも思います。 2つのレベルが含まれているかどうかわかりませんが、path =/assetsに変更するだけです。

次に、context.xmlファイルを調べます。それは

<Context antiResourceLocking="true"> 

を言う場合は、新しいファイルが利用可能になる前にコンテキストをリロードする必要があります。 Context要素にantiResourceLocking = "true"が設定されていない場合は、ファイルをすぐに使用できるようにする必要があります。

あなたはこのように、認証を提供するために、おそらく必要がありますしかし、あなたは(あなたが/資産にPATH環境変数を変更仮定)http://localhost:8080/manager/text/reload?path=/assetsにGETリクエストを発行することにより、Tomcatを再起動せずに、プログラムで

をコンテキストをリロードすることができます:

Authenticator.setDefault (new Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication ("tomcat", "password".toCharArray()); 
     } 
    }); 

    URL url = new URL("http://localhost:8080/manager/text/reload?path=/assets"); 

    try { 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     conn.getResponseCode(); 

     BufferedReader in = new BufferedReader(
       new InputStreamReader(conn.getInputStream())); 
     String inputLine; 
     StringBuffer response = new StringBuffer(); 

     while ((inputLine = in.readLine()) != null) { 
      response.append(inputLine); 
     } 

     logger.info(response.toString()); 
     in.close(); 

    } catch (Exception e) { 
     logger.error(e.getMessage(), e); 
    } 
関連する問題