2017-11-13 17 views
0

주 응용 프로그램과 백그라운드 응용 프로그램을 각각 자체 JVM으로 갖고 싶습니다.
메인을 시작할 때 배경이 실행 중인지 확인하고 그렇지 않은 경우 시작해야합니다.
여러 개의 메인이 실행되지만 하나의 백그라운드 응용 프로그램 만 필요합니다.
모든 주전원을 닫은 후에도 배경이 계속 작동하는 것이 좋습니다.Windows의 자바 배경 응용 프로그램

그것은 배경 응용 프로그램을 처음, 난 몰라 :

  • 가 dettached 응용 프로그램을 실행하는 방법에 대해 설명합니다. 타 응용 프로그램이
  • 를 실행중인 경우

내가 설계 단계에서 여전히 나는 (내가 소켓을 사용한다) 두 응용 프로그램이 그들 사이에서 의사 소통을 할 수있는 방법

  • 어떻게 확인 (즉 함께 종료되지 않습니다) , 원격으로 관련된 모든 의견이나 제안을 환영합니다.
    예제 코드 또는 링크를 제공해 주시면 감사하겠습니다.

  • 답변

    1

    제 생각에는 SingleInstance 응용 프로그램을 찾고 있으며 일부 백그라운드 프로세스를 수행하기 위해 종료하지 않으시겠습니까?

    제 3의 질문이지만, 첫 번째와 두 번째 질문에 대해 곧바로 대답 해 드리겠습니다.

    public class Main extends Application { 
    
        @Override 
        public void start(Stage primaryStage) throws Exception{ 
    
         checkIfRunning(); //Check first if the Application is aready running. 
    
         Parent root = FXMLLoader.load(getClass().getResource("fxml/main.fxml")); 
         primaryStage.setTitle("Hello World"); 
         Scene scene = new Scene(root); 
         primaryStage.setScene(scene); 
         primaryStage.show(); 
    
         Platform.setImplicitExit(false); //Prevent the Application from Terminating when it's close 
    
        } 
    
        public static void main(String[] args) { 
         launch(args); 
        } 
    
    
        /**The function for checking if the application is already running start here**/ 
        private static final int PORT = 9999; 
        private static ServerSocket socket; 
        private static void checkIfRunning() { 
         try { 
          //Bind to localhost adapter with a zero connection queue 
          socket = new ServerSocket(PORT,0, InetAddress.getByAddress(new byte[] {127,0,0,1})); 
         } 
         catch (BindException e) { 
          System.err.println("Application already running."); 
          System.exit(1); 
         } 
         catch (IOException e) { 
          System.err.println("Unexpected error when checking if application is already running."); 
          e.printStackTrace(); 
          System.exit(2); 
         } 
        } 
    } 
    

    시도해보십시오. 응용 프로그램을 닫으면 여전히 실행 중이므로 두 개 이상의 응용 프로그램을 시작할 수 없습니다.

    +0

    제 3의 질문은 응용 프로그램의 매개 변수 (또는 데이터)를 전달하는 방법이었습니다. 아이디어가 소켓을 사용하기 때문에 데이터를 보내고 받기 위해 소켓을 사용합니다. – Happy

    +0

    또는 소켓 또는 데이터 그램을 사용하여 응용 프로그램간에 통신 할 수 있습니다. – Polar