2013-08-26 2 views
1

나는 jws 기반 응용 프로그램을 가지고 있습니다.
웹 서버에 배포 중이며 클라이언트가 브라우저에서 파일을 다운로드하여 실행합니다.
바탕 화면 바로 가기이 만들어지며 응용 프로그램이 완벽하게 실행됩니다.JNLP 파일 자동 업데이트 문제

는 지금은 서버에 jnlp 파일의 일부 특성을을 변경하는 경우 다음 바탕 화면 바로 가기에서하거나 업데이트됩니다하지 않습니다 다운로드 jnlp 파일 자체 에서 (클라이언트 시스템)에 설치된 응용 프로그램을 실행합니다.

jdk 버전 1_6_30 및 1_7_21에서 확인했습니다. 이 두 릴리즈는 캐시 경로의 공백과 관련된 이전 bug을 해결 한 것으로 보입니다.
Windows XP/7/8에 문제가 남아 있습니다.

원래 jnlp 파일 :

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp codebase="path/to/fileLocation" spec="1.0+" href="demo.jnlp" > 

<information> 
. 
. 
. 
<offline-allowed/> 
    <shortcut online="false"> 
      <desktop/> 
      <menu submenu="Demo"/> 
    </shortcut> 
</information> 
<update check="always" policy="always"/> 
<!--request all permissions from the application. This does not change--> 
<security> 
    <all-permissions/> 
</security> 
. 
. 
<resources> 
<!-- Here we are referring to the wrapper feature since it transitively refers to all the other plug-ins necessary --> 
<extension> 
    name="Wrapper feature" 
    href="plugin_<some_random_generated_string_1>.jnlp"/> 
</extension> 
</resources> 
. 
. 
. 
<resources os="Windows" arch="x86"> 
     <j2se version="1.6+" java-vm-args="-Xms400m -Xmx800m"/> 
</resources> 

업데이트 jnlp 파일 :

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp codebase="path/to/fileLocation" spec="1.0+" href="demo.jnlp" > 

<information> 
. 
. 
. 
<offline-allowed/> 
    <shortcut online="false"> 
      <desktop/> 
      <menu submenu="Demo"/> 
    </shortcut> 
</information> 
<update check="always" policy="always"/> 
<!--request all permissions from the application. This does not change--> 
<security> 
    <all-permissions/> 
</security> 
. 
. 
<resources> 
<!-- Here we are referring to the wrapper feature since it transitively refers to all the other plug-ins necessary --> 
<extension> 
    name="Wrapper feature" 
    href="plugin_<some_random_generated_string_2>.jnlp"/> 
</extension> 
</resources> 
. 
. 
<resources os="Windows" arch="x86"> 
      <j2se version="1.6+" java-vm-args="-Xms300m -Xmx600m"/> 
</resources> 

변경 에서 자바 VM-인수 반영됩니다하지 않습니다.
jnlp 파일을 다시 다운로드하여 실행하면 업데이트가 작동합니다. 이 경우 바탕 화면 바로 가기는 여전히 고통 :(

이 JaNeLa를 사용하여 JNLP를 검증 인 이전을 의미

편집 :.

이 demo.jnlp는 또 다른 기능 JNLP을 포함 (추가 해당 블록 괄호). 응용 프로그램의 모든 업데이트에서이 기능 jnlp도 업데이트되지만 클라이언트에는 반영되지 않습니다.

답변

2

JWS는 항상 Jars를 업데이트하는 데 능숙했지만 .. JNLP 파일 자체를 업데이트 할 때. 동적으로 생성 된 JNLP는 플러그 - 인에 이 아니라이 아니라는 것을 나타 내기 위해 href 속성이 부족하여 바탕 화면 바로 가기를 만들 수 있습니다.

반면에 해결 방법은 IntegrationService of the JNLP API에 있습니다.

  1. 마지막으로 알려진 JNLP 사본을 PersistenceService에 캐시합니다.
  2. 앱에서 시작, 서버에 다시 연결하고 JNLP를 명시 적으로 읽습니다.
  3. 캐시 된 버전과 비교하십시오.
  4. 변경된 경우 바탕 화면 바로 가기 &을 다시 실행하여 앱을 다시 실행하십시오.
  5. 변경하지 않은 경우 바탕 화면 바로 가기가 없으므로 (새) 바탕 화면 바로 가기를 설치하라는 메시지가 표시됩니다.

3 서버가 유효한 '마지막으로 업데이트 된'시간을 반환하는 경우 JNLP의 URL 연결에 대한 헤더를 간단히 검사하면됩니다.

+0

jnlp 파일 자체는 자동으로 업데이트되지 않습니까? 위의 demo.jnlp (EDIT 확인)에 포함 된 동적으로 생성 된 jnlp가 있습니다. 그래서 언제 내 응용 프로그램이 업데이 트되면, 내 새 빌드 (이클립스 사용) demo.jnlp에 포함 된 새로운 jnlp 파일을 생성합니다. 클라이언트는 다시 업데이트하지 않습니다. 응용 프로그램을 배송하는 내 메커니즘이 올바 릅니까 (jnlp가 동적으로 생성 된 다른 jnlp를 참조하는 경우)? – holmes840

관련 문제