我的代码的异步执行有问题。方法startConversion()应该被异步调用。呼叫通过 AOP 代理。
一切分开工作正常。当我将 @Async 和 @MonitoredWithSpring 注释放在一起时会出现问题
javamelody 在第一个 xml 中的 webxml 中定义 - 好的
Spring 异步支持在 xml 中被拒绝 - 好的
没有@MonitoredWithSpring,代码运行良好。 但我需要监控这个bean。
示例代码:
@MonitoredWithSpring //L1 - if this line removed @async will work
public interface IOfficeConversionService {
void startConversion ();
}
实现类
@Service
public class COfficeConversionSevice implements IOfficeConversionService {
@Override
@Transactional
@Async ("officeFileConversionExecutor")
public void startConversion () {
//ASYNC work
}
}
- 存在 L1 时,代码将同步调用方法 startConversion() 。
- 没有 L1 一切正常,并且方法 startConversion()在新线程中被异步调用
在堆栈跟踪中甚至不创建异步切入点。@Async 注解永远不会被它的 postProcessor 处理。@Transactional 有效,并创建了事务。初始化没有错误
弹簧配置
<context:annotation-config />
<aop:aspectj-autoproxy />
<task:executor id="mailexecutor" pool-size="25-100" queue-capacity="1000" rejection-policy="ABORT" />
<task:executor id="pnpexecutor" pool-size="5" />
<task:executor id="officeFileConversionExecutor" pool-size="5" />
<task:scheduler id="systemScheduler" pool-size="5" />
<task:annotation-driven executor="mailexecutor" scheduler="systemScheduler"/>
你能帮助我吗?一些建议?
我没主意了。