javaはcmd命令とmongodbスクリプトを実行します.
2445 ワード
出所:http://www.myexception.cn/database/646403.html
javaはcmdコマンドとmongodbスクリプトを実行します.
最近問題が発生したのは、Javaプログラムを使って実行中のMongodを閉じたいからです.
最初は強制終了プロセスのtaskillコマンドを使いたいですが、閉めれば再開に問題があります.
Mongoのjavaアプリでshutdown操作を実行したいです.コードは以下の通りです
そこで他の方法を考え始めました.oracleはシナリオを実行できると考えていますので、mongodbも脚本をサポートするべきだと思い、公式サイトに登録して驚きました.公式サイトでは中国語をサポートしています.そして确かにスクリプトが実行できるということを调べました.Ok、シナリオを书き始めます.脚本はjsで终わります.内容は以下の通りです
このようにすることで、実行中のモンスターを正常にクローズすることができます.しかし、javaファイルを使う必要があるという欠点があります.いいですよね.簡単になるために、他の方法を考えて、類似の操作を実現します.javaコードは以下の通りです
やっと一番便利に実行できました.
javaはcmdコマンドとmongodbスクリプトを実行します.
最近問題が発生したのは、Javaプログラムを使って実行中のMongodを閉じたいからです.
最初は強制終了プロセスのtaskillコマンドを使いたいですが、閉めれば再開に問題があります.
Mongoのjavaアプリでshutdown操作を実行したいです.コードは以下の通りです
Mongo m = new Mongo();
db = m.getDb("admin");
db.eval("db.shutdownServer");
// :
db.command("shutdown");
この場合、authが実行していないMongodはLocalhostで登録してshutdownを実行するしかないというヒントがあります.そこで他の方法を考え始めました.oracleはシナリオを実行できると考えていますので、mongodbも脚本をサポートするべきだと思い、公式サイトに登録して驚きました.公式サイトでは中国語をサポートしています.そして确かにスクリプトが実行できるということを调べました.Ok、シナリオを书き始めます.脚本はjsで终わります.内容は以下の通りです
db = connect("admin");
db.shutdownServer();
そしてjavaのコードは以下の通りです.String cmd = "D:/mongodb-win32-i386-1.8.2/bin/mongo --shell " + "D:/mongodb-win32-i386-1.8.2/123.js";
Runtime rt = Runtime.getRuntime();
String[] command = new String[]{"cmd.exe" , "/C" , cmd};
try {
rt.exec(command);
} catch (IOException e) {
e.printStackTrace();
}
monoを実行するとき--shellパラメータを持ってjsファイルの位置を指定できます.このようにすることで、実行中のモンスターを正常にクローズすることができます.しかし、javaファイルを使う必要があるという欠点があります.いいですよね.簡単になるために、他の方法を考えて、類似の操作を実現します.javaコードは以下の通りです
String cmd = "D:/mongodb-win32-i386-1.8.2/bin/mongo";
Runtime rt = Runtime.getRuntime();
String[] command = new String[]{"cmd.exe" , "/C" , cmd};
try {
Process process = rt.exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write("use admin;");
bw.write("
");
bw.flush();
bw.write("db.shutdownServer();");
bw.flush();
bw.close();
while((line = br.readLine()) != null){
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
BufferedWriterを使って出力ストリームを確立したら、コンソールに命令を出力するようにコマンドを実行することができます.加入した操作に注意しないと実行できません.やっと一番便利に実行できました.