So far my quick POC looks like this
Code:
public class DelegatingMessageSender implements WebServiceMessageSender {
private ThreadLocal<String> lookupValue;
public void setLookupValue(String value) {
lookupValue.set(value);
}
private Map<String, WebServiceMessageSender> messagerSenders;
public void setMessagerSenders(
Map<String, WebServiceMessageSender> messagerSenders) {
this.messagerSenders = messagerSenders;
}
public DelegatingMessageSender() {
super();
lookupValue = new ThreadLocal<String>();
messagerSenders = new HashMap<String, WebServiceMessageSender>();
}
public WebServiceConnection createConnection(URI uri) throws IOException {
WebServiceMessageSender messageSender = messagerSenders.get(lookupValue.get());
return messageSender.createConnection(uri);
}
public boolean supports(URI uri) {
WebServiceMessageSender messageSender = messagerSenders.get(lookupValue.get());
return messageSender.supports(uri);
}
}
And I have a service activator with this DelegatingMessageSender injected so I can set the thread local variable.