0

나는 그 XSL 변환을 수행 I (1 개 JAR 파일 포함) 애플릿에 서명 한 서명 애플릿 + XSL 변환이 AccessControlException가를 throw()

을에 도움을받을 싶은 곳 XML을 입력하면 XSL과 출력이 로컬 파일 시스템에서 읽고 쓰게됩니다. 이미 JRE

  • 1.5.0_22
  • 1.6.0_29
  • 1.7.0_01

그것을 시도하고 그 결과는 동일합니다 :

때 내 XSL 파일 외부 XML 문서에 대한 참조를 포함합니다.

<xsl:variable name="extXML" select="document('/tmp/A.XML')"/> 
<xsl:value-of select="$extXML/Child"/> 
01 23,516,

변환이 실패 :

com.sun.org.apache.xalan.internal.xsltc.TransletException: java.security.AccessControlException: access denied (java.io.FilePermission /tmp/A.XML read) 
at com.sun.org.apache.xalan.internal.xsltc.dom.LoadDocument.documentF(LoadDocument.java:142) 
at in.topLevel() 
at in.transform() 
at com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:603) 
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:709) 
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313) 
at myxsltapplet.MyXSLTApplet.xsltTransform(MyXSLTApplet.java:66) 

외부 XML 문서에이 참조가 잘 모든 작업을 주석 처리됩니다. 정책 파일을 사용하면이 문제가 해결되지만 안타깝게도이 옵션은 아닙니다.

나는 TransformerFactory에 대해 설정 한 URIResolver을 구현했지만 AccessControlException도 얻습니다.

애플릿에서

나는 SecurityManagerAccessControlContext를 검색하고 자신의 해시 코드를 로그 아웃 :

내를 사용해 URIResolver 구현에서 동일했고, AccessControlContext의이 변경되었습니다
SecurityManager: sun.plugin2.applet.Applet2[email protected] 
getSecurityContext(): [email protected] 

:

SecurityManager: [email protected] 
getSecurityContext(): [email protected] 

부름을 오리지날의 AccessControlContext의 checkPermission가 예외없이 실행됩니다.

내를 사용해 URIResolver에 액세스 할 수있는 새로운 AccessControlContext에에의 checkPermission를 호출 :

AccessControlContext acc = (AccessControlContext) System.getSecurityManager().getSecurityContext(); 
acc.checkPermission(new FilePermission("/tmp/A.XML", "read")); 

예외 :

ERROR: 'java.security.AccessControlException: access denied (java.io.FilePermission /tmp/A.XML read)' 

은 일상적인 일이나 버그인가? 아무쪼록 고맙습니다.

+0

표준 응용 프로그램이 해당 입력 파일을 읽을 수 있습니다 여기에 이유를 몇 가지 설명은? 파일의 시스템 기본 소비자는 어떻습니까? –

+0

예. 외부 XML 문서에 대한 참조가 제거되면 변환이 작동합니다. – Atos

+0

JavaScript를 사용하여 기능이 호출 되었습니까? –

답변