我需要在事务成功或回滚后调用一些方法.我用的是
<bean name="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
<property name="sessionFactory">
<ref local="mysessionFactory"/>
</property>
</bean>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="mysessionFactory"/>
</property>
</bean>
<tx:annotation-driven transaction-manager="txManager" proxy-target-class="true"/>
Run Code Online (Sandbox Code Playgroud)
应用程序使用一些外部Web服务,当内部事务被回滚时需要"清理".有没有办法如何在不使用声明式事务管理的情况下实现此目的.
我想从控制器内部启动异步任务,如下面的Spring docs代码片段.
import org.springframework.core.task.TaskExecutor;
public class TaskExecutorExample {
private class MessagePrinterTask implements Runnable {
private int cn;
public MessagePrinterTask() {
}
public void run() {
//dummy code
for (int i = 0; i < 10; i++) {
cn = i;
}
}
}
private TaskExecutor taskExecutor;
public TaskExecutorExample(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void printMessages() {
taskExecutor.execute(new MessagePrinterTask());
}
}
Run Code Online (Sandbox Code Playgroud)
之后在另一个请求中(在任务运行的情况下)我需要检查任务的进度.Basicaly获得cn的值.
Spring MVC中最好的方法是如何避免同步问题.
谢谢
PepaProcházka