我正在处理的应用程序调用许多webservice。就在最近,我整合了另一个需要wsit-client.xml进行Soap身份验证的Web服务。
现在正在运行,但所有其他SOAP服务都已停止工作。
每当调用其中任何一个时,我都会看到像
这样的消息INFO: WSP5018: Loaded WSIT configuration from file: jar:file:/opt/atlasconf/atlas.20130307/bin/soap-sdd-1.0.0.jar!/META-INF/wsit-client.xml.
我怀疑这是导致服务调用失败的原因。
如何在某些soap服务调用中忽略wsit-client.xml?
由于
答案 0 :(得分:2)
通过使用Container和Loader为wsit-client.xml配置动态位置来解决此问题。这样它就不会自动加载。为此,我首先为应用程序实现了一个Container,如下所示
public class WsitClientConfigurationContainer extends Container {
private static final String CLIENT_CONFIG = "custom/location/wsit-client.xml";
private final ResourceLoader loader = new ResourceLoader() {
public URL getResource(String resource) {
return getClass().getClassLoader().getResource(CLIENT_CONFIG);
}
};
@Override
public <T> T getSPI(Class<T> spiType) {
if (spiType == ResourceLoader.class) {
return spiType.cast(loader);
}
return null;
}
}
然后在代码中使用它我这样做
URL WSDL_LOCATION = this.getClass().getResource("/path/to/wsdl/mysvc.wsdl");
WSService.InitParams initParams = new WSService.InitParams();
initParams.setContainer(new WsitClientConfigurationContainer());
secGtwService = WSService.create(WSDL_LOCATION, SECGTWSERVICE_QNAME, initParams);
它就像魔法一样