2014-12-11 71 views
0

我在我的应用程序中配置了嵌入式模式,并允许其他客户端将我的嵌入式德比连接到网络服务器模式。 (-Dderby.drda.startNetworkServer = true -Dderby.drda.portNumber = 8233)德比似乎忽略端口重复

在我运行我的应用程序之前,我使用网络服务器模式derby加载了其他应用程序。问题在于德比使用与我的应用程序相同的端口8233。

其他有数据源的客户端表明我的应用程序的derby(嵌入式)放置数据,我无法在我的应用程序中获取数据。

我被封锁了很长时间,解决了这个问题,最后,我发现其他客户端放的数据是其他应用程序中的德比。

我认为... 在我的应用程序中加载嵌入式德比时,derby必须知道端口是否正在使用。 如果端口正在被其他应用程序使用,则必须在控制台中显示错误。但事实并非如此。你能解释一下吗?

感谢您的时间和精力......

回答

1

无论操作系统允许两个不同的进程,打开网络套接字,并接受相同的端口号的连接取决于许多不同的因素,包括:

  1. 哪个精确操作系统正在使用
  2. 被创建的网络配置(例如
  3. 详细当它被用于TCP套接字中设置的配置参数,是否毫安折角是多宿主,其确切IP地址掩码被绑定到插座等)

到这样的问题,典型的解决方案是选择一个不同的端口,其中一个你知道的其他应用程序没有使用。

这就是为什么Derby允许端口号易于配置的原因。

您可以针对您的情况使用该解决方案吗?

+0

感谢您的回复。我已经在我的应用程序中应用了独特的端口。但我想知道为什么德比没有给出错误,让我不要浪费时间。 – verystrongjoe 2014-12-11 14:54:33

+0

你没有说你在哪个操作系统上。某些操作系统允许多个服务器接受同一端口上的请求,并随机或通过循环过程向这些服务器提供连接。这对于例如想要提供负载平衡功能的Web服务器非常有用。正如你所注意到的那样,德比并不一定有用,但是这个决定有点出自德比的手中(尽管你可以在德比网站上登录一个增强请求来尝试改进) – 2014-12-11 18:13:05

+0

我的操作系统是一个Windows 7 。即使我给drba系统变量允许其他客户端连接,客户端也无法连接某些情况,因为连接被拒绝。但是我检查端口正在监听。所以我想我必须放弃德比的嵌入式模式。 – verystrongjoe 2014-12-11 18:29:42