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次连接很快
- 小程序不知怎么出了故障。也许由于某种原因,类加载需要很长时间
显然,在其他计算机上,这并不需要很长时间。一次我试了大约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是一辆小马车。