Java配置存储选择

时间:2015-04-01 13:04:28

标签: java xml sqlite ssh properties

首先,我是作为作家的新人,但不是读者。我使用stackoverflow多年来找到很多有用的信息,但现在我决定加入社区。

现在我的问题是关于Java配置存储的选择。

申请

目前,我正在为自己的Java(FX)项目工作。 Java应用程序将在几台台式机上使用。该应用程序的目标是通过SSH(例如服务器)打开/关闭Linux设备。

我想让用户可以添加5/10设备,其中包含设备信息(名称和IP),开机命令的SSH凭据和关机命令的SSH凭据(用户,主机,密钥) ,port,timeout,command)。

将有一个JavaFX GUI,该GUI将有一个菜单栏,其中包含一个名为 Devices 的菜单,用于选择,添加,编辑或删除设备。在GUI的中心将有2个按钮,它们将用于电源开/关命令(或开关)。

设计

  • 编程语言是Java。
  • GUI基于JavaFX。
  • 对于电源开/关命令,我使用命令设计模式。

存储

我尝试了不同的存储选项(SQLite,属性和XML)来存储设备的信息。但我没有发现哪种选择在这种情况下最适合。

SQLite存储对此感觉太大了。

如果我要使用分离的属性/ XML存储,那么大约需要5/10个不同的属性/ XML文件。此外,应用程序必须在这些文件之间切换。

如果我决定使用多个属性文件,文件的结构将如下所示:

device.name = Server
device.host = host.com

power_on.key = /path/to/rsa
power_on.user = user
power_on.host = host.com
power_on.port = 22
power_on.timeout = 10000
power_on.command = execute power on command

power_off.key = /path/to/rsa
power_off.user = user
power_off.host = host.com
power_off.port = 22
power_off.timeout = 10000
power_off.command = execute power off command

如果我决定使用多个XML文件,文件的结构将如下所示:

    <device>
        <name>Server</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>

如果我决定使用一个属性文件,文件的结构将如下所示:

# Device 1
server.device.name = Server
server.device.host = host.com

server.power_on.key = /path/to/rsa
server.power_on.user = user
server.power_on.host = host.com
server.power_on.port = 22
server.power_on.timeout = 10000
server.power_on.command = execute power on command

server.power_off.key = /path/to/rsa
server.power_off.user = user
server.power_off.host = host.com
server.power_off.port = 22
server.power_off.timeout = 10000
server.power_off.command = execute power off command

# Device 2
pc.device.name = PC
pc.device.host = host.com

pc.power_on.key = /path/to/rsa
pc.power_on.user = user
pc.power_on.host = host.com
pc.power_on.port = 22
pc.power_on.timeout = 10000
pc.power_on.command = execute power on command

pc.power_off.key = /path/to/rsa
pc.power_off.user = user
pc.power_off.host = host.com
pc.power_off.port = 22
pc.power_off.timeout = 10000
pc.power_off.command = execute power off command

如果我决定使用一个XML文件,文件的结构将如下所示:

<devices>
    <device>
        <name>Server</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
    <device>
        <name>PC</name>
        <host>host.com</host>
        <commands>
            <powerOn>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power on command</command>
            </powerOn>
            <powerOff>
                <key>/path/to/rsa</key>
                <user>user</user>
                <host>host.com</host>
                <port>22</port>
                <timeout>10000</timeout>
                <command>execute power off command</command>
            </powerOff>
        </commands>
    </device>
</devices>

问题

我的问题是;哪种存储选择(和/或设计模式)在这种情况下最适合?这让我很困惑,因为我尝试了不同的东西而没有任何好的解决方案。

我希望你们能帮我解决这个问题。欢迎所有反馈,建议等。提前谢谢!

1 个答案:

答案 0 :(得分:0)

您有几种选择。如您所述,属性文件是最简单的方法。不需要额外的库,一切都已经在JDK中了。

另一方面,如果你想要更多,你可以使用

  • YAML
  • JS​​ON
  • XML
  • 完全自定义的东西

如果您的配置经常手工编辑,我会反对XML。我个人的偏好是将配置存储在单个json文件中,每个设备都有自己的dict。 JSON还有很好的编辑和工具支持。