0

更新+解决方案================================

很抱歉在这里而不是在评论中发布解决方案,但是关于我的工作过滤的某些内容不允许评论功能为我工作。

我最终使用 jboss 中的 -b 0.0.0.0 属性绑定到所有地址,因此我可以尝试以机器 B 作为客户端访问机器 A 的服务器,反之亦然。我发现它在机器 B 上运行时总是无法加载,无论我是从 A 还是 B 连接。

我在同一网络上的 Windows 机器上启动了 Wireshark,并观察了正在加载网页的 TCP 连接。我看到在失败的情况下对.swf的请求的内容长度为200万左右,当我右键单击wireshark日志并选择“查看对话”或类似的东西时,总对话的大小获得 .swf 文件只有 130,000。查看 about:cache,这大约等于它在页面上说“完成”之前最终缓存的内容。

我最终发现 useSendFile 属性存在错误。(http://community.jboss.org/thread/148651?tstart=0)。如果内核内存不足,这将导致它仅发送部分文件。在我们的 server.xml 中使用 useSendFile="false" 似乎可以解决问题。

====================================================

原始问题

我有一个 JBoss (5.1.0.GA) 应用服务器。我正在使用 GraniteDS 连接应用程序服务器和客户端。客户端是基于闪存的。

Granite DS 需要使用 APR 库(apache 本机库),所以我正在加载它。我在 JBoss 日志中看到它说它加载了 apache 本机库就好了(版本 1.18,虽然我也尝试过 1.20)。

问题是,当我拥有它以便 APR 库成功加载时,应用程序的 Flash 端通常不会加载。我必须多次刷新,最终它通常会加载,但通常我会看到一个黑色的网页,上面写着“完成”,或者加载进度条永远不会移动。只有反复点击刷新才能加载页面。它最终会通过足够的刷新来加载,但它并不一致,这显然不适用于我们每次都必须清除浏览器缓存的客户。

此问题仅存在于 Solaris 上,我们的应用程序在 Windows 上运行良好。我们已经尝试了多个补丁级别的 solaris,并使用“ldd”命令验证了需要加载的库在其中具有所有依赖项。

我们通过测试验证了它不是我们的 swf 文件的大小: 1) 我们的常规 SWF (1660 kb)。2) 一个随机的大型 SWF (950 kb)。3) 一个带有一个标签组件的小型 SWF,上面写着“测试”(277 kb)。

当 JBoss 也在加载本机库时,所有 3 个都无法加载,没有它就可以正常加载。我们需要成功加载本机库,以便 Granite 在客户端和服务器之间进行连接,因此不加载它不是一种选择(除非有某种方法可以将 NIO 连接器与 JBoss 一起使用,但它似乎不受支持)......如果有办法使用 NIO 连接器,那么我们不需要 APR 库。

有没有人遇到过这个?有人有什么想法或建议吗?

4

1 回答 1

0

您是否尝试过用于 Solaris 的 jboss 本机库?

http://www.jboss.org/jbossweb/downloads/jboss-native-2-0-9.html

于 2011-01-24T21:22:44.003 回答