Импортируйте расположение в wsit-client.xml в файл в другом jar-файле, используя строку URL-адреса, чтобы найти файл в пути к классам. - PullRequest
0 голосов
/ 21 октября 2010

Обычно wsit-client.xml имеет операторы импорта, подобные этому:

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

Я обнаружил, что они могут быть в сети один wsit-client.xml в classpath / META-INF, но могутЯ имею в виду XML, который находится в другой банке в этом wsit-client.xml?Что-то вроде:

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

Я хотел бы создать один файл wsit-client.xml, содержащий импорт для всех моих веб-сервисов, но я хочу разделить конфигурацию для всех различных веб-сервисов на разные проекты.

1 Ответ

1 голос
/ 27 октября 2010

Я исправил это, создав URLStreamHandler в wsit-client.xml. Теперь я могу определить location = "myprotocol: //foo.xml"

. Я использовал SpringMathingResourcePatternResolver, чтобы найти мой xml.файл в другом проекте / jar.

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.со ссылками на все мои конфигурации веб-сервисов, но по крайней мере мне удалось разделить конфигурацию для всех сервисов в разных проектах maven.

...