一些主数据需要从SAP发到Salesforce,receiver channel使用SOAP adapter。因为Salesforce的loadbalancer,调用Salesforce web service的URL有可能变动,所以不能在receiver channel里静态设定目的地URL,而需要在dynamic configuration里动态设定key为TServerLocation的值。要使动态设定的值生效,需要两点:
- 如果channel里给定的URL是一个有效的URL,那么这个静态的URL会被adapter使用,而不是dynamic configuration里的值
- 如果dynamic configuration里的URL使用HTTP协议,那么channel里的相应设定必须为http://,如果动态设定的URL为HTTPS,那么channel里相应的设置为https://.
在message mapping中可以使用下面的UDF来设定。
public String setSoapURL(String url, Container container) throws StreamTransformationException{
String namespace = "http://sap.com/xi/XI/System/SOAP";
String parameterKey = "TServerLocation";
DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get( StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create(namespace, parameterKey);
if (conf != null) {
conf.put(key, url);
}
return "";
}
没有评论:
发表评论