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

Обычно 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 ответ

Решение

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

Я использовал Spring PathMatchingResourcePatternResolver, чтобы найти мой 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.

Другие вопросы по тегам