2009-06-04 4 views
4

Java 응용 프로그램 (Java 클라이언트 및 Java 서버)을 업데이트 할 때마다 일부 클라이언트가 약할 수 있습니다. 1 % - 2 %는 새 jar 파일을로드하지 않습니다. 이것은 애플릿 및 Java Web Start에서도 발생합니다. Java 캐시를 지우면 모두 제대로 작동합니다.Java가 jar 파일의 새 버전을 요청하지 않는 이유는 무엇입니까?

Java가 시작할 때마다 새로운 jar 파일을 확인하지 않는 이유는 무엇입니까?

답변

2

문제가 해결 될 수 있지만이를 쉽게 해결할 수 있습니다. 올바른 캐시 업데이트에 의존하는 대신 JAR 파일 이름에 응용 프로그램의 버전/빌드 번호가 포함되어 있는지 확인하십시오. 그러면 애플릿의 새 버전에 대한 JAR 파일이 다른 URL에 효과적으로 저장됩니다 (부트 스트랩 웹 페이지를 변경해야 함).

+0

다른 이상한 문제가 발생하지 않았습니까? – asalamon74

+0

물론입니다. JNLP도 캐싱되므로 동일한 문제가 발생할 수 있으며 새 버전 번호가 포함되도록 모든 릴리스에서 변경됩니다. 이것은 신뢰성을 향상시킬 수 있지만 여전히 100 % 효과가있는 것은 아닙니다. – banjollity

+0

JNLP 파일이 캐싱되면 문제가 있다는 것을 보증 할 수 있습니다. 때로는 임의로 웹 캐시 오류를 수정하기 위해 Firefox 캐시를 임의로 삭제하는 경우가 있습니다. – Mark

1

나는 거기에 있었고 100 % 보장 된 유일한 해결책은 다른 경로/자원 (항아리, 이미지 등)을 갖는 것입니다. 어느 누구도 캐싱 메커니즘에서 버그가 될 수 없다는 것을 보장 할 수 없습니다 (JDK 변경 목록을 2-3 번의 릴리스마다 살펴보면 jar의 캐싱 메커니즘과 관련된 것이 있습니다).

그래서 (그냥 항아리 URL의 끝에 문자열로 마지막으로 수정 한 시간을 추가) 그와 함께 가서 당신은 어떤 문제가 발생하지 않습니다 :

예 :이 http://myserver/applet/codebase/your_jar.jar?v=343438534545455 < 될 것 http://myserver/applet/codebase/your_jar.jar?v=2487387543434 및 다음 버전 - 이것이 항아리의 마지막 수정 시간.

관련 문제