2014-11-25 6 views
0

У меня есть webservice orchestrator, который вызывает несколько веб-сервисов. Для каждого вызова webservice я должен написать длинный код сопоставления перед вызовом службы нисходящего потока.Jaxb Marshalling Unmarshalling вместо Java Beans

EDIT: У меня есть wsdls для каждой из этих служб, и в настоящее время я сгенерировал классы с использованием jaxb. Ответы каждой из этих служб сохраняются в общем объекте, который затем передается на следующий вызов службы, где у меня есть трансформатор, который выбирает значения из этого общего объекта и заполняет DTO нисходящего запроса. Логика оркестровки выполняется на бизнес-уровне, прежде чем решать, какой веб-сервис необходимо вызвать. Максимальное количество элементов, отправленных в любой веб-сервис, составляет около 200. Некоторые из этих значений получены из входящего запроса, некоторые из них по умолчанию, а некоторые из них являются значениями из других вызовов веб-службы.

Я хочу уменьшить количество контрольных нулевых проверок и получить/установить код в моих классах сопоставления, не отрицательно влияя на текущую производительность.

Является ли Marshalling и UnMarshalling и использование инструментов Jaxb и XML для чтения и записи данных лучшим способом приблизиться к этому в моем сценарии?

В любом случае мой вызов веб-службы является запросом SOAP. Ява-бобы просто используются в этой отрасли только потому, что все ее используют?

Если маршаллинг/unmarshalling с jaxb не является жизнеспособной альтернативой, есть ли лучшие способы (с точки зрения производительности и многословия) решить эту проблему?

Я пробовал JXPath и Mapstruct, но писать код сопоставления или переопределять абстрактную фабрику так же утомительно с этими двумя.

ответ

1

Не ставьте технологию на первое место. Вы разрабатываете требования и ограничения, а не технологию на первом месте.

Поэтому трудно дать конкретную рекомендацию, не зная ваших конкретных требований и ограничений. Есть ли у вас много бизнес-логики при оркестровке или это просто сквозной? Каковы требования к производительности? Другие нефункциональные требования? Сложны ли услуги? Известны ли они заранее? Являются ли схемы для веб-сервисов действительными/хорошими? Является ли структура оркестровки статичной или можно ли динамически добавлять новые службы? Сколько данных проходит? Должен ли он быть построен или его можно купить? И т.д. и т.д.

Это всего лишь несколько вопросов, которые пришли мне на ум, когда я печатал. И в зависимости от ответов я бы разработал его по-разному, с разными наборами инструментов. От простых XSLT до полноценных SOA-стеков.

Относительно JAXB, a Отказ от ответственности: Я на самом деле большой поклонник JAXB, с большим опытом работы с ним на протяжении многих лет. Я несколько раз решал задачи сопоставления (например, вы набросал) с JAXB, например, с Dozer или моим собственным плагином и интерфейсами Copyable. Но я не могу рекомендовать его, если ваши требования и ограничения не ясны.