Моя асинхронная реализация не работает, хотя кажется, что я все сделал правильно.
Я вызываю свой асинхронный метод из моего класса 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 и был бы признателен за любую помощь в этом.
Спасибо