Фон:
У меня есть предыдущий опыт использования веб-служб Apache CXF, но я немного новичок в создании интерфейса конечной точки службы (SEI) и реализации службы с помощью инструмента wsdl2java, который поставляется вместе с дистрибутивом Apache CXF.
Задача:
В настоящее время я работаю над реализацией веб-службы на основе SOAP, которая будет использоваться внешними системами. Я уже определил сообщения (XSD) и файл WSDL. Я попытался создать SEI с помощью инструмента wsdl2java из Apache CXF. SEI правильно генерируется с типами JAXB в качестве входных параметров и типов возврата для методов веб-службы.
Когда я смотрю на код, созданный для класса реализации службы, я вижу, что он расширяет класс javax.xml.ws.Service. Кроме того, создается множество перегруженных методов, которые имеют то же имя, что и методы в интерфейсе конечной точки службы, с добавлением «Soap12Http» к имени метода. Некоторые из этих методов принимают параметр типа WebServiceFeature... features, тогда как другие не принимают никаких параметров. Пример :
public class Query extends Service {
@WebEndpoint(name = "product_query-soap12-http")
public IQuery getProductsSoap12Http(WebServiceFeature... features) {
return super.getPort(getProductsSoap12Http, IQuery.class,features);
}
}
*где IQuery — это интерфейс конечной точки службы.
Проблема:
- Я ожидал, что класс реализации службы реализует интерфейс конечной точки службы вместо расширения javax.xml.ws.Service. Это обоснованное ожидание?
- Я ожидал, что класс реализации службы реализует методы из интерфейса конечной точки службы. Это обоснованное ожидание?
- Я также хотел бы знать, можно ли попросить команду wsdl2java создать банку для JAXB POJOS вместо того, чтобы создавать их как файлы классов.