首先,这是一个自签名小程序,所以权限没问题。
其次,将小程序上传到 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 显示它花了 127 秒(刚刚超过 4.5 分钟),无论我连接到什么数据库,第一次仍然需要永远。
如果我再次连接它,它只需要 200-2000 毫秒(看起来很正常)
为了测试它,我还打开了操作 Wireshark 并监听了 3306 端口。前 4 分钟什么也没发生。捕获图像
然后在接下来的 50 秒内,它记录了 28 个数据包。
奇怪的是,如果我在本地运行小程序时连接到数据库,第一次只需要约 500 毫秒,之后只需约 200 毫秒。
我在想的是:
- 这不是数据库故障,因为它可以快速连接第二次到第 n 次。
- 小程序在某种程度上有问题。也许由于某种原因类加载需要很长时间。
如果它有任何重要性,那么来自小程序的正常套接字连接在本地和 ftp 上都只需要 20-30 毫秒。
编辑
显然,在其他计算机上,它不需要很长时间。我试过的一个是大约 20 秒,而另一个应该只有 2-3 秒。
更新:确实似乎只有这台计算机需要很长时间。Java Console level 5的日志:http: //pastebin.com/2u2v7gZV