Tôi đang sử dụng JDBC để kết nối với máy chủ MySQL (không có kết nối tổng hợp mà tôi nghĩ). Trong URL kết nối, tôi có autoReconnect=true
Tại sao autoReconnect = true dường như không hoạt động?
Nhưng kết nối của tôi vẫn hết thời gian chờ. Tôi thậm chí đã kiểm tra conn.isClosed()
và sai của nó. Nhưng khi tôi cố gắng sử dụng kết nối tôi nhận được ngoại lệ sau đây.
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: Software caused connection abort: socket write error STACKTRACE: java.net.SocketException: Software caused connection abort: socket write error ...
Tôi biết trong Java 1.6, bạn có thể sử dụng conn.isValid(0)
để kiểm tra kết nối, nhưng tôi đang sử dụng Java 1.5
Có cách nào để hoặc đảm bảo nó không thời gian ra? Hoặc tôi sẽ phải nâng cấp lên Java 1.6?
Lời khuyên không sử dụng autoReconnect vì lời nhắc sẽ bị xóa trong tương lai là 8-10 tuổi. Tuy nhiên, tôi vẫn thấy MySQL 5.x cung cấp hướng dẫn cài đặt thuộc tính Connector/J autoReconnect là một tùy chọn để giải quyết vấn đề này ... –
Từ tài liệu được liên kết: "Không có cách nào an toàn 100% mà trình điều khiển JDBC có thể tự động kết nối lại nếu kết nối TCP/IP chết mà không có nguy cơ tham nhũng của trạng thái cơ sở dữ liệu (ngay cả _with_ ngữ nghĩa giao dịch), đó là lý do tại sao tính năng này cuối cùng sẽ bị xóa. " –