행복한 아빠

Windows에서 Jetty 실행 중 "Save Problems" 에러가 발생하는 경우 본문

문제발생시

Windows에서 Jetty 실행 중 "Save Problems" 에러가 발생하는 경우

행복한아빠 2008. 7. 16. 11:21
사용자 삽입 이미지
Windows 개발환경에서 Maven, eclipse 그리고 개발 WAS로 Jetty를 사용하여 개발을 하다가 심각한 문제를 발견했다.
Jetty가 구동되면 한번 읽은 정적파일 (css, js, image 등)을 수정할 경우 다음과 같은 에러가 발생한다.


사용자 삽입 이미지

Windows에서만 이런 현상이 발생하는데 그 현상은 하나의 프로세스(jetty)가 파일을 오픈한 경우 다른 프로세스(eclipse)가 그 파일을 쓸 수 없다는 것이다. 이 경우 Jetty를 내렸다 올리면 저장이 가능하기는 하다. 그러나 css나 javascript(js) 파일을 수정할 때마다 Jetty를 재기동하는 것은 여간 귀찮은 일이 아니다.

Jetty는 성능향상을 위해 정적파일은 캐싱하는데 개발 시 이 캐시를 꺼 두면 이런 현상이 사라진다.
(참조: http://docs.codehaus.org/display/JETTY/Save+could+not+be+completed )

Maven jetty 플러그인 사용자의 해결책
Jetty의 캐싱기능을 조절하기 위해서는 webdefault.xml 파일이 필요하다. 이 파일은 jetty.jar 압축을 풀면 org/mortbay/jetty/webapp/webdefault.xml 에 있다. 압축을 풀어 이 파일은 프로젝트 폴더내 적당한 디렉토리에 위치해 둔다. 그리고 다음 부분을 false로 수정한다.

...
    <init-param>
      <param-name>useFileMappedBuffer</param-name>
      <param-value>false</param-value>
    </init-param>
...

pom.xml 에 jetty 플러그인 설정 부분에 다음을 추가한다.

...
  <plugins>
   <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <version>6.1.5</version>
    <configuration>
     <contextPath>/mywebapp</contextPath>
     <jettyConfig>./jetty.xml</jettyConfig>
     <webDefaultXml>src/test/resources/webdefault.xml</webDefaultXml>
    </configuration>
   </plugin>
  </plugins>
...

물론 webDefaultXml의 내용은 위에서 풀어놓은 파일 위치를 지정하면 된다.

(참조: http://www.mail-archive.com/users@appfuse.dev.java.net/msg09886.html)


다른 환경 사용자의 해결책
다음 URL을 참조한다.
http://docs.codehaus.org/display/JETTY/Files+locked+on+Windows

0 Comments
댓글쓰기 폼