【发布时间】:2011-10-10 15:55:15
【问题描述】:
我有一个(对我来说很复杂的)问题,但我会尝试仅解决此线程中的 1 个问题。
我有一个 Java 应用程序,它在后端有一个 MySQL 数据库。
我希望能够通过安装程序优先提供应用程序和数据库(这也是我目前没有解决方案的部分)。
无论如何,现在的问题是我的偏好是不应该将 MySQL 作为服务安装。
我的原因是我不想修改机器,我的应用程序将被部署。
我更喜欢提供“独立”的应用程序。
因此,如果 MySQL 没有作为服务安装,那么它必须以某种方式启动。
我知道我可以使用以下方法独立启动 MySQL:
mysqld --standalone --console
在这种情况下,会打开一个新的命令行窗口并运行 MySQL(我在开发/代码测试期间一直使用它)。
我不知道在部署应用程序后如何实现相同的效果(并在运行时通过代码启动 MySQL)。
我想过使用Runtime 并执行以下操作:
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("PATH\\mysqld --standalone --console"); //PATH is of course the appropriate path to MySQL installation
但这似乎没有任何作用。它只是挂着。
理想情况下,我想启动 MySQL 并且也 没有打开 concole。
我的问题有解决方案吗?
【问题讨论】:
-
那为什么要专门使用MySQL呢?您可以使用嵌入式数据库...在本机 Java 中有很多可供选择,它们提供与 MySQL 相同的功能...
-
是的,我知道。嵌入式数据库的问题是它们保存所有数据以在用户可能意外删除或损坏的文件中重建内存数据库。我想确保这不会发生。否则,是的,例如HSQL 将是一个选择
-
您还必须处理其他问题,例如已被另一个 MySql 安装使用的端口等。对于自包含应用程序,嵌入式数据库是更好的解决方案。
-
不,没关系。这是一个特例。 1)没有其他MySQL安装 2)如果端口不是空闲的,我相信有办法将端口更改为不是默认的
-
MySQL 还将数据存储在磁盘上的文件中,用户可能会意外删除或损坏这些文件。我不明白 MySQL 如何让它更安全......
标签: java mysql jakarta-ee installation