JApplet подключается к локальному хосту Mysql через Eclipse, но не через веб-браузер - PullRequest
0 голосов
/ 04 марта 2012

Итак, я написал JApplet, который подключается к серверу MySQL и выполняет некоторые функции. Когда я тестирую его в Eclipse, он работает просто отлично. У меня есть IP-адрес, имя базы данных, имя пользователя (root) и пароль, жестко запрограммированный в программе на данный момент. Если у меня есть IP-адрес как localhost, или 127.0.0.1 (то же самое, но да), или 192.168.x.x (локальный адрес моего компьютера), JApplet при запуске из Eclipse подключится к серверу MySQL без проблем. Кроме того, если я открою другой терминал и войду в MySQL таким образом, это также будет работать.

Однако, если я создаю файл с использованием Eclipse, включаю драйвер mysql в тег апплета HTML и запускаю его через веб-браузер на той же машине, он не работает.

Вот тег HTML, который я использую:

<applet code="mysqlApp.MysqlInterface.class"
    archive="LoginDemo.jar, mysql-connector-java-5.1.18-bin.jar"
    height="150" width="450">
    Your browser does not support the <code>applet</code> tag.
</applet>

Я пробовал это в Firefox 10. * с портом 3306, перенаправленным на мой маршрутизатор, и мой программный брандмауэр выключен. Кроме того, сервер MySQL привязан к 0.0.0.0 (он принимает попытки подключения на всех интерфейсах), и TCP / IP включен (опция пропуска сети не используется). Я получаю диалоговое окно с сообщением о невозможности установить соединение SQL (что я и запрограммировал), и я получаю следующее исключение в консоли Java:

SQLException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver  
has not received any packets from the server.
SQLState: 08S01
VendorError: 0

Я также попробовал это сделать в последней версии Internet Explorer для Windows 7 x64, и когда я нажимаю на кнопки, которые должны подключить его к серверу, веб-страница зависает.

Ничего не выводится на консоль, где работает mysqld (я запустил его с помощью терминала администратора, используя mysqld --console)

У кого-нибудь есть идеи? Я искал решение в течение нескольких дней, но все, что мне кажется, что оно может работать, содержит одну или две маленькие детали, которые делают его неприменимым к моей проблеме.

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

Спасибо.

1 Ответ

1 голос
/ 04 марта 2012

Ваш апплет должен общаться с каким-то бэкэндом (java или php) через ajax. Затем используйте бэкэнд для связи с MySQL. Хорошее место для ajax: http://prototypejs.org/assets/2010/10/12/prototype.js.

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