java - 如何从另一个java应用程序运行一个java应用程序并在主程序返回后保持运行?

标签 java exec apacheds

我正在尝试从我的 Java 应用程序运行 ApacheDS 实例。
我使用 ScriptWrapper 类的 run() 方法来执行 ApacheDS 附带的脚本来运行它:

public class ScriptWrapper implements Serializable {
    private String scriptPath;

    protected Process run(List<String> params) throws IOException {
        LOGGER.debug("Executing script="+scriptPath);
        params.add(0, scriptPath);

        if(workDir != null) {
            return Runtime.getRuntime().exec(params.toArray(new String[params.size()]), envp.toArray(new String[envp.size()]), new File(workDir));
        } else {
            return Runtime.getRuntime().exec(params.toArray(new String[params.size()]));
        }
    }
}

但问题是,当运行此应用程序的 tomcat 终止和/或 ScriptWrapper 被垃圾收集时,ApacheDS 的实例也会终止。如何让它保持活力?

编辑:感谢您的回答。我决定以不同的方式解决这个问题,并使用二进制 ApacheDS 安装附带的脚本守护进程。

最佳答案

您的主进程应该在结束之前等待它的子进程。

对象 Process 有一个方法 waitFor()。您可以创建一个新线程,然后运行并等待任何其他进程。

关于java - 如何从另一个java应用程序运行一个java应用程序并在主程序返回后保持运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16606583/

相关文章:

java - 自定义 ListView 未填充

java - java中的XML解析: ignore tags as value

java - 具有公共(public)字符串数组的静态内容的非静态字段

c - fork() 和 exec() : parameter with space

未找到 PHP ffmpeg

java - 从java以编程方式将apacheds数据导出和导入到LDIF

java - 泛型混淆

Python:ksh函数的返回输出

java - 如何在 LDAP 目录服务器模式中定义对象类 o 和 ou?

linux - 在 LDAP 中获取用户所属的所有组