Моя команда создала Службу Windows в Java, которая подключается к SQL Server 2005 в Windows 2003 Server, используя чистый JDBC (без объединения пулов) с драйвером JTDS.
Через некоторое время метод, который открывает соединения с базой данных, начинает вызывать исключения со следующей трассировкой стека:
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)
Хотя программисты старались закрыть соединения, когда они были сделаны, что-то идет не так.
В настоящее время мы решили проблему с переключением на протокол Named Pipes (поскольку все размещено на одном компьютере), но это временное решение.
Я погуглил проблему, и, похоже, нам следует использовать некоторую библиотеку пулов соединений, такую как c3p0. Это единственное решение проблемы?
Могу ли я попытаться поднять лимит сокетов в Windows 2003?