Если у вас есть контроль над клиентом и сервером, вам не нужно генерировать клиента с wsimport
.В настоящее время я делаю это следующим образом: один проект определяет API для веб-службы.API состоит из интерфейса и всех классов «объектов переноса».Еще один проект реализует сервис.Теперь вы можете распространять API для клиента, который теперь может использовать службу и может использовать все ваши дополнительные бизнес-методы.
Предполагая, что ServiceInterface
является вашим интерфейсом службы, клиент может выглядеть следующим образом:
Service s = Service.create(
new URL("http://example.com/your_service?wsdl"),
new QName("http://example.com/your_namespace", "YourServiceName"));
ServiceInterface yourService = s.getPort(
new QName("http://example.com/your_namespace", "YourPortName"),
ServiceInterface.class);
И вот так у вас есть сервисный клиент.Таким образом, вы можете использовать все свои методы (1), у вас есть полный контроль над вашими пакетами (3), и у вас нет никаких классов-оболочек, поскольку все они генерируются во время выполнения (4).Я думаю, что (2) и этим решается.
Ваш вопрос довольно велик, поэтому, если мне не удается достаточно подробно остановиться на каком-либо пункте, оставьте комментарий, и я попытаюсь подробнее разобраться.