2013-02-19 2 views
1

У меня есть проект Java с различными модулями на нем. Проект имеет один основной модуль, в котором хранятся все общие файлы конфигурации. Каждый модуль имеет отдельные файлы конфигурации, такие как .properties файлов, hibernate.cfg, web.xml и т. Д. Не обязательно, чтобы каждый раз все модули были в финальной сборке.Как конкатенировать два web.xml?

Моя проблема заключается в том, что 3 модуля, такие как A, B & C, присутствуют. Каждый из них имеет значение web.xml и содержит только необходимые сервлеты и карты. Я хочу знать, как объединить эти web.xml при построении. Я знаю, что от ant я могу вызвать приложение Java. Позиция тегов важна в web.xml.

Как можно эффективно связать эти web.xml? Я попробовал xstream для этого, но это был провал.

ответ

0

У вашего ответа есть ответ. Напишите небольшую программу java для анализа всего XML, который вы хотите объединить, получите требуемый nodeList, напишите в новом XML в том порядке, в котором вы хотите. Позвоните в эту программу java во время сборки Ant.

+0

У вас есть пример кода или ссылку, где я могу начать делать это? –

0

Существуют следующие способы, которыми Вы можете достичь этого:

  1. использованием XSTREAM маршалинг для ваших целей; см. раздел question on marshalling of Map о том, как маршалировать объект. или используйте руководство official
  2. Используйте синтаксический анализ SAX путем его ручного преобразования.
  3. Преобразуйте весь XML в JSON с помощью JSON.org и объедините каждый из XML и перестройте XML из JSON. ПРИМЕЧАНИЕ: для этой цели не используйте xstream, он меняет весь XML-код, вызывая ошибки проверки для полученных XML-данных.
0

Если вы используете контейнер сервлетов 3.0, то только ваш основной модуль будет иметь web.xml и другие ваши модули будут каждый из них предоставляет свои собственные web-fragment.xml.

+0

К сожалению, мой работодатель не хочет, чтобы я перешел на сервлет 3 прямо сейчас –

Смежные вопросы