Мне приходится взаимодействовать с набором веб-сервисов, каждый из которых поставляется со своими WSDL и XSD.XSD иногда объединяются в один файл, иногда распределяются по нескольким файлам (20-30).Однако по своему опыту я знаю, что большая часть структуры сообщений и данных имеют большое общее подмножество, возможно, только 20% различаются между различными транзакциями.
К сожалению, я не контролирую части сервера или объявлениеуслуги, поэтому заставить их исправить это не может быть и речи.Первая версия клиента генерировала все сервисы отдельно, а затем использовала их как отдельные фасады для формирования согласованного сервиса более высокого уровня в качестве адаптера для другой системы.
Я использовал CXF с привязкой JAXB по умолчанию и наложил разные сгенерированные пакетыза каждую услугу.Я сделал это, потому что некоторые большинство служб используют общую модель данных, но не все используют одну и ту же версию или настройку, поэтому у меня возникают конфликты, и поэтому я выбрал грубую силу, чтобы я мог выполнить работу системы.
Однако это вызываеттребования к памяти адаптера, чтобы пройти через крышу, поскольку каждый сервис загружает свой контекст.Прямо сейчас у меня более 500M памяти, используемой только для адаптера, в котором находятся сервисные клиенты, еще до того, как я начну отправлять запросы и обрабатывать ответы.Хотя я могу без проблем запустить систему, используя текущую ситуацию, это создает ограничения, которые ставят под угрозу развертывание решения;Мой клиент хотел бы значительно сократить это (60% или более), чтобы эта система могла быть установлена вместе с другими без необходимости обновления оборудования.
Вопрос заключается в следующем: Существует ли инструмент или метод, который быпозвольте мне объединить общие части каждой транзакции так, чтобы они могли быть сгенерированы один раз и ссылаться там, где это необходимо?
Я не связан с CXF или JAXB, кроме времени, необходимого для перефакторингасистема к другой структуре или привязкам данных.
Заранее благодарю за помощь.
--- EDIT ---
Спасибо, Блейз.Это указывает на особенность JAXB, которая будет полезна: эпизоды.К сожалению, мне все еще нужно извлечь общую базовую часть различных сервисов.Итак, теперь мне нужно средство для извлечения этих общих частей через структурный дифференциал, то есть инструмент сравнения, который бы знал структуру и иерархию типов, описанную XSD, чтобы были установлены надлежащие ссылки для соединения общих секций сспециализированные части.