从Java应用程序

时间:2017-07-17 18:23:03

标签: java windows mongodb

我正在开发一个小型Java程序,它使用MongoDB解析.txt文件并很好地显示信息以供分析。到目前为止,我不得不打开窗户上的cmd并运行线路" mongod"启动数据库(我在我的Windows环境变量中设置了Mongo,所以我没有路径到MongoDB安装)。然后我可以运行Java程序。要停止mongod我可以关闭我启动它的cmd窗口,或者我可以打开另一个cmd窗口并发出以下一系列命令:" mongo","使用admin",& #34; db.shutdownServer()"

我希望能够在我的Java程序中自动化mongod的初始化和终止,这样当我打开程序的jar时,服务器将自动启动,然后在程序关闭时停止。我知道在哪里需要插入执行这些命令的代码,我根本就不知道如何对它们进行编码。

到目前为止,这是我发现的:

涉及" Runtime.getRuntime()。exec("");" - 这适用于第一个命令" mongod"我相信" mongo"同样,但不是"使用admin"。我猜这是由于命令是单独发出的(而#34; mongo""使用admin"" db.shutdownServer()需要一起发出,顺序发布)或由于行中的空格"使用admin"。我还读到这种方法很粗糙,不应该使用。

涉及" ProcessBuilder"的建议 - 我真的不明白这种方法。此外,我在这种方法中遇到的所有建议都没有提到在命令中有空格,因此如果要采用这种方法,也需要弄清楚。

还有其他方法,或者我如何实施这两种方法中的一种?

1 个答案:

答案 0 :(得分:0)

p.isAlive()返回true。在毁灭之后()killall mongod警告说没有mongod存在

ProcessBuilder pb = new ProcessBuilder();
        pb.command("/XXXXX/mongo/bin/mongod", "--dbpath", "/XXXXX/mongo_data");
        Process p;
        try {
            p = pb.start();
            System.out.println(p.isAlive());
            p.destroyForcibly();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

<强> EIDT

如果您想进一步操作它们,也可以将标准流重定向到Java流。

您可以将所需的所有选项传递给构建器:

https://docs.mongodb.com/manual/reference/program/mongo/