zilcuanu
zilcuanu

Reputation: 3715

service activator acting as outbound gateway for invoking bean method

I am new to spring integration and was going through the definition of service activator. The definition says that it is used to call a method and wrap the result in the response message. The definition also tells that it is a outbound gateway for invoking the bean method. I am not clear on the second statement. As I understand outbound gateway is to send the request from the application to external application and get the response back into the application. So, if a bean is invoked, it is invoked within the application and hence it should be inbound gateway right. Please let me know where I am wrong.

Upvotes: 0

Views: 506

Answers (1)

Gary Russell
Gary Russell

Reputation: 174729

There are two types of integration - with external systems using various protocols, and with legacy java code using method invocation.

Within that, there are one-way integrations (provided by channel adapters) and two-way integration (request/response, provided by gateways). In each case, the integration can be inbound to the message flow, or outbound from it.

The <int: .../> namespace provides inbound and outbound channel adapters for invoking legacy code from the messaging flow, in the latter case (outbound) the method return type must be null. You could also invoke the same method with a service activator, but the channel adapter is preferred because it's clear it's a one-way integration.

On the inbound side, the messaging gateway (<int:gateway/>) is provided to allow legacy java code interact with the messaging flow ("call" it) without any specific dependencies.

There is no <int:outbound-gateway/> for invoking a method because the service activator provides that functionality.

If you can point us to the documentation that caused the confusion, we can try to improve it; please open a documentation JIRA issue.

Upvotes: 1

Related Questions