Derby documentation说
derby.drda.host =主机名
该属性侦听主机以获取网络连接,即接受 来自他们的联系。如果指定0.0.0.0,则来自任何连接 主持人被接受。
现在,我有三台远程计算机,hostA
,hostB
,hostC
。
hostA
上运行。hostA
,hostB
,hostC
所以,我写了
props.setProperty("derby.drda.host", "hostA hostB hostC");
然而,这不起作用。 还有其他方法吗?
修改
当我将属性设置为
时props.setProperty("derby.drda.host" , "hostA");
然后hostB
和hostC
不能够连接到服务器。他们低于例外
java.sql.SQLNonTransientConnectionException:java.net.ConnectException :错误连接到端口8,888上的服务器hostA与消息 连接被拒绝:连接。
但是,当我将属性设置为
时props.setProperty("derby.drda.host" , "0.0.0.0");
然后所有主机(hostA
,hostB
,hostC
)都能够连接到服务器。
答案 0 :(得分:1)
我相信你误解了这个属性的用途。如果您有多个网络接口,那么您可以告诉Derby服务器的哪个IP接受连接。 (许多服务器有多个网卡,或者同时连接到多个网络,因此有多个IP)。
默认设置0.0.0.0
表示它应该接受在任何服务器的IP上请求的任何连接。如果您将此值设置为0.0.0.0
以外的值,则只会侦听仅针对该IP的连接。
这并不限制基于 IP的客户端连接。
我相信您需要拥有以下内容:
System.setProperty("derby.drda.startNetworkServer", "true");
为了将Derby作为网络服务器启动(而不是仅仅在JVM中运行它,因为我认为默认行为是这样)。