Апплет не может подключиться к серверу MySQL - PullRequest
0 голосов
/ 02 июня 2011

Я занимаюсь разработкой Java-апплета, который подключается к базе данных MySQL, апплет работает на локальном хосте, но когда я загрузил его и попытался запустить, я получаю сообщение об ошибке: «ошибка канала связи - последний пакет успешно отправлен на сервер 0 миллисекунд назад. водитель не получил никаких пакетов с сервера " Я попробовал это на x10hosting и hostable, пожалуйста, помогите мне, если кто-нибудь знает решение ...

Ответы [ 2 ]

1 голос
/ 02 июня 2011

Вы уверены, что ваш порт сервера MySQL действительно открыт для общественности? Например, на общедоступном IP-адресе и не заблокирован вашими маршрутизаторами / сетью? Скорее всего, ваш экземпляр MySQL недоступен из внешнего мира ...

... так и должно быть. Очень, очень, очень редко подходит, чтобы апплет говорил напрямую с вашим сервером базы данных. Обычно апплет взаимодействует со средним уровнем на вашем веб-сервере, который, в свою очередь, взаимодействует с сервером базы данных. В этом есть аспект безопасности (ваш промежуточный уровень может защищать от различных атак на вашу базу данных), и есть аспект практичности: вы, вероятно, захотите свести к минимуму шум в общедоступной сети, и ваш сервер может свернуться результаты нескольких операций в один пакет он затем отправляет клиенту.

Если ваш сервер MySQL действительно доступен для внешнего мира, является ли его хост тем же, что и хост, с которого загружается апплет? Это одно из требований безопасности для (неподписанных) апплетов, чтобы они могли открывать сетевые соединения только с тем хостом, с которого они были загружены. Но если бы это было проблемой, я бы ожидал, что вы получите исключение безопасности (если только Connector / J не скрывает это от вас).

0 голосов
/ 02 июня 2011

Апплет на стороне клиента.Если вы хотите напрямую подключиться к серверу MySQL, это будет означать, что у каждого пользователя, открывающего апплет, должен быть установлен MySQL или иметь доступ и учетные данные к удаленной базе данных.Даже если ваш брандмауэр разрешает доступ, это очень плохая идея.Если вы это сделаете, у всех будет доступ к вашей базе данных.

Поэтому, если вы хотите общаться с удаленной базой данных, используйте какой-либо протокол (http будет проще всего через сервлет), чтобы отправлять запросы на сервер и получать ответы.генерируется на основе результатов базы данных.Например, вызов http://yoursite.com/addRecord?name=foo&email=bar@baz.com может дать указание серверному приложению открыть (локальное) соединение с mysql и вставить запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...