0

我的代码的异步执行有问题。方法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"/>

你能帮助我吗?一些建议?
我没主意了。

4

0 回答 0