ftp服务器上的Java Applet需要几分钟才能连接到MySQL数据库

时间:2012-07-20 11:10:40

标签: java mysql database ftp applet

首先,这是一个自签名小程序,所以权限还可以 其次,将applet上传到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分钟没有任何事情发生。 Image of the capture
然后在接下来的50秒内,它记录了28个数据包。

奇怪的是,如果我在本地运行applet时连接到数据库,那么第一次只需要大约500ms,之后大约需要200ms。

我在想的是:

  • 这不是数据库故障,因为它可以快速连接第二次到第n次。
  • 小程序有点错。也许由于某种原因,课程加载需要很长时间。

如果它有任何重要性,那么来自applet的正常套接字连接在本地和ftp上只需要20-30ms。

修改
显然,在其他计算机上,它不需要那么长时间。在一个我试过它是~20秒,而在另一个它据说只有2-3秒 更新:看起来它确实只需要这台计算机需要很长时间。 Java控制台级别5的日志:http://pastebin.com/2u2v7gZV

1 个答案:

答案 0 :(得分:1)

在再次审阅Java控制台日志之后,我注意到了一件事。

我一直在重复

network: Connecting http://shop.nordicbeads.com/Renes/mysql-connector-java-5.1.6-bin.jar with 
proxy=DIRECT network: Cache entry not found [url: http://shop.nordicbeads.com/Renes/mysql-connector-java-5.1.6-bin.jar, version: null]

一遍又一遍,但后来我发现它使用的路径出于某种原因而不是ftp服务器上库的路径。路径是Renes / lib / library.jar,它没有在lib文件夹中使用look 我改变了库的位置,现在只需3秒即可连接。

奇怪的是,为什么我测试过的所有其他计算机都会立即查看lib文件夹。我为什么要花4分钟到那里看? 在html文档中,我甚至在lib / in前面的存档行中添加了库,但是有没有这样做没有什么区别。