我想从Spring应用程序调用远程SOAP / CXF Web服务。复杂的是我无法通过XML或Java配置在app启动时预先配置调用参数(远程端点URL)。相反,我需要从外部配置动态获取它们,每次调用都获取一个新值。 (实际上,配置由LDAP支持,可通过自定义Java库进行访问。)
¿Spring 4是否提供了实现这一目标的常用方法?
目前,我提供了以下自定义解决方案,但我不喜欢它,因为我需要至少定义一个虚拟代理类DynamicallyConfiguredMyService
。
@Component
class ParentBean {
@Inject
MyService service;
...
service.doAction(); // calling WS
}
interface MyService {
void doAction();
}
@Component
class DynamicallyConfiguredMyService implements MyService {
void doAction() {
getRealService.doAction();
}
private MyService getRealService() {
String url = get URL from external config
MyService endpoint = new MyServiceHelper().getMyService();
Map<String, Object> ctx = ((BindingProvider) endpoint).getRequestContext();
ctx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
return endpoint;
}
}
Spring 4,Java 7,JBoss EAP 6.4.x