鍍金池/ 問(wèn)答/Java  Linux  HTML/ Electron或node如何更好的調(diào)用jar包啟動(dòng)一個(gè)spring boot的

Electron或node如何更好的調(diào)用jar包啟動(dòng)一個(gè)spring boot的服務(wù)

我在開(kāi)發(fā)一個(gè)Electron桌面應(yīng)用,其中需要連接mysql或oracle數(shù)據(jù)庫(kù),我的方案是用spring boot寫了一個(gè)restful API服務(wù)器,然后在Electron上以網(wǎng)絡(luò)請(qǐng)求的方式來(lái)調(diào)用這個(gè)服務(wù),現(xiàn)在我希望通過(guò)我的應(yīng)用來(lái)任意啟動(dòng)或關(guān)閉這個(gè)服務(wù),我用maven將這個(gè)restful服務(wù)打成了個(gè)jar包,我該如何啟動(dòng)它呢?

我試著用了nodejs 的child_process 模塊,以命令行的方式來(lái)啟動(dòng)這個(gè)jar包,代碼如下:

var childProcess = require('child_process');
var options = {maxBuffer:1024*1024*100, encoding:'utf8', timeout:5000};
var child = childProcess.exec('java -jar *******.jar', options, function (error, stdout, stderr) {
    if (error) {
        console.log(error.stack);
        console.log('Error Code: '+error.code);
        console.log('Error Signal: '+error.signal);
    }
    console.log('Results: \n' + stdout);
    if (stderr.length){
        console.log('Errors: ' + stderr);
    }
});

但是我認(rèn)為這種方式是拿來(lái)跑命令的,并不是拿來(lái)像我這樣啟動(dòng)一個(gè)java服務(wù)的,所以效果非常不理想,當(dāng)前這樣子情況是,服務(wù)可以啟動(dòng),但是是在我已經(jīng)跑了回調(diào)后才真實(shí)啟動(dòng),并可以接受我的調(diào)用和連接的,所以感覺(jué)服務(wù)啟動(dòng)延遲了,而且由于這是一個(gè)服務(wù),啟動(dòng)日志量很大,所以會(huì)報(bào)錯(cuò)Error: stdout maxBuffer exceeded,

所以nodejs應(yīng)該如何去啟動(dòng)一個(gè)jar包服務(wù),或者我這樣的方案是不正確的,我應(yīng)該如何實(shí)現(xiàn)更好的連接oracle數(shù)據(jù)庫(kù)或mysql數(shù)據(jù)庫(kù),以什么樣的方案去連接?

回答
編輯回答
嘟尛嘴

啟動(dòng)java項(xiàng)目特別是spring boot,就是執(zhí)行命令的。
你所說(shuō)的啟動(dòng)一個(gè)java服務(wù)具體是想如何啟動(dòng)?

2017年3月22日 02:06