Конвертировать мыльный клиент из Apache Axis 1.4 в CXF 3.x - PullRequest
1 голос
/ 05 июля 2019

Я работаю над проектом по использованию Apache cxf 3.x для реализации мыльного клиента, который изначально был разработан на Axis 1.4. Этот проект использовал ось wsdl2java, чтобы сгенерировать все окурки Java-мыла из опубликованного wsdl. Когда я применил cxf wsdl2java к тому же wsdl и ожидал, что будут сгенерированы одинаковые наборы мыльных заглушек, я начал понимать, что вновь созданные заглушки в CXF стали несовместимыми, так как изменилось много методов. Я действительно ценю любые предложения, которые помогут мне перенаправить логику на новый клиент службы на CXF.

Большинство мыльных пней были очень похожи. Однако похоже, что в подходе CXF отсутствует класс ключей, который использовался верхним уровнем для настройки конечной точки и IP-адреса службы. Допустим, сервис называется Sample. Есть метод SampleLocator.java, который был сгенерирован осью wsdl2java. Когда CXF wsdl2java был применен, его там уже не было. Этот класс SampleLocator был расширен из axis.client.service и реализован из интерфейса Sample при подходе к оси. Однако вместо этого подход CXF генерирует только класс Sample, который расширяет javax.xml.ws.service.

Вот некоторые фрагменты, чтобы показать разницу, На Axis в сгенерированном SampleLocator.java размещены следующие методы,

getSample, 
getServiceName,
getPorts,
setEndpointAddress, etc

На CXF в сгенерированном Sample.java размещены следующие методы,

getSample, etc.

Пример файла wsdl также прилагается ниже для справки (частично),

<service name="Sample">
    <port name="Sample" binding="tns:Sample">
        <SOAP:address location="http://localhost:80"/>
    </port>
</service>
...