2012-12-01 4 views
3

"응용 프로그램의 VM 인스턴스"에 들어가는 Java Agent를 사용하여 jnlp 응용 프로그램에서 일부 작업을 자동화 한 다음 내 Swing GUI의 새 인스턴스를 만듭니다 자동화를위한 클래스).Java 에이전트를 사용하여 JNLP 응용 프로그램 자동화

잘 작동하고, 프레임의 구성 요소에 액세스 할 수 있습니다. 문제는 내 GUI가 "애플릿"으로 실행되어 내 GUI 모서리에 노란색 짜증나는 삼각형을 제공하고 파일 액세스와 같은 내 사용 권한도 차단한다는 것입니다.

JNLP 파일에 JNLP의 설정이 <application-desc main-class="x"/>이므로 애플릿으로 실행되지 않습니다.

스윙 GUI를 애플릿이 아닌 애플리케이션으로 실행할 수 있습니까? JavaAgent

public class FrameSearcherAgent { 

    public static void agentmain(String args) { 

    Frame[] frames = Frame.getFrames();   
    for(Frame f: frames) 
    {   
     if(f.getTitle().equals("Frame Title")){ 
     //Parameter is the Frame I want 
     new JFrameAutomateGUI(f).setVisible(true); 
     break; 
     } 
    } 
    } 
} 

답변

2

문제의

코드 .. 내 GUI 나에게 내 GUI의 모서리에 노란색 성가신 삼각형을 제공하는 "애플릿"로 실행한다는 것입니다

아니, 틀렸어.

  1. 모든 애플릿 또는 JWS 앱에 적용됩니다.
  2. 사용자에게 안전함과 앱 배포시 직면해야하는 문제는별로 문제가되지 않습니다.

또한 내 권한 (예 : 파일 액세스)을 차단합니다.

Java Web Start를 사용하여 배포 된 모든 응용 프로그램 또는 애플릿에서 로컬 파일 시스템에 액세스 할 수 있지만 다른 (JWS 특정) API가 필요합니다. 다음은 demo. of using the JNLP file services입니다. 한편

: 코드가 디지털 서명과 JNLP이 j2ee-application-client-permissions를 요청하는 경우

  • 삼각형이 사라집니다.
  • 앱입니다. 서명이되어있어 JNLP가 all-permissions를 요구했을 경우, 보안 매니저 (JFileChooser의 표시를 포함한다)로 할 수있는 모든 것을 할 수 있습니다.
+0

하지만 문제가 있습니다. JNLP에서 응용 프로그램을 실행하지 않습니다 ... 프로세스는 다음과 같습니다. 두 개의 jar; 첫 번째는 모든 VirtualMachines (VirtualMachine.getlist)를 반복하고 내 에이전트 (VM.loadAgent)를 자동화하고로드하려는 응용 프로그램의 VM (VirtualMachine.attach)에 연결하는 "injector"입니다. 두 번째는 위의 코드 (내 게시물에서)와 GUI 클래스를 가진 에이전트입니다. 내 에이전트는 이제 VM 내부에서 실행되며 간단한 "새 JFrame()"으로 GUI를 시작합니다. 따라서 JNLP가 없기 때문에 JNLP에서 "모든 권한"을 요청할 수있는 방법이 없습니다. – Bruno

+0

커스텀'SecurityManager'를 설치해야 할 수도 있습니다. –

관련 문제