路径独立的Derby网络数据库服务

时间:2015-09-22 08:16:34

标签: java database jdbc server derby

我有一个服务器端应用程序,它使用以下URL创建数据库:

jdbc:derby:abssposdb;create=true

这将在项目文件夹中创建derby数据库。 我正在使用以下代码

为此数据库启动网络服务器
String[] args = {"start", "-h", "0.0.0.0", "-p", "4321"};
    try {
        org.apache.derby.drda.NetworkServerControl.main(args);
    } catch (Exception e) {

    }

现在,为了连接到这个数据库,我必须使用的URL是

jdbc:derby://192.168.1.12:4321/C:\Users\mtahm\Documents\NetBeansProjects\derbyEmbeded\abssposdb

正如您所看到的,必须指定整个路径。这是一个问题,因为对我来说因为我需要使用下面的URL访问这个derby服务器,所以整个应用程序将是动态的

jdbc:derby://192.168.1.12:4321/abssposdb

我猜某种背景服务或类似的东西将是必需的,但我不知道如何做到这一点。有这样做的技术吗?我的整个项目都是Java。

2 个答案:

答案 0 :(得分:0)

不要使用“jdbc:derby:abssposdb; create = true”创建数据库,因为它旨在创建嵌入式数据库。服务器不知道您正在创建的嵌入式数据库,这就是您需要指定此数据库的完整路径的原因。 创建可通过简单名称访问的DB所需要做的就是使用特殊的连接URL连接到此服务器(在您通过NetworkServerControl.main()启动之后),如下所示:

jdbc:derby://192.168.1.12:4321/abssposdb;create=true

请注意此网址末尾的“create = true”,这将创建可在网址jdbc:derby://192.168.1.12:4321/abssposdb上访问的数据库(如果它尚不存在),或者只是连接到它存在。

答案 1 :(得分:0)

Derby Network Server通过针对derby.system.home(Derby Network Server的“home”目录)解释这些相对路径名来查找以相对路径名命名的数据库。

有关derby.system.home的更多信息,请参阅:http://db.apache.org/derby/docs/10.11/ref/rrefproper32066.html

您可以通过控制Derby网络服务器的derby.system.home值来控制连接URL的数据库名称部分的解释。这里有更多信息:http://db.apache.org/derby/docs/10.11/devguide/cdevdvlp34964.html#cdevdvlp34964

所以:你的数据库可以放在任何地方;您的Derby Network Server可以在任何计算机上运行,​​并且可以为该计算机上的任何数据库提供服务请求。但是,要将这些内容组合在一起,您需要为要存储数据库的位置建立一些组织和策略,并且通过使用诸如derby.system.home之类的约定,您可以确保您的数据库不会遍布各处。 ,但收集在一个位置,供您查找何时需要备份,升级等等。