私のチームは、Windows 2003 Server の SQL Server 2005 に接続する Windows サービスを Java で構築しました。JTDS ドライバーで純粋な 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 でソケットの制限を引き上げることはできますか?