Импортируйте расположение в файле 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.