0

我正在开发的应用程序调用了许多 Web 服务。就在最近,我集成了另一个需要 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被忽略?

谢谢

4

1 回答 1

2

通过使用 Container 和 Loader 为 wsit-client.xml 配置动态位置来修复它。这样它不会自动加载。为此,我首先为应用程序实现了一个容器,如下所示

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);

它像魔术一样工作

于 2013-04-08T12:22:04.767 回答