Ping MySQL Server с использованием JDBC
Это кажется довольно простым (не для меня)...
Как выполнить ping-сервер mysql с помощью JDBC? я успешно использовал запросы выбора и вставки с JDBC и MySQL, но как пинговать
ТИА
Ответы
Ответ 1
Драйвер JDBC MySQL (Connector/J) предоставляет механизм ping.
Если вы выполняете SQL-запрос с /* ping */
, например:
"/* ping */ SELECT 1"
Это приведет к тому, что драйвер отправит пинг на сервер и вернет фальшивый, легкий результат.
(Вы можете найти это достаточно глубоко в Коннектор /J документации, ищите "ping" на этой странице. Прочтите внимательно: этот механизм очень чувствителен к используемому синтаксису. В отличие от большинства SQL, "разбор" маркера "ping" происходит в самом драйвере JDBC на стороне клиента.).
Ответ 2
Я не думаю, что в JDBC APi есть что-то для этого.
Но вы можете просто использовать InetAddress и метод isReachable(), чтобы проверить, существует ли сервер (что по сути является тем, что делает ping).
http://download.oracle.com/javase/6/docs/api/java/net/InetAddress.html#isReachable%28int%29
Edit:
Если вы хотите проверить, работает ли MySQL, а не пинговать сервер, вы можете попытаться открыть сокет на сервере на порту MySQL по умолчанию.
Что-то вроде этого:
InetAddress addr = InetAddress.getByName("your.server.com");
int port = 3306;
SocketAddress sockaddr = new InetSocketAddress(addr, port);
Socket sock = new Socket();
sock.connect(sockaddr, 2000); // open the connection with a 2 seconds timeout
Если connect() не генерирует исключение, то что-то работает на порту 3306.
Если вы хотите убедиться, что это сервер MySQL на этом порту, единственный способ - установить соединение JDBC (но для этого вам нужно действующее имя пользователя/пароль) и запустить инструкцию, например. выражение PING, упомянутое Брайаном.
Ответ 3
Я не знаю, как это сделать в JDBC, вы можете использовать Connection Pooling для проверки вашего соединения так (это context.xml
для Tomcat (находится в каталоге META-INF
вашего приложения)):
<Resource name="jdbc/My_DS" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="USERNAME" password="PASSWORD" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/MYDB?autoReconnect=true"
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
testOnBorrow="true" validationQuery="SELECT 1" />
validationQuery
проверяет, успешно ли установлено соединение.