Я занимаюсь автогенерированием классов soap
webservice с использованием CXF
(wsdl2java).
Созданные нами мыльные методы исходят из тэгов xml, таких как:
<wsdl:message name="GetAvailabilityReq">
<wsdl:part name="parameters" element="q1:GetAvailabilityReq"
xmlns:q1="http://path.to./MyService" />
</wsdl:message>
Сгенерированный веб-сервис будет иметь различные методы, такие как:
@WebService
public interface MyWebservice {
@WebResult
@WebMethod
public AvailabilityRsp getAvailability(@WebParam AvailabilityReq req);
@WebResult
@WebMethod
public BookingRsp getBooking(@WebParam BookingReq req);
}
Как я могу сгруппировать все Запросы в одном interface
?
Например, AvailabilityReq implements BaseReq
и BookingReq implements BaseReq
? Или это могло бы быть extends
.
Примечание. Все запросы не имеют общего интерфейса с предоставленным файлом wsdl
, но я бы хотел, чтобы это сгенерировалось.
Я, вероятно, должен сказать jaxb/cxf об этом при автогенерации, но как?
Решение заключается в предоставлении следующей информации в pom.xml:
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.8.2</version>
</dependency>
<extraargs>
<extraarg>-xjc-XautoInheritance</extraarg>
<extraarg>-xjc-XautoInheritance-xmlRootElementsImplement=package.to.MyCommonInterface</extraarg>
</extraargs>