0

通常 wsit-client.xml 具有如下导入语句:

<import location="foo.xml" namespace="http://foo.org/" />

我发现他们可以在 classpath/META-INF 上在线一个 wsit-client.xml,但是我可以引用一个位于该 wsit-client.xml 中另一个 jar 中的 xml 吗?就像是 :

<import location="classPathResource/WEB-INF/foo.xml" namespace="http://foo.org/" />

我想创建一个 wsit-client.xml,其中包含我所有 Web 服务的导入,但我想将所有不同 Web 服务的配置分离到不同的项目中。

4

1 回答 1

1

我已经通过在 wsit-client.xml 中创建 URLStreamHandler 来修复它我现在可以定义 location="myprotocol://foo.xml"

我使用 spring 的 PathMatchingResourcePatternResolver 在另一个项目/jar 中找到我的 xml 文件。

public class Handler extends URLStreamHandler {

@Override
protected URLConnection openConnection(URL u) throws IOException {
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    final URL resourceUrl = resolver.getResource(u.getPath()).getURL();
    if (resourceUrl == null) {
        throw new IOException(String.format("File %s not found on the classpath", u.getFile()));
    }
    return resourceUrl.openConnection();
}
}

我没有使用 VM 参数来定义处理程序,但我已经实现了一个 URLStreamHandlerFActory,就像这里解释的URL 以从 Java 中的类路径加载资源

有关编写自己的协议处理程序的更多信息可以在此站点上找到:http: //java.sun.com/developer/onlineTraining/protocolhandlers/

我仍然有 1 个项目,其中包含单个 wsit-client.xml 并引用了我的所有 Web 服务配置,但至少我已经设法将不同 maven 项目中所有不同服务的配置分开。

于 2010-10-27T08:05:41.740 回答