Sorry, after some more thought, I realized that you would still have your first endpoint definition. The gateway would be an intermediary (rather than using RequestReplyTemplate or sending directly to a channel and then invoking correlator.getResponse()). For example, something more like this:
Then you would invoke it like this:
Since this would be backed by a ProxyFactoryBean, you could also provide an interface for the proxy (other than the default MessageHandler):
Message response = serviceGateway.handle(message);
In that case, the code would be using the regular argument and return value of that interface, while the gateway proxy converts to and from Messages.
What do you think?