2017-03-08 2 views
1

성능상의 이유로 기본적으로 Jetty 캐시는 속성 파일과 같은 정적 리소스로 캐시합니다. 예를 들어,이 같은 일부 코드 : 나는 routes.properties 파일을 삭제 한 후에도 여전히 캐시에서 사용할 수 때문에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); 
     } 
    } 
} 

오히려 디스크에서보다, 작업을 계속할 것입니다. The Eclipse Jetty plugin documentation도이 점에 대해 언급합니다. "서버 캐시 사용 안 함"을 찾습니다.

이제 개발 환경에서 위양성을 방지하기 위해이 기능을 비활성화하고 싶습니다. The Jetty documentation에는 0으로 설정된 경우 캐시를 비활성화하는 maxCacheSize이라는 초기화 매개 변수가 있습니다.

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

와 서블릿 초기화 매개 변수로 : 그러나, 나는 컨텍스트 매개 변수로 모두를 시도

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

아무 소용.

누구든지이 작업을 수행하는 방법을 알고 있습니까?

편집 :

routes.properties 파일이 아직도 내가 웹 서버를 다시 시작 후에도 발견하고 방랑 가상 머신이 실행중인 것. 또한 나는 Maven Jetty plugin을 사용하고 있다고 말하면서 mvn jetty:run으로 서버를 시작했습니다.

답변

2

이것은 서버 캐시와 관련이 없습니다.

routes.properties은 서블릿 컨텍스트 초기화 중에 한 번로드되고 이후 사용됩니다.

실행중인 컨텍스트 (예 : 웹 서버를 다시 시작)가 손상되면 FrontServlet.init()이 다시 호출됩니다.

+0

나는 웹 서버 및 심지어 전체 가상 컴퓨터를 다시 시작했지만 실제로 속성 파일이 발견되었다는 사실을 잊어 버렸다. – swahnee