簡體   English   中英

從 Spring 啟動應用程序啟動 jar 應用程序

[英]Start jar app from Spring Boot application

我有兩個java 應用程序,

  1. Spring 應該啟動的引導應用程序
  2. 第二個應用程序 java 應用程序通過 /start-app,此應用程序應與 spring-boot 應用程序並行運行

該過程正在啟動,但似乎處於空閑模式。 關閉 Spring 引導應用程序后,java-app.jar 開始正常工作:-/。

謝謝你。

@RestController
@RequestMapping(value = "/")
public class Controller {

    @PostMapping(value = "/start-app", produces = "application/json")
    public void startJavaApp(@RequestBody ObjectString objectString) throws IOException {

        Process proc = Runtime.getRuntime().exec("java -jar java-app.jar");

        CompletableFuture.runAsync(()-> {
            try {
                proc.waitFor();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        
    }
}

我在這里找到了適合我的解決方案

https://www.infoworld.com/article/2071275/when-runtime-exec---won-t.html

@RestController
@RequestMapping(value = "/")
public class Controller {

    @PostMapping(value = "/start-app", produces = "application/json")
    public void startJavaApp(@RequestBody ObjectString objectString) throws IOException {

        try
        {

            Process proc = Runtime.getRuntime().exec("run.bat");
            InputStream stderr = proc.getErrorStream();
            InputStreamReader isr = new InputStreamReader(stderr);
            BufferedReader br = new BufferedReader(isr);
      
            CompletableFuture.runAsync(() -> {
                try {
                    //logger.info("Java java-app stream has been started");
                    String line = null;
                    while ( (line = br.readLine()) != null)
                        logger.info(line);
                        System.out.println(line);
                } catch (IOException e) {
                    e.printStackTrace();
                }

            });

        } catch (Throwable t)
        {
            t.printStackTrace();
        }
        
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM