繁体   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