我正在努力使用Spring Integration
MarshallingWebServiceInboundGateway
的很好的例子
我整理了一个工作示例,该示例使用MarshallingWebServiceInboundGateway
公开了Order服务,当调用该示例时,它使用MarshallingWebServiceOutboundGateway
消耗了订单明细服务
@ServiceActivator(inputChannel= ChannelNames.ORDER_INVOCATION, outputChannel = ChannelNames.ORDER_DETAIL_REQUEST_BUILDER)
OrderRequest getOrder(OrderRequest orderRequest) {
return orderRequest;
}
这在某种程度上是可行的,但是我对以下方法的期望是这应该是Web服务方法的签名,即返回OrderResponse
类型。当我通过调用其他POJO手动构建OrderResponse
时,这种方式最初是通过这种方式工作的,但是我无法弄清楚如何保留原始Web服务方法签名并在内部使用Spring Integration进行实现,即通过调用渠道进行转换,然后调用订单明细服务(使用MarshallingWebServiceOutboundGateway
)。
如果您知道执行此操作的任何代码示例,请分享。我遇到了这个问题,但这是直接建立响应(不使用Spring Integration渠道):https://bitbucket.org/tomask79/spring-boot-webservice-integration/src/master/
答案 0 :(得分:0)
听起来有些误解,什么是Spring Integration流及其端点如何工作。
Message
,Channel
,Endpoint
因此,您要公开一个SOAP服务,该服务将在内部调用另一个SOAP服务。
您已经正确地开始使用MarshallingWebServiceInboundGateway
。我猜想这会在其通道中产生一个OrderRequest
对象。它期望OrderResponse
中有一个replyChannel
(标头中的显式或临时)。我不确定您的getOrder()
会做什么,但是如果还存在一个变压器和MarshallingWebServiceOutboundGateway
,则需要考虑将它们全部连接到流中。因此,我认为您的服务成果应转到作为变压器输入的通道。此变压器的输出应转到MarshallingWebServiceOutboundGateway
。并且此网关的结果可能会转到其他一些转换器以构建OrderResponse
,而该MarshallingWebServiceInboundGateway
可能会进入migrants<-sqldf("select count(*),CONSOLIDATING_PLAN_CODE from data_01 where MIGRATION ='yes' group by CONSOLIDATING_PLAN_CODE")
non_migrants_FL<-sqldf(sprintf("select * from data_01 where CONSOLIDATING_PLAN_CODE = 'FL' order by RANDOM() limit %d",
round(nrow(data_01[which(data_01$CONSOLIDATING_PLAN_CODE=='FL' & data_01$MIGRATION=='no'),]) * 0.4, 0)))
non_migrants_IL<-sqldf(sprintf("select * from data_01 where CONSOLIDATING_PLAN_CODE = 'IL' order by RANDOM() limit %d",
round(nrow(data_01[which(data_01$CONSOLIDATING_PLAN_CODE=='IL' & data_01$MIGRATION=='no'),]) * 0.13, 0)))
non_migrants_KA<-sqldf(sprintf("select * from data_01 where CONSOLIDATING_PLAN_CODE = 'KA' order by RANDOM() limit %d",
round(nrow(data_01[which(data_01$CONSOLIDATING_PLAN_CODE=='KA' & data_01$MIGRATION=='no'),]) * 0.19, 0)))
的回复通道。
如果这不是您期望的解释,那么我将要求您重新表达您的问题...