Configuration 带有事务缓存的Ehcache非事务性上下文

Configuration 带有事务缓存的Ehcache非事务性上下文,configuration,transactions,ehcache,Configuration,Transactions,Ehcache,我已将Ehcache缓存实例配置为transactionalMode=“local” 现在,当我试图将一个元素放在事务外部的缓存中时,我得到了 net.sf.ehcache.transaction.TransactionException:未启动事务 这是否意味着对事务缓存实例的每次调用都需要在事务上下文中? 我在启动时做一些自定义缓存预加载,我不希望Ehcache事务(和copyOnRead/Write)开销。另外,由于我将处理逻辑上不可变的对象,如果可能的话,我希望能够在没有事务作用域的情况

我已将Ehcache缓存实例配置为
transactionalMode=“local”

现在,当我试图将一个元素放在事务外部的缓存中时,我得到了
net.sf.ehcache.transaction.TransactionException:未启动事务

这是否意味着对事务缓存实例的每次调用都需要在事务上下文中?

我在启动时做一些自定义缓存预加载,我不希望Ehcache事务(和copyOnRead/Write)开销。另外,由于我将处理逻辑上不可变的对象,如果可能的话,我希望能够在没有事务作用域的情况下从缓存中读取它们。

您真的需要首先使用本地事务吗?i、 e.是否需要在一个操作中原子地放置多个缓存项? 在任何情况下,如果使用transactionalMode=“local”,您都必须在事务边界内执行所有缓存操作(甚至读取)

但是,如果您需要更高的粒度,我建议您查看ehcache显式锁定,它可以作为XA事务或本地事务的自定义替代方案(无需在ehcache配置中指定transactionalMode)。更多


希望能有所帮助。

您真的需要首先使用本地事务吗?i、 e.是否需要在一个操作中原子地放置多个缓存项? 在任何情况下,如果使用transactionalMode=“local”,您都必须在事务边界内执行所有缓存操作(甚至读取)

但是,如果您需要更高的粒度,我建议您查看ehcache显式锁定,它可以作为XA事务或本地事务的自定义替代方案(无需在ehcache配置中指定transactionalMode)。更多


希望这能有所帮助。

我需要一个没有全面JTA的全球交易。这就是为什么我最感兴趣的是本地事务的回滚机制。如果“全局事务”失败,我只需回滚所有缓存更改。是的,我正在处理需要保持一致的多个缓存级别。因此,从隔离的角度来看,锁定很有用,但看起来我仍然需要自己实现回滚,对吗?我需要一个各种各样的全局事务,而不需要全面的JTA。这就是为什么我最感兴趣的是本地事务的回滚机制。如果“全局事务”失败,我只需回滚所有缓存更改。是的,我正在处理需要保持一致的多个缓存级别。所以从隔离的角度来看,锁定会很有用,但看起来我仍然需要自己实现回滚,对吗?