Tomcat 配置多個資料源 (DataSource),每個資料源皆掛載 JDBMonitor 監控 SQL 執行狀況,共用同一 config.xml。啟動第二個資料源時拋出:
java.net.BindException: Address already in use: JVM_Bind
config.xml 設定 SocketDBListener 預設監聽埠 9527。SocketDBListener 綁定 9527,導致埠衝突。config1.xml、config2.xml、config3.xml…<!-- config1.xml -->
<listener class="com.jdbmonitor.SocketDBListener" port="9527" />
<!-- config2.xml -->
<listener class="com.jdbmonitor.SocketDBListener" port="9528" />
<!-- config3.xml -->
<listener class="com.jdbmonitor.SocketDBListener" port="3721" />
<Resource name="jdbc/DS1" ...>
<parameter>
<name>configFile</name>
<value>/path/to/config1.xml</value>
</parameter>
</Resource>
<Resource name="jdbc/DS2" ...>
<parameter>
<name>configFile</name>
<value>/path/to/config2.xml</value>
</parameter>
</Resource>
若監控端為集中式服務,可改用 單一 Collector 埠,各資料源以 JDBC URL 參數 或 MBean 區分來源,避免多埠管理負擔。