鉴于我有2 IntegrationFlow
同一个国家的 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
在两个流中?
我刚刚把你的代码复制到一个新的应用程序中,固定了通道名称,并把网关放在原型范围内,对我来说是有效的......
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
SimpleWebServiceOutboundGateway webServiceOutboundGateway() {
SimpleWebServiceOutboundGateway outboundGateway = new SimpleWebServiceOutboundGateway("url");
return outboundGateway;
}