문제

서명된 Java 애플릿을 실행하는 경우 원격 소스(동일한 도메인, 동일한 호스트)에서 추가 클래스를 로드하고 실행할 수 있습니까?

페이지를 변경하거나 현재 애플릿을 중지하지 않고 이 작업을 수행하고 싶습니다.물론 모든 클래스의 전체 크기는 너무 커서 한꺼번에 로드할 수 없습니다.

이를 수행할 수 있는 방법이 있습니까?그리고 서명된 애플릿을 사용하여 이를 수행하고 "신뢰" 상태를 유지할 수 있는 방법이 있습니까?

도움이 되었습니까?

해결책

내 생각엔 클래스가 애플릿에 게으르게 로드되는 것 같아요.요청 시 로드됩니다.

어쨌든 클래스가 jar 외부에 있는 경우 애플릿 클래스 로더를 사용하여 이름별로 로드할 수 있습니다.전:

ClassLoader loader = this.getClass().getClassLoader();
Class clazz = loader.loadClass("acme.AppletAddon");

jar에서 클래스를 로드하려면 jar의 URL을 사용하여 URLClassLoader의 새 인스턴스를 만들어야 한다고 생각합니다.

URL[] urls = new URL[]{new URL("http://localhost:8080/addon.jar")};
URLClassLoader loader = URLClassLoader.newInstance(urls,this.getClass().getClassLoader());
Class clazz = loader.loadClass("acme.AppletAddon");

기본적으로 애플릿은 새 클래스 로더를 생성하는 것이 금지되어 있습니다.그러나 애플릿에 서명하고 새 클래스로더를 생성할 수 있는 권한을 포함하면 그렇게 할 수 있습니다.

다른 팁

예, 애플릿을 실행한 호스트에 대한 URL 연결을 열 수 있습니다.HTTP URL을 사용하여 클래스 로더를 생성하거나 사용자 시스템에 클래스(jar)를 다운로드하고 클래스 경로에 해당 jar가 포함된 클래스 로더를 생성할 수 있습니다.애플릿은 멈추지 않으며 다른 페이지를 로드할 필요도 없습니다.

신뢰도에 대한 질문의 두 번째 부분과 관련하여 사용자가 애플릿에 대한 액세스 권한을 부여하면 로컬 컴퓨터에 원하는 모든 것을 다운로드할 수 있습니다.UI 디자인에서 허용하는 경우 사용자에게 현재 수행 중인 작업을 알릴 수 있습니다.

도움이 되었기를 바랍니다.

가능할 것 같습니다(하지만 저는 한 번도 해본 적이 없습니다).이미 원격 메서드 호출(Remote Method Invocation)을 살펴보셨나요?RMI)?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top