Учитывая, что у меня есть 2 IntegrationFlow
s, которые ссылаются на один и тот же SimpleWebServiceOutboundGateway
bean:
@Bean
IntegrationFlow getDataA(
Jaxb2Marshaller xmlMarshaller,
SimpleWebServiceOutboundGateway webServiceOutboundGateway) {
return IntegrationFlows.from("getDataA")
.transform(marshaller(xmlMarshaller))
.transform(new ResultToStringTransformer())
.handle(webServiceOutboundGateway)
.transform(unmarshaller(xmlMarshaller))
.get();
}
@Bean
IntegrationFlow getDataB(
Jaxb2Marshaller xmlMarshaller,
SimpleWebServiceOutboundGateway webServiceOutboundGateway) {
return IntegrationFlows.from("getDataB")
.transform(marshaller(xmlMarshaller))
.transform(new ResultToStringTransformer())
.handle(webServiceOutboundGateway)
.transform(unmarshaller(xmlMarshaller))
.get();
}
@Bean
SimpleWebServiceOutboundGateway webServiceOutboundGateway(HttpComponentsMessageSender httpComponentsMessageSender) {
SimpleWebServiceOutboundGateway outboundGateway = new SimpleWebServiceOutboundGateway("url");
outboundGateway.setMessageSender(httpComponentsMessageSender);
return outboundGateway;
}
Когда я выполняю код, я получаю:
Caused by: java.lang.IllegalArgumentException: An AbstractMessageProducingHandler may only be referenced once (webServiceOutboundGateway) - use @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) on @Bean definition.
Когда я добавляю @Scope(SCOPE_PROTOTYPE)
до webServiceOutboundGateway
, я получаю одно и то же исключение
Как я могу повторно использовать webServiceOutboundGateway
в обоих потоках?