将wsit-client.xml中的位置导入到另一个jar文件中,使用URL字符串在类路径中查找文件

时间:2010-10-21 12:52:10

标签: java url jax-ws java-metro-framework wsit

通常,wsit-client.xml包含如下导入语句:

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

我发现他们可以在类路径/ 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服务的配置分离到不同的项目中。

1 个答案:

答案 0 :(得分: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 to load resources from the classpath in Java

有关编写自己的协议处理程序的更多信息,请访问以下网站:http://java.sun.com/developer/onlineTraining/protocolhandlers/

我还有一个包含单个wsit-client.xml的项目,其中包含对我所有Web服务配置的引用,但至少我已设法将不同maven项目中所有不同服务的配置分开。 / p>