Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ftp服务器上的Java小程序需要几分钟才能连接到MySQL数据库_Java_Mysql_Database_Ftp_Applet - Fatal编程技术网

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

ftp服务器上的Java小程序需要几分钟才能连接到MySQL数据库,java,mysql,database,ftp,applet,Java,Mysql,Database,Ftp,Applet,首先,这是一个自签名小程序,因此权限没有问题。 其次,小程序被上传到ftp服务器,并用.html文档打开 我用来连接的代码是: try { Class.forName("com.mysql.jdbc.Driver"); long start = System.currentTimeMillis(); Connection conn = DriverManager.getConnection("jdbc:mysql://the.hostname:3306/qnqdb", "

首先,这是一个自签名小程序,因此权限没有问题。
其次,小程序被上传到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分钟),无论我连接到哪个DB,第一次仍然需要永远的时间

如果我再次连接到它,它只需要200-2000ms(似乎正常)

为了测试它,我还打开了op Wireshark并监听端口3306。前4分钟什么也没发生
然后在接下来的50秒内,它记录了28个数据包

奇怪的是,如果我在本地运行applet时连接到DB,第一次只需要500毫秒,之后只需要200毫秒

我想的是:

  • 这不是数据库故障,因为第二次到第n次连接很快
  • 小程序不知怎么出了故障。也许由于某种原因,类加载需要很长时间
如果它有任何重要性,那么小程序的正常套接字连接在本地和ftp上只需要20-30毫秒

编辑
显然,在其他计算机上,这并不需要很长时间。一次我试了大约20秒,而另一次大概只有2-3秒。
更新:似乎只有这台电脑需要花费很长时间。
Java控制台级别5的日志:

在再次查看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/的库,但有没有lib/并没有什么区别。

在[Java控制台]()中看到了什么输出?确保跟踪级别设置为5。@AndrewThompson给你:当我第二次连接时。它只说了“Connecting with proxy=DIRECT”,第一次只说了一次(第886行)快速问题(我还没有讨论过跟踪)-为什么数据库逻辑必须在applet中,而不是在applet可以与之通信的服务中?另外,您是否使用代理服务器进行连接?您是否可以测试不涉及代理的情况,以检查这是否会导致任何问题?另外,您使用的是ipv6还是4?@Alihaider我读了很多关于使用Servlet to或类似工具与数据库通信的文章,我只是不确定我使用的服务宿主是否支持这一点。不,在所有测试中都没有代理和ipv4。很高兴您已将其排序。:)感谢您报告解决方案。至于“为什么”,也许1.7.0_05-b05是一辆小马车。