まず、これは自己署名アプレットなので、パーミッションは問題ありません。
次に、アプレットが ftp サーバーにアップロードされ、.html ドキュメントで開かれます。
接続に使用するコード自体は次のとおりです。
try
{
Class.forName("com.mysql.jdbc.Driver");
long start = System.currentTimeMillis();
Connection conn = DriverManager.getConnection("jdbc:mysql://the.hostname:3306/qnqdb", "username", "password");
long end = System.currentTimeMillis();
JOptionPane.showMessageDialog(rootPane, (end - start) + "ms.\n" + conn);
}
catch (SQLException ex)
{
JOptionPane.showMessageDialog(rootPane, ex.getClass() + "\n" + ex.getMessage());
}
JOptionPane は、接続する DB に関係なく、127 秒 (4.5 分強) かかったことを示しています。
再度接続すると、200 ~ 2000 ミリ秒しかかかりません(通常のようです) 。
テストするために、op Wireshark も開き、ポート 3306 をリッスンしました。最初の 4 分間は何も起こりませんでした。キャプチャの画像
次に、次の 50 秒間で 28 パケットを記録しました。
奇妙なことに、アプレットをローカルで実行しているときに DB に接続すると、最初は最大 500 ミリ秒、その後は最大 200 ミリ秒しかかかりません。
私が考えているのは:
- 2 回目から n 回目の接続は速いので、データベースの障害ではありません。
- アプレットに何らかの障害があります。なんらかの理由でクラスのロードに時間がかかる場合があります。
重要性がある場合、アプレットからの通常のソケット接続は、ローカルでも ftp でも 20 ~ 30 ミリ秒しかかかりません。
編集
どうやら、他のコンピューターでは、それほど時間はかかりません。私が試したものでは約20秒でしたが、別のものではおそらく2〜3秒でした。
更新:確かに、時間がかかるのはこの 1 台のコンピューターだけのようです。Java コンソール レベル 5 のログ: http://pastebin.com/2u2v7gZV