【问题标题】:Coordinated save in database and disk in java在java中协调保存在数据库和磁盘中
【发布时间】:2012-06-21 14:24:38
【问题描述】:

在我的任务中,我需要将文件保存在磁盘上并更新数据库中的信息。 保存文件和更新数据库中的信息时可能会发生异常。 是否存在一些现成的开源解决方案,或者它需要从头开始编写? 谢谢。

【问题讨论】:

  • 您是否已经在使用任何事务协调系统?

标签: java database file transactions system


【解决方案1】:

XADisk 提供对文件系统的事务访问。从他们的网站:

XADisk(发音为“x-a-disk”)支持对 通过提供 API 来执行文件/目录的现有文件系统 操作。通过简单的步骤,它可以部署在任何 JVM 上,并且可以 然后开始为运行中的各种 Java/JavaEE 应用程序提供服务 任何地方。

【讨论】:

  • 更具体地说,因为我们有多个资源(在本例中为两个,文件系统和数据库)要组合成一个事务,Java 应用程序将需要使用:1)一个XA 事务管理器(例如 Atomikos),2)来自数据库的 XA 支持(大多数数据库已经拥有),3)来自文件系统的 XA 支持(因为大多数文件系统本身不支持 XA,可以使用 XADisk添加 XA 支持)。
【解决方案2】:

在 Java 中,企业事务管理由 Java EE 中使用的 JTA spec 管理。

JTA 允许创建多个具有不同实现的 TransactionManager(一个用于数据库,一个用于文件)并使它们一起工作以定义交叉事务 我认为这可能是您做自己想做的事情的一种方式

在容器之外,可以集成 JTA。你应该看看SpringJBoss 的实现

查看this blog post 了解有关 Spring 和事务使用的更多信息

【讨论】:

    【解决方案3】:

    Java EE 不直接支持文件系统,但您可以为文件系统实现/搜索资源适配器

    http://docs.oracle.com/javaee/6/tutorial/doc/gipgl.html

    http://docs.oracle.com/javaee/6/tutorial/doc/giqjk.html

    【讨论】:

    • 为什么投反对票?甚至 Nicholas (XADisk) 提供的具体解决方案都提供了资源适配器(rar)。
    猜你喜欢
    • 2016-09-14
    • 2010-11-29
    • 2012-03-24
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多