Метод Spring Async не работает с EndPoint

Моя реализация Async не работает, хотя, похоже, я все сделал правильно.

Я вызываю свой асинхронный метод из класса EndPoint.

Пожалуйста, взгляните на мой код ниже и помогите мне решить проблему.

Мой класс EndPoint выглядит следующим образом:

@Endpoint
public class EndpointDummy {

    private static final String TARGET_NAMESPACE = "http://www.abc.xyz.com/GetAcctInfo";

    @Autowired
    private DummyService service;

    @PayloadRoot(localPart = "GetAcctInfoRq", namespace = TARGET_NAMESPACE)
    public @ResponsePayload GetAcctInfoRs handleRequest(@RequestPayload GetAcctInfoRq request, MessageContext messageContext) throws JAXBException, TransformerException {

        /*****************************************************************
        * Call the handler function
        * This handler function is asynchronous
        *****************************************************************/
        service.handleRequest();

        /*****************************************************************
        * Send response back
        *****************************************************************/
        SaajSoapMessage soapResponse = (SaajSoapMessage) messageContext.getResponse();
        SoapHeader respheader = soapResponse.getSoapHeader(); 

        MsgHdrRs msgHdrRs = new MsgHdrRs();
        JAXBContext jaxbContext = JAXBContext.newInstance(MsgHdrRs.class);
        jaxbContext.createMarshaller().marshal(msgHdrRs, respheader.getResult());

        GetAcctInfoRs response = new GetAcctInfoRs();
        return response;
    }
}

Как вы можете видеть выше, мой класс EndPoint вызывает метод handleRequest DummyService.

Класс Dummy Service аннотируется @Service, а метод handRequest аннотируется @Async, как показано ниже:

@Service
public class DummyService {

    private Logger logger = Logger.getLogger(DummyService.class);

    @Async("taskExecutorServiceImpl")
    public void handleRequest() {

        logger.info("DummyService: 1");

        try {
            Thread.sleep(20000);
        } catch (InterruptedException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        logger.info("DummyService: 2");
    }

}

Я также определил свой класс конфигурации, как показано ниже:

@Configuration
@EnableAsync
public class ThreadConfig {

    @Bean(name = "taskExecutorServiceImpl")
    public ThreadPoolTaskExecutor specificTaskExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.initialize();
        return executor;
    }
}

Пожалуйста, помогите мне в решении проблемы. Я новичок в Spring framework и был бы признателен за любую помощь в этом.

Спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
184
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема решена и не связана с приведенным выше кодом. Проблема была в файле конфигурации и не связана с приведенным выше кодом, который является правильным.

Другие вопросы по теме