Mon équipe a créé un service Windows en Java qui se connecte à SQL Server 2005 sur un serveur Windows 2003, en utilisant JDBC pur (pas de pool de connexions) avec le pilote JTDS.Nombre de sockets disponibles pour une connexion JDBC sous Windows 2003
Après un certain temps, la méthode qui ouvre les connexions à la base de données soulevons exceptions avec la trace de pile suivante:
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)
Bien que les programmeurs ont pris soin de fermer les connexions quand ils ont été faits, quelque chose ne va pas droite.
Pour l'instant, nous avons résolu le problème de passer au protocole Named Pipes (puisque tout est hébergé sur la même machine), mais il s'agit d'une solution temporaire.
J'ai recherché le problème et il semble que nous devrions utiliser une bibliothèque de regroupement de connexions telle que c3p0. Est-ce la seule solution au problème? Pourrais-je essayer d'augmenter la limite de sockets dans Windows 2003?