【问题标题】:Deliver a java application that starts MySQL (self-contained app)交付一个启动 MySQL 的 java 应用程序(自包含应用程序)
【发布时间】: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


【解决方案1】:

你为什么要让你的生活变得艰难?不要使用 MySQL,而是使用Embedded Database,例如:

【讨论】:

  • :谢谢回复。我以前用过嵌入式数据库。我认为它更适合应用程序的使用,而不是最终用户数据的存储。我也担心这个事实他们从文本脚本中重新创建所有内容。无论如何,这是一个特例。我想向第三方提供一个在计算机上“知识”不多的小工具,并且我觉得使用 MySQL 更安全。虽然我可能很担心......但我需要的是我希望是可能的
  • 我认为有几个选项出现在我的脑海中 1) 为他们进行远程安装,因为这是一次性任务或更好的任务 2) 出于可用性和安全原因,为他们找到一个托管站点作为托管相当便宜,其中一些甚至可以访问它们的 phpAdmin 帐户。
【解决方案2】:

检查MySQL Connector/MXJ。您可以从here 下载它。它可以完全控制数据库的启动和停止。下载并解压缩 zip 后,检查“src”文件夹下的 ConnectorMXJObjectTestExample.java。它会给你完整的想法。

【讨论】:

  • +1。这很有趣。我尝试了这个例子,mysql似乎启动了,但我找不到我的表。它似乎以某种方式创建了自己的数据库。必须更多地研究这个,但是有你以前用过这个吗?我看到它在用户指定的目录中创建了许多脚本和文件以及 exe 作为“数据库”目录
  • 另外好像上手的mysqld是不能停止而是手动杀死的
猜你喜欢
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2020-12-10
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多