Обычно то, что я видел, используя набор инструментов IBM Rational:
Создайте все JAXB и классы обслуживания и сохраните их вместе с проектом сервиса. Затем заново создайте JAXB и клиентские классы служб и сохраните их в клиентском проекте.
Да, это дублирование. Но я думаю, что причина этого в том, что он разделяет интересы поставщиков услуг и потребителей услуг. С точки зрения набора инструментов, как узнать, является ли ваш клиент .NET, C ++ или Java? Или наоборот. Если вы клиент, как вы узнаете, является ли поставщик .NET, C ++ или Java и т. Д.? Вы не Таким образом, IBM предоставляет такой способ разделения интересов.
Теперь недостатком является то, что у вас есть дублирующий код, если у вас есть источник как для поставщика услуг, так и для потребителя. Это может быть трудно поддерживать.
Так что, возможно, было бы лучше сгенерировать сервис и клиента в проект Java (не проект J2EE или веб-проект) и сделать из этого банку. Таким образом, все классы JAXB есть (и только один раз). WSDL есть (один раз). Служба существует один раз и может быть развернута на сервере в EAR или WAR. И клиент существует на тот случай, если вы захотите отдать его кому-нибудь, чтобы он воспользовался вашим сервисом. Если ваш клиент допускает динамическое создание на основе расположения WSDL, даже лучше.
У меня есть сообщение, которое может помочь вам в этом с точки зрения волшебника. Это больше относится к безопасности, но вы можете найти несколько полезных советов.