我的團隊使用純Java(無連接池)和JTDS驅動程序構建了一個Java服務中的Windows服務,該服務連接到Windows 2003 Server中的SQL Server 2005。Windows 2003中JDBC連接可用的套接字數量
一段時間後,打開到數據庫的連接的處理方法先從以下堆棧跟蹤引發異常:
java.net.BindException: Address already in use: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl .java:305)
at java.net.PlainSocketImpl.connectToAddress(PlainSoc ketImpl.java:171)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.j ava:158)
at java.net.Socket.connect(Socket.java:452)
at java.net.Socket.connect(Socket.java:402)
at java.net.Socket.<init>(Socket.java:309)
at java.net.Socket.<init>(Socket.java:124)
雖然程序員們小心關閉連接時,他們做的東西是不會對。
目前,我們解決了切換到命名管道協議的問題(因爲它們都在同一臺機器上),但這是一個臨時解決方案。
我已經使用了這個問題,似乎我們應該使用一些連接池庫如c3p0。這是解決問題的唯一辦法嗎?
我可以嘗試提高Windows 2003中的套接字限制嗎?