Java 在Spring中动态配置远程web服务端点
我想从Spring应用程序调用远程SOAP/CXF web服务。复杂的是,我无法在应用程序启动时通过XML或Java配置预先配置调用参数(远程端点URL)。相反,我需要从外部配置中动态地获取它们,每次调用都会获取一个新值。(实际上,配置是由LDAP和accessbible通过自定义Java库支持的。) Spring4是否提供了实现这一目标的通用方法 目前,我提供了以下定制解决方案,但我不太喜欢它,因为我至少需要定义一个虚拟代理类Java 在Spring中动态配置远程web服务端点,java,spring,Java,Spring,我想从Spring应用程序调用远程SOAP/CXF web服务。复杂的是,我无法在应用程序启动时通过XML或Java配置预先配置调用参数(远程端点URL)。相反,我需要从外部配置中动态地获取它们,每次调用都会获取一个新值。(实际上,配置是由LDAP和accessbible通过自定义Java库支持的。) Spring4是否提供了实现这一目标的通用方法 目前,我提供了以下定制解决方案,但我不太喜欢它,因为我至少需要定义一个虚拟代理类dynamicallyconfiguedmyservice @Com
dynamicallyconfiguedmyservice
@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;
}
}
@组件
类ParentBean{
@注入
我的服务;
...
service.doAction();//调用WS
}
接口MyService{
无效动作();
}
@组成部分
类dynamicallyconfigueredyservice实现MyService{
无效doAction(){
getRealService.doAction();
}
私有MyService getRealService(){
字符串url=从外部配置获取url
MyService端点=新建MyServiceHelper().getMyService();
映射ctx=((BindingProvider)端点).getRequestContext();
put(BindingProvider.ENDPOINT\地址\属性,url);
返回端点;
}
}
Spring4、Java7、JBossEAP6.4.x