2011-02-23 4 views
2

비표준 응용 프로그램을 개발 중입니다. 기본적으로 SWT 응용 프로그램 애플릿이 포함 된 html 페이지 (나뿐만 아니라 개발 된)를 표시해야하는 내장 Mozilla 브라우저 (mozilla-interfaces-1.9.2.12.jar, mozilla-glue-1.9.2.12.jar) 을 사용합니다. 이러한 애플릿이 서명되고 인증서가 키 저장소로 가져옵니다. 표준 독립형 Mozilla 브라우저에서 애플릿을 실행할 때 모든 것이 잘 작동합니다.SWT가 포함 된 SecurityManager 문제 Java 웹 스타트 (jnlp)를 통해 실행되는 Mozilla 브라우저

내 SWT 응용 프로그램을 정상적으로 실행하더라도 (즉, 독립형 Java 데스크탑 응용 프로그램 withou SecurityManager) 모든 것이 잘 작동하므로 임베디드 브라우저가 나타나고 애플릿이있는 페이지가 표시됩니다.

그러나 Java Web Start (jnlp)에서이 응용 프로그램을 실행하자마자 문제가 발생합니다. 내 jnlp가 잘 정의되어 있고 인터넷 토론을 통해 찾을 수 있었던 모든 태그가 포함되어 있다고 가정합니다. 그래서 예를

<security> 
    <all-permissions/> 
</security> 

등 내 SWT 애플리케이션, RESP를 위해 존재한다. 모든 jar 파일이 서명됩니다 (애플릿에 사용 된 것과 같은 인증서). 괜찮아요, 모든 권한과 서명 없이는 허용되지 않는 작업을 수행합니다. SWT 창 (따라서 SWT 자체는 정상적으로 작동합니다)을 표시하지만 임베디드 브라우저를 표시해야 할 때 UnsatisfiedLinkException이 표시됩니다. 재밌는 점은 권한 세트로 .java.policy 파일을 만들 때 올바르게 작동한다는 점입니다. 애플릿도 제대로 작동합니다. 셜록 홈즈의 역할을 내가 권한 세트가

java.io.FilePermission 
    java.lang.RuntimePermission 
+ permissions that are neccessary for applets. 

가 당신의 사람에게 의미가 있는가 포함되어 있는지 알아 냈어? Mozilla 브라우저가 특정 SecurityManager를 실행하는 것처럼 보이며 응용 프로그램 자체가 서명되어 있다는 사실을 무시하고 또한 태그가 jnlp 파일에 있습니다.

애플릿이없는 페이지를로드 할 때 여전히 브라우저 창을 표시하려면 두 가지 권한이 필요하다는 점을 참고하십시오. 사용자 측에 별도의 설정없이 .java.policy 파일 및 없이이 응용 프로그램을 실행하고 싶습니다. 모든 조언에 감사드립니다.

미리 감사드립니다.

보이 타

답변

0

확실하지 경우 동일한 문제, 내가 애플릿을 사용한 적이 있지만, Webstart를 통해 번들 XULRunner가와 SWT-브라우저 기반 응용 프로그램을 실행할 때 나는 또한 문제를 했어 때문이다. 이것에 대한

한 가지 해결 방법은 내가 윈도우 XP는 여전히이 함께 JNLP를 실행할 수 없습니다 기억

Policy.setPolicy(new Policy() { 
    public PermissionCollection getPermissions(CodeSource codesource) { 
    Permissions perms = new Permissions(); 
    perms.add(new AllPermission()); 
    return(perms); 
    } 
    public void refresh() { } 
} 

(그냥 ... 브라우저 인스턴스를 작성하기 전에) 자바 코드 내부 정책을 설정했다. 그러나 Windows 7, Linux 및 Mac OS X의 여러 버전이 가능합니다.