Я разрабатываю java-апплет, который подключается к базе данных mysql, апплет отлично работает на локальном хосте, но когда я загрузил его и попытался запустить, я получаю сообщение об ошибке: «сбой канала связи, последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. .драйвер не получил никаких пакетов с сервера" я попробовал это на x10hosting и hostable, пожалуйста, помогите мне, если кто-нибудь знает решение...
Апплет не может подключиться к серверу mysql
Ответы (2)
Вы уверены, что порт вашего сервера MySQL действительно открыт для публики? Например, на общедоступном IP-адресе, который не заблокирован вашими маршрутизаторами/сетью? Скорее всего, ваш экземпляр MySQL недоступен из внешнего мира...
... так и должно быть. Очень, очень, очень редко уместно, чтобы апплет взаимодействовал непосредственно с сервером базы данных. Обычно апплет общается со средним уровнем на вашем веб-сервере, который, в свою очередь, взаимодействует с сервером базы данных. В этом есть аспект безопасности (ваш средний уровень может защитить от различных атак на вашу базу данных), и есть аспект практичности: вы, вероятно, захотите свести болтовню в общедоступной сети к минимуму, и ваш сервер может свернуть результаты нескольких операций в один пакет он затем отправляет клиенту.
Если ваш сервер MySQL действительно доступен для внешнего мира, является ли его хост таким же, как и хост, с которого загружается апплет? Это одно из требований безопасности для (неподписанных) апплетов: они могут открывать сетевые подключения только к тому же хосту, с которого они были загружены. Но если бы это было проблемой, я бы ожидал, что вы получите исключение безопасности (если только Connector/J не скрывает это от вас).
Апплет клиентский. Если вы хотите напрямую подключиться к серверу mysql, это будет означать, что каждый пользователь, открывающий апплет, должен либо установить mysql, либо иметь доступ и учетные данные к удаленной базе данных. Даже если ваш брандмауэр разрешает доступ, это очень плохая идея. Если вы это сделаете, все будут иметь доступ к вашей базе данных.
Поэтому, если вы хотите общаться с удаленной базой данных, используйте какой-либо протокол (проще всего будет http через сервлет) для отправки запросов на сервер и получения ответов, сгенерированных на основе результатов базы данных. Например, вызов http://yoursite.com/addRecord?name=foo&[email protected] может указать серверному приложению открыть (локальное) соединение с mysql и вставить запись.