0

我创建了一个基本上是 MySQL 数据库接口的 Java 应用程序。它有助于组织和跟踪数据。我们在我的工作场所使用它没有问题 - 我已经从 Eclipse 将它导出为一个 jar 文件,并给每个人一个这个 jar 文件的副本。

现在我们想让这个软件可用于其他工作场所。问题是数据库的 URL、用户名和密码在应用程序中是硬编码的。我想为它创建一个设置过程,这样当有人下载​​它时,他们会通过一个向导下载 MySQL 并在他们选择的任何地方设置数据库。然后,此人可以将 jar 文件分发给他们工作场所的每个人,而无需他们进行设置,因为每个人都将访问同一个数据库。

这个过程必须以某种方式保存数据库 URL、用户名和密码,以便工作场所的人可以从任何计算机运行 jar。这让我认为它们应该保存在 jar 中......是我需要的属性文件吗?我可以在 jar 中放置一个属性文件并允许在设置过程中对其进行编辑吗?

非常感谢任何指导,我对此很陌生!

==================================================== =================================

编辑:我想我现在要做的是让用户安装 MySQL 并自己设置他们的数据库。正如下面的答案所建议的那样,拥有这个自动可能比它的价值更麻烦,因为我必须处理每个人的不同平台、设置数据库的偏好、安全问题等。一旦他们这样做,他们只会下载我的jar 文件。

我在 jar 文件中添加了一个属性文件来存储数据库 URL、用户名和密码。这个文件最初是空的,所以当用户第一次运行jar时,程序会尝试访问properties文件,看到它是空的,并提示用户输入这个信息。然后它将从 jar 中提取属性文件,编辑它们的信息,并将属性文件放回 jar 中。然后,该人应该能够将更新的 jar 分发给他们的同事,并且他们都应该能够打开它而无需提供该信息。我的这部分几乎可以工作了。我还将添加“重新配置”程序的能力——以防用户移动他们的数据库——通过调用相同的方法(他们将再次必须分发新版本的程序)。

接下来我想尝试通过加密或混淆代码以某种方式保护属性文件(尽管我认为这仅适用于类文件而不适用于文本文件......?)。我担心的是,工作场所的任何人都可以将其解压缩并打开属性文件,然后使用 URL、用户名和密码自行访问数据库并造成损坏。理想情况下,除了程序本身之外,没有人能够解压它。

如果有人对我的方法有其他疑虑,请告诉我!

4

4 回答 4

0

首先,在工作场所的中心位置建立数据库以供不同用户访问并非易事。此外,还有第一个用户设置它然后将应用程序重新分发给其他人的问题。

回答技术问题 - 最简单的方法是解压缩到已知位置,在该位置编辑属性文件,然后重新 jar 到一个新文件,可能带有特定于该工作场所的后缀。

于 2013-02-24T01:38:26.430 回答
0

您可以将属性文件保存在用户主目录的子目录中,由System.getProperty("user.home). 另外,请查看Apache Commons 配置库

于 2013-02-24T01:41:47.073 回答
0

看看HSQLDB。这是一个重量更轻的数据库,易于设置。如果它不存在,您可以将它配置给我,如果它存在,我们可以配置它。但是,如果您需要 MySQL 之类的东西,并且希望有许多用户从不同的工作站连接到它,我不建议您通过安装过程下载和配置它。会有很多网络和安全问题。作为旁注,属性文件是一个好主意。

这个链接解释了一些需要考虑的安全问题。此外,再考虑一下,用户可能没有必要的权限来设置/配置数据库服务器。从长远来看,允许他们设置数据库服务器并让他们在您的应用程序类路径中放置一个属性文件可能对您来说更安全/更容易。

附带说明一下,您是否考虑过将其作为 Web 应用程序?这可以让你的事情变得更简单,人们不必下载任何东西,而且大多数用户都不需要设置。

于 2013-02-24T01:46:07.533 回答
0

你如何部署你的应用程序?

如果您使用 Webstart,您可以在 jnlp 文件中定义您的属性并使用 System.getProperties(...);

于 2013-02-24T01:50:27.120 回答