Java插件JRE 1.8.0.45(DNS?)的小程序超时



自从昨天的新java JRE 1.8.0.45以来,我们的小程序加载需要1分30秒,而不是1-2秒。所有通信都是https,它也通过https与服务器连接。

经过一些测试,我们发现这可能是DNS解析问题,因为如果我们将服务器的域和ip添加到"etc\hosts"中,它似乎又能正常工作,就像以前的Java版本一样。

我们的小程序从服务器下载几个图像;我们已经将其更改为从JAR文件中获取它们,但启动仍然需要大约1:30分钟。

一开始我们认为这是一个图形问题,因为显示小程序日志,加载每个图像需要3-4秒,但即使从JAR文件中加载,也无法解决问题。

这就像第一个"http/https"连接(可以是获取"crossdomain.xml"的"http"connectio)需要超时一样。然后(可能是DNS解析?)它正常工作。

任何想法都会很棒。

问候

我们的一个客户网站也出现了同样的问题。它在dns服务器上没有正确的反向dns记录,因此java小程序在加载时被阻止了约2分钟。你能检查你的DNS吗?

"crossdomain.xml"也可以帮助实现这一点[https://weblogs.java.net/blog/joshy/archive/2008/05/java_doodle_cro.html]如果您无法配置DNS。

谨致问候,Viktor

我们的Applet无法从服务器下载图像,也无法从Jar文件中获取图像。

例如,我们有一种从Jar:中获取图像的方法

public Image getJarImage(String strFile) {
Image image = null;
byte[] tn = null;
Toolkit toolkit = Toolkit.getDefaultToolkit();
InputStream in = getClass().getResourceAsStream(strFile);
try {
int length = in.available();
tn = new byte[length];
in.read(tn);
image = toolkit.createImage(tn);
} catch (Exception exc) {
return null;
}
return image;
}

为了解决这个问题,我们从所有图像中生成了Base64字符串,并将它们放在一个静态哈希表("图像"对象)中,然后再次转换为Java图像,如下所示:

public Image getJarImage(String strFile) {
String base64String=(String)images.get(strFile);
byte[] bytearray = Base64.base64ToByteArray(base64String);  
Image image=null;
try {
image = ImageIO.read(new ByteArrayInputStream(bytearray));
} catch (IOException e) {
return null;
}
return image;
}   

要从图像中获取Base64字符串,您可以使用多个网站,或者简单地使用javascript:如何使用javascript 将图像转换为Base64字符串

希望能有所帮助。

维森特,

我在其他文章中读到,奇怪地使用getResourceAsStream会导致服务器往返,尽管资源应该从JAR文件中读取。这应该在网络跟踪中可见。这可以通过在JNLP中设置codebase_lookup=false来避免(这可能有也可能没有其他副作用——请做一些研究)。

相关内容

  • 没有找到相关文章