0

作为我在 JBoss 上开发的 Java EE 应用程序的一部分,我需要将文件的内容保存在 JNDI 树上。我通过将文件的内容读取到一个字节数组中,然后将其绑定到 JNDI 来执行此操作,如下所示。

getInitialContext().rebind("customers_datafile", byteArray);

这可以正常工作,但是当 JBoss 服务器停止/重新启动时绑定会丢失。有没有办法让它在重启之间持续存在?理想情况下,我希望在每次重启时不必使用类似于上面的代码重新绑定它。

4

1 回答 1

1

改用工厂:不要将文件加载到 byteArray 中,而是创建一个执行此操作的类并告诉 JBoss 创建一个实例。这样,您可以在配置中传递文件名并在 JBoss 运行时加载它new

然后,您可以转到初始上下文并请求该类并在其上调用方法。在您的情况下,该方法将返回字节数组。

有关详细信息,请参阅文档

[编辑] 所以你真正的问题是如何让一个文件对 JBoss 集群的所有节点可用。当您创建更多集群节点时,JBoss 不会复制该实例。它所做的只是将 XML 配置的副本发送到节点。因此,实际上您唯一的选择是使用 Base64 对文件进行编码,并将其作为值放入 XML 配置中。

如果您不希望这样,则必须找到一种方法将文件放在所有节点都可以“看到”它的地方。最简单的解决方案:将文件上传到 HTTP 服务器并将 URL 放入配置中。Java 可以轻松地从 URL 读取数据,从而将文件分发到所有节点。

于 2009-09-28T09:06:04.340 回答