2014-12-11 86 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