2015-07-22 67 views
2

如何將Java應用程序綁定到MySQL數據庫當前運行的端口以模擬MySQL數據庫?Java中的MySQL仿真器

我正在開發一個認證系統和MySQL數據庫之間的中間件。到目前爲止所開發的所有應用程序都直接連接到MySQL數據庫,我的目標是開發一個將模擬數據庫的Java應用程序:接收傳入的請求(查詢),執行一些操作(排隊,檢查和等等),將請求發送到MySQL數據庫,接收響應,並將響應發回給調用者。

我無法找到MySQL請求格式的詳細信息。綁定到特定端口後,如何解析傳入的MySQL請求?在這個過程中連接保持活躍也很重要,所以其他應用程序不認爲存在連接問題。

+0

您可以選擇首先創建一個端口3306代理服務器,並通過發送通知將mysql實際掛在另一個端口上。這將是一箇中介。當然,慢慢了解協議加班。 – Drew

+0

我發現幾個代理應用程序提供客戶端應用程序和mysql數據庫之間的橋樑,但它們都不提供開放的API來手動執行操作。它們都支持一些特定的工具(負載均衡,結果過濾等)。我確實經歷了一些源代碼文件,但是mysql主要是用C編寫的,需要一段時間才能掌握源代碼的細節。我有興趣找到一個攔截器API來解析/重定向傳入的請求。 – rokcium119

+0

我在說他應該寫一個小代理服務器@BigOnn – Drew

回答

0

我決定自己實現MySQL連接協議,並使用MySQL Internals - Connection Phase作爲參考。查看連接器的現有開源實現有助於瞭解細節。實質上,我正在用Java實現一個非常基本的定製MySQL代理服務器。

0

只要MySQL不在同一臺機器上使用它,您可以輕鬆地將您的Java應用程序綁定到端口3306(MySQL的默認端口號)。

但是,爲了理解通過該端口使用的協議,您可能需要深入挖掘MySQL源代碼。 MySQL有'Guided tour of the MySQL source code'這可能是一個很好的開始。