将 PlatformTransactionManager 注入 Ehcache
Injecting PlatformTransactionManager into Ehcache
我正在尝试根据文档 here 将 Spring 的 PlatformTransactionManager
注入到 Ehcache 中。我现有的事务管理器定义如下:
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
jpaTransactionManager.setEntityManagerFactory(entityManagerFactory);
return jpaTransactionManager;
}
文档指出您需要编写自己的 class 来实现 TransactionManagerLookup
:
public class MyTransactionManagerLookup implements TransactionManagerLookup {
@Override
public TransactionManager getTransactionManager() {
// TODO Auto-generated method stub
return null;
}
@Override
public void init() {
// TODO Auto-generated method stub
}
@Override
public void register(EhcacheXAResource arg0, boolean arg1) {
// TODO Auto-generated method stub
}
@Override
public void setProperties(Properties arg0) {
// TODO Auto-generated method stub
}
@Override
public void unregister(EhcacheXAResource arg0, boolean arg1) {
// TODO Auto-generated method stub
}
}
我已尝试将 PlatformTransactionManager
自动装配到 MyTransactionManagerLookup
,但您无法从 PlatformTransactionManager 转换为 TransactionManager:
@Autowired
PlatformTransactionManager ptm;
@Override
public TransactionManager getTransactionManager() {
return ptm; // cannot convert from PlatformTransactionManager to TransactionManager
}
我想我在这里遗漏了一些明显的东西,非常感谢任何指点。
您需要使用JtaTransactionManager
并将JtaTransactionManager.getTransactionManager()
的结果传递给Ehcache。
感谢 Louis Jacomet 的 ,我意识到我需要使用 JtaTransactionManager
而不是 JpaTransactionManager
。
我选择 Atomikos 因为 Ehcache 自动识别这个事务管理器并注册它而不需要自定义 TransactionManagerLookup
.
我正在尝试根据文档 here 将 Spring 的 PlatformTransactionManager
注入到 Ehcache 中。我现有的事务管理器定义如下:
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
jpaTransactionManager.setEntityManagerFactory(entityManagerFactory);
return jpaTransactionManager;
}
文档指出您需要编写自己的 class 来实现 TransactionManagerLookup
:
public class MyTransactionManagerLookup implements TransactionManagerLookup {
@Override
public TransactionManager getTransactionManager() {
// TODO Auto-generated method stub
return null;
}
@Override
public void init() {
// TODO Auto-generated method stub
}
@Override
public void register(EhcacheXAResource arg0, boolean arg1) {
// TODO Auto-generated method stub
}
@Override
public void setProperties(Properties arg0) {
// TODO Auto-generated method stub
}
@Override
public void unregister(EhcacheXAResource arg0, boolean arg1) {
// TODO Auto-generated method stub
}
}
我已尝试将 PlatformTransactionManager
自动装配到 MyTransactionManagerLookup
,但您无法从 PlatformTransactionManager 转换为 TransactionManager:
@Autowired
PlatformTransactionManager ptm;
@Override
public TransactionManager getTransactionManager() {
return ptm; // cannot convert from PlatformTransactionManager to TransactionManager
}
我想我在这里遗漏了一些明显的东西,非常感谢任何指点。
您需要使用JtaTransactionManager
并将JtaTransactionManager.getTransactionManager()
的结果传递给Ehcache。
感谢 Louis Jacomet 的 JtaTransactionManager
而不是 JpaTransactionManager
。
我选择 Atomikos 因为 Ehcache 自动识别这个事务管理器并注册它而不需要自定义 TransactionManagerLookup
.