[quote="jxd1976"][quote="colin4k"]另外以上代码是经测试通过的,今天加上了事务的控制,自己写了个Interceptor[/quote]
这个零配置不错,把事务控制的代码也贴上来,学习一下。
web根目录下的index.jsp怎么处理?[/quote]
事务控制主要有以下几个步骤,
第一、TransactionInterceptor的部分代码
[code]protected String doIntercept(ActionInvocation invocation) throws Exception {
String result = null;
PlatformTransactionManager transactionManager = (PlatformTransactionManager) BeanLoader
.getBean("transactionManager");
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
def.setReadOnly(false);
TransactionStatus transactionStatus = transactionManager
.getTransaction(def);
try {
result = invocation.invoke();
transactionManager.commit(transactionStatus);
}
catch (Exception e) {
transactionManager.rollback(transactionStatus);
logger.error("action error,rollback transaction.");
throw e;
}
return result;
}[/code]
第二、定义用于事务的拦截器
[code]<interceptor name="transactionInterceptor" class="TransactionInterceptor">
<param name="includeMethodsPrefix">act,deal</param>
</interceptor> [/code]
includeMethodsPrefix参数用于定义以这些字符串开头的方法都采用事务控制。
第三、配置拦截器到Action上,这个就不用写了。
这个零配置不错,把事务控制的代码也贴上来,学习一下。
web根目录下的index.jsp怎么处理?[/quote]
事务控制主要有以下几个步骤,
第一、TransactionInterceptor的部分代码
[code]protected String doIntercept(ActionInvocation invocation) throws Exception {
String result = null;
PlatformTransactionManager transactionManager = (PlatformTransactionManager) BeanLoader
.getBean("transactionManager");
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
def.setReadOnly(false);
TransactionStatus transactionStatus = transactionManager
.getTransaction(def);
try {
result = invocation.invoke();
transactionManager.commit(transactionStatus);
}
catch (Exception e) {
transactionManager.rollback(transactionStatus);
logger.error("action error,rollback transaction.");
throw e;
}
return result;
}[/code]
第二、定义用于事务的拦截器
[code]<interceptor name="transactionInterceptor" class="TransactionInterceptor">
<param name="includeMethodsPrefix">act,deal</param>
</interceptor> [/code]
includeMethodsPrefix参数用于定义以这些字符串开头的方法都采用事务控制。
第三、配置拦截器到Action上,这个就不用写了。