2017-03-08 20 views
1

パフォーマンス上の理由から、Jettyキャッシュはデフォルトでプロパティファイルなどの静的リソースによってキャッシュされます。例えば、このようないくつかのコード:それはまだキャッシュからではなく、ディスクから利用できるようになるので、Jettyでサーバーキャッシュを無効にする方法

public class FrontServlet extends HttpServlet 
{ 
    private final Properties routes = new Properties(); 

    @Override 
    public void init() 
     throws ServletException 
    { 
     try { 
      this.routes.load(this.getClass().getClassLoader().getResourceAsStream("routes.properties")); 
     } catch (IOException | NullPointerException e) { 
      throw new ServletException(e); 
     } 
    } 
} 

は、私がroutes.propertiesファイルを削除した後も仕事を続けるでしょう。 The Eclipse Jetty plugin documentationもこれに言及しています。「サーバーキャッシュを無効にする」を探します。

ここでは、誤検出を避けるために開発環境でこの機能を無効にしたいと考えています。 The Jetty documentationには、0に設定されている場合、キャッシュを無効にするmaxCacheSizeというinitパラメータがあることが記載されています。しかし、私は、コンテキストパラメータとしての両方を試してみました:

<context-param> 
    <param-name>org.eclipse.jetty.servlet.maxCacheSize</param-name> 
    <param-value>0</param-value> 
</context-param> 

とサーブレットのinitパラメータとして:

<servlet> 
    ... 
    <init-param> 
     <param-name>org.eclipse.jetty.servlet.maxCacheSize</param-name> 
     <param-value>0</param-value> 
    </init-param> 
</servlet> 

無駄に。

誰でもこれを行う方法を知っていますか?

EDIT:

routes.propertiesファイルはまだ私は、Webサーバーを再起動した後でも発見され、そしてベイグラント仮想マシン、それが動作しています。また、私はMaven Jetty pluginを使用しているので、mvn jetty:runでサーバを起動していることを述べるべきです。

答えて

2

これはサーバーキャッシュとは無関係です。

routes.propertiesは、Servlet Context Initialization中に一度ロードされ、その後から使用されます。

実行中のコンテキストが破棄される(つまり、Webサーバーを再起動する)と、FrontServlet.init()が再度呼び出されます。

+0

私はまた、Webサーバー、さらには仮想マシン全体を再起動しようとしましたが、物理的に欠けているにもかかわらず、プロパティファイルが見つかりました。 – swahnee

関連する問題