electron call java_Electron或node如何更好的调用jar包启动一个spring boot的服务

我在开发一个Electron桌面应用,其中需要连接mysql或oracle数据库,我的方案是用spring boot写了一个restful API服务器,然后在Electron上以网络请求的方式来调用这个服务,现在我希望通过我的应用来任意启动或关闭这个服务,我用maven将这个restful服务打成了个jar包,我该如何启动它呢?

我试着用了nodejs 的child_process 模块,以命令行的方式来启动这个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);

}

});

但是我认为这种方式是拿来跑命令的,并不是拿来像我这样启动一个java服务的,所以效果非常不理想,当前这样子情况是,服务可以启动,但是是在我已经跑了回调后才真实启动,并可以接受我的调用和连接的,所以感觉服务启动延迟了,而且由于这是一个服务,启动日志量很大,所以会报错Error: stdout maxBuffer exceeded,

所以nodejs应该如何去启动一个jar包服务,或者我这样的方案是不正确的,我应该如何实现更好的连接oracle数据库或mysql数据库,以什么样的方案去连接?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 `electron-builder` 来打包 Electron 应用,并将 Node.js 服务一起打包进去。 以下是一个使用 Node.js 官方镜像打包一个 Express 服务的示例: 1. 首先,安装 `electron-builder`: ```bash npm install electron-builder --save-dev ``` 2. 然后,在项目根目录下创建一个 `build` 目录,并在其中创建一个 `index.js` 文件,用于启动 Express 服务: ```javascript const express = require('express') const app = express() app.get('/', (req, res) => { res.send('Hello World!') }) app.listen(3000, () => { console.log('Example app listening on port 3000!') }) ``` 3. 在项目根目录下创建一个 `package.json` 文件,用于配置打包相关信息: ```json { "name": "electron-express", "version": "1.0.0", "main": "main.js", "scripts": { "start": "electron .", "build": "electron-builder" }, "dependencies": { "electron": "^12.0.0", "express": "^4.17.1" }, "devDependencies": { "electron-builder": "^22.10.5" }, "build": { "appId": "com.example.electron-express", "productName": "Electron Express", "directories": { "output": "dist" }, "files": [ "build/**/*", "package.json" ], "extraResources": [ { "from": "node_modules/express/**/*", "to": "app/node_modules/express" } ], "mac": { "category": "public.app-category.developer-tools", "target": { "target": "default", "arch": [ "x64" ] } }, "win": { "target": { "target": "nsis", "arch": [ "x64" ] } } } } ``` 在 `package.json` 文件中,我们指定了 `express` 和 `electron-builder` 作为依赖项,并将 `build` 目录中的文件和 `package.json` 文件包含在打包文件中。我们还使用 `extraResources` 属性将 `express` 模块包含在 Electron 应用程序中。 4. 最后,在项目根目录下创建一个 `main.js` 文件,用于启动 Electron 应用程序和 Node.js 服务: ```javascript const { app, BrowserWindow } = require('electron') const path = require('path') const url = require('url') let mainWindow function createWindow() { mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }) mainWindow.loadURL('http://localhost:3000') mainWindow.on('closed', function () { mainWindow = null }) } app.on('ready', createWindow) app.on('window-all-closed', function () { if (process.platform !== 'darwin') { app.quit() } }) app.on('activate', function () { if (mainWindow === null) { createWindow() } }) const express = require('./build/index') express() ``` 这个文件启动 Electron 应用程序并加载 `http://localhost:3000` 这个 URL,在应用程序启动后会自动开始运行 `index.js` 文件中定义的 Express 服务。 5. 最后,在命令行中执行 `npm run build` 命令,即可将 Electron 应用程序和 Node.js 服务一起打包为可执行文件。 打包完成后,在 `dist` 目录下可以找到打包好的可执行文件。运行该文件即可启动 Electron 应用程序并访问 Express 服务

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值