设为首页 加入收藏

TOP

LDAP 与 MySQL 连用 的JPA事物问题(二)
2014-11-24 02:58:05 来源: 作者: 【 】 浏览:1
Tags:LDAP MySQL 连用 JPA 事物 问题
(org.springframework.transaction.support.DefaultTransactionStatus)
*/
protected void doCommit(DefaultTransactionStatus status)
throws TransactionException
{
ContextSourceAndJpaTransactionObject actualTransactionObject =
(ContextSourceAndJpaTransactionObject) status.getTransaction();
try
{
super.doCommit(new DefaultTransactionStatus(
actualTransactionObject.getJpaTransactionObject(),
status.isNewTransaction(),
status.isNewSynchronization(),
status.isReadOnly(),
status.isDebug(),
status.getSuspendedResources())
);
}
catch (TransactionException ex)
{
if (isRollbackOnCommitFailure())
{
logger.debug("Failed to commit db resource, rethrowing", ex);
// If we are to rollback on commit failure, just rethrow the
// exception - this will cause a rollback to be performed on
// both resources.
throw ex;
}
else
{
logger.warn(
"Failed to commit and resource is rollbackOnCommit not set -"
+ " proceeding to commit ldap resource.");
}
}
ldapManagerDelegate.doCommit(new DefaultTransactionStatus(
actualTransactionObject.getLdapTransactionObject(),
status.isNewTransaction(),
status.isNewSynchronization(),
status.isReadOnly(),
status.isDebug(),
status.getSuspendedResources())
);
}
/**
* @see org.springframework.orm.jpa.JpaTransactionManager#doRollback(org.springframework.transaction.support.DefaultTransactionStatus)
*/
protected void doRollback(DefaultTransactionStatus status) throws TransactionException
{
ContextSourceAndJpaTransactionObject actualTransactionObject =
(ContextSourceAndJpaTransactionObject) status.getTransaction();
super.doRollback(new DefaultTransactionStatus(
actualTransactionObject.getJpaTransactionObject(),
status.isNewTransaction(),
status.isNewSynchronization(),
status.isReadOnly(),
status.isDebug(),
status.getSuspendedResources())
);
ldapManagerDelegate.doRollback(new DefaultTransactionStatus(
actualTransactionObject.getLdapTransactionObject(),
status.isNewTransaction(),
status.isNewSynchronization(),
status.isReadOnly(),
status.isDebug(),
status.getSuspendedResources())
);
}
public ContextSource getContextSource()
{
return ldapManagerDelegate.getContextSource();
}
public void setContextSource(ContextSource contextSource)
{
ldapManagerDelegate.setContextSource(contextSource);
}
protected void setRenamingStrategy(TempEntryRenamingStrategy renamingStrategy)
{
ldapManagerDelegate.setRenamingStrategy(renamingStrategy);
}
private final static class ContextSourceAndJpaTransactionObject
{
private Object ldapTransactionObject;
private Object jpaTransactionObject;
public ContextSourceAndJpaTransactionObject(
Object ldapTransactionObject, Object jpaTransactionObject)
{
this.ldapTransactionObject = ldapTransactionObject;
this.jpaTransactionObject = jpaTransactionObject;
}
public Object getJpaTransactionObject()
{
return jpaTransactionObject;
}
public Object getLdapTransactionObject()
{
return ldapTransactionObjec
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇shell脚本应用及循环语句 下一篇封装LDAP 增删改查 方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: