代码之家  ›  专栏  ›  技术社区  ›  William

在jboss中持久化jndi树上的字节数组

  •  0
  • William  · 技术社区  · 16 年前

    作为JavaEE应用程序的一部分,我正在JBASE上开发,我需要在JNDI树上保存一个文件的内容。我通过将文件的内容读取到一个按字节数组中,然后按如下方式将其绑定到JNDI来完成这项工作。

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

    这很好,但是当jboss服务器停止/重新启动时绑定会丢失。有没有办法让它在重启之间保持最短的时间?理想情况下,我希望在每次重新启动时不必使用与上面类似的代码重新绑定它就可以实现这一点。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Aaron Digulla    16 年前

    使用工厂:不要将文件加载到bytearray中,而是创建一个这样做的类,并告诉jboss创建一个实例。这样,可以在配置中传递文件名,并在jboss运行时加载它。 new .

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

    See the docs for details .

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

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