Saving properties for Java application during setup
我创建了一个Java应用程序,它基本上是一个MySQL数据库的接口。它有助于组织和跟踪数据。我们在我的工作场所使用它没有问题——我已经将它作为JAR文件从Eclipse中导出,并为每个人提供了这个JAR文件的副本。
现在,我们想让这个软件可用于其他工作场所。问题是数据库的URL、用户名和密码在应用程序中是硬编码的。我想为它创建一个设置过程,这样当有人下载它时,他们会通过一个向导来下载MySQL并在他们选择的任何地方设置数据库。然后,该人员可以将JAR文件分发给其工作场所中的每个人,而无需进行设置,因为每个人都将访问同一个数据库。
这个过程必须以某种方式保存数据库的URL、用户名和密码,以便工作场所的人员可以从任何计算机上运行JAR。这让我觉得他们应该被保存在罐子里…是我需要的属性文件吗?我可以在jar中放置一个属性文件,并允许在安装过程中对其进行编辑吗?
任何指导都非常感谢,我对这个很陌生!
==============================================================
编辑:我想我现在要做的是让用户自行安装MySQL并建立他们的数据库。正如下面的答案所建议的那样,拥有这个自动系统可能比它的价值更麻烦,因为我必须处理每个人的不同平台、设置数据库的首选项、安全问题等。一旦他们这样做了,他们就会下载我的JAR文件。
我在JAR文件中添加了一个属性文件来存储数据库的URL、用户名和密码。这个文件最初是空的,所以当用户第一次运行JAR时,程序将尝试访问属性文件,查看它是否为空,并提示用户输入这个信息。然后,它将从jar中提取属性文件,在其信息中进行编辑,并将属性文件粘贴回jar中。然后,这个人应该能够将更新后的JAR分发给他们的同事,并且他们都应该能够在不需要提供这些信息的情况下打开它。我已经把这部分做好了。我还将添加"重新配置"程序的功能,以防用户移动数据库,通过调用相同的方法(他们将再次分发程序的新版本)。
接下来,我想尝试通过加密或模糊代码来保护属性文件(尽管我认为这只适用于类文件而不是文本文件…?).I关注的是,工作区中的任何人都可以取消对它的连接并打开属性文件,然后使用URL、用户名和密码访问自己的数据库并造成损坏。理想情况下,除了程序本身,没有人能够取消它。
如果有人对我的方法有其他顾虑,请告诉我!
如何部署应用程序?
如果您使用的是WebStart,那么可以在JNLP文件中定义您的属性,并使用System.GetProperties(…)访问它们;
看看hsqldb。它是一个重量较轻的数据库,依靠容易设置。如果数据库不存在,可以将其配置给我;如果存在,可以将其配置给我们。但是,如果您需要类似于MySQL的东西,并且希望有许多用户从不同的工作站连接到它,我不建议通过安装过程下载和配置它。会有很多网络和安全问题。作为旁注,属性文件是个好主意。
这是一个可以解释一些需要考虑的安全问题的链接。另外,再考虑一下,用户可能没有设置/配置DB服务器所需的权限。从长远来看,允许他们设置DB服务器,并让他们在应用程序类路径中放置属性文件,对您来说可能更安全/更容易。
作为附带说明,您是否考虑将其作为Web应用程序?这会使事情变得更简单,人们不必下载任何东西,也不会为大多数用户设置任何设置。
您可以将属性文件保存在用户主目录的子目录中,由
首先,在工作场所的中心位置设置一个数据库,以便不同的用户可以访问它,这并不容易。另外,还有一个问题,第一个用户设置它,然后将应用程序重新分发给其他人。
回答技术问题-最简单的方法是取消对已知位置的jar,在该位置编辑属性文件,然后重新jar到一个新文件,可能带有特定于该工作场所的后缀。