我创建了一个Java应用程序,它基本上是MySQL数据库的接口。它有助于组织和跟踪数据。我们在我的工作场所使用它没有问题 - 我已经将它作为jar文件从Eclipse导出,并为每个人提供了这个jar文件的副本。
现在我们希望将此软件提供给其他工作场所。问题是数据库的URL,用户名和密码是在应用程序中硬编码的。我想为它创建一个设置过程,以便当有人下载它时,它们会通过一个向导下载MySQL并在任何地方设置数据库。然后,此人可以将jar文件分发给工作场所中的每个人,而无需他们进行设置,因为每个人都将访问同一个数据库。
此过程必须以某种方式保存数据库URL,用户名和密码,以便工作场所中的人员可以从任何计算机运行jar。这让我觉得它们应该保存在jar中......是我需要的属性文件吗?我可以在jar中放置一个Properties文件,并允许在设置过程中对其进行编辑吗?
非常感谢任何指导,我对此非常陌生!
=============================================== ===================================
编辑:我想我现在要做的就是让用户安装MySQL并自己设置数据库。正如下面的答案所示,拥有这个自动可能比它的价值更麻烦,因为我必须处理每个人的不同平台,设置数据库的偏好,安全问题等。一旦他们这样做,他们将只下载我的jar文件。我已经在我的jar文件中添加了一个属性文件来存储数据库URL,用户名和密码。此文件最初为空,因此当用户第一次运行jar时,程序将尝试访问属性文件,看它是否为空,并提示用户输入此信息。然后,它将从jar中提取属性文件,编辑其信息,并将属性文件粘贴回jar中。然后,该人应该能够将更新后的jar分发给他们的同事,并且他们都应该能够打开它而无需提供该信息。我有这个部分几乎工作了。我还将添加“重新配置”程序的能力 - 如果用户移动他们的数据库 - 通过调用相同的方法(他们将再次分发新版本的程序)。
接下来我想通过加密或混淆代码来尝试以某种方式保护属性文件(尽管我认为这只适用于类文件而不是文本文件......?)。我担心的是,工作场所中的任何人都可以解开它并打开属性文件,然后使用URL,用户名和密码自行访问数据库并造成损害。理想情况下,除了程序本身之外,没有人能够解开它。
如果有人对我的方法有其他疑虑,请告诉我!
答案 0 :(得分:0)
首先,在工作场所的中心位置设置数据库以便不同用户可以访问它并不是一件容易的事。此外,还存在第一个用户设置它然后将应用程序重新分发给其他人的问题。
回答技术问题 - 最简单的方法是解开已知位置,在该位置编辑属性文件,然后重新装罐到新文件,可能带有特定于该工作区的后缀。
答案 1 :(得分:0)
您可以将属性文件保存在由System.getProperty("user.home)
获取的用户主目录的子目录中。另外,请查看Apache Commons Configuration library。
答案 2 :(得分:0)
看看HSQLDB。它是一个重量较轻的数据库,易于设置。如果db不存在,你可以将它配置给我,如果不存在则将它配置给我。但是,如果您需要像MySQL这样的东西,并希望有许多用户从不同的工作站连接到它,我建议不要通过安装过程下载和配置它。将会有很多网络和安全问题。作为旁注,属性文件是一个好主意。
This is a link that explains some of the security concerns to think about。此外,考虑到这一点,用户可能没有必要的权限来设置/配置数据库服务器。从长远来看,允许它们设置数据库服务器并让它们在应用程序类路径中放置属性文件可能更安全/更容易。
作为附注,您是否考虑过将其作为Web应用程序?这可能会让事情变得更简单,人们不必下载任何东西,大多数用户都没有设置。
答案 3 :(得分:0)
如何部署应用程序?
如果您正在使用Webstart,您可以在jnlp-File中定义属性并使用System.getProperties(...)访问它们;