В веб-сервисе SOAP: - Основная концепция веб-сервиса заключается в том, что у него есть потребитель и производитель. Потребитель - это тот, который потребляет веб-сервис, а производитель - это тот, который производит веб-службу. Производитель публикует свою услугу, чтобы потребитель мог ее использовать. Он в основном публикует файл wsdl, чтобы вы могли создать клиентский код или банку из него и можете напрямую вызывать его из своего кода. Вы можете использовать мыльный интерфейс для непосредственного вызова веб-службы. Если вы ищете генерировать код производителя из wsdl, это не будет достаточно хорошим, так как он не будет предоставлять вам бизнес-логику, и вам нужно реализовать его самостоятельно. Это не рекомендуется. Как правило, первая реализация Java написана и на ее основе создается wsdl, из которого создаются клиентские банки для того, чтобы клиенты использовали веб-службу в своем коде. Для непосредственного тестирования используется производитель soapui. Если вы хотите создать производителя, это прямой процесс. Необходимо создать динамический проект в eclipse -> создать класс -> использовать @WebService (serviceName = "xyz") для класса и аналогично на уровне метода определить @WebMethod. Разверните его как запущенный на сервере, и вы закончите работу с продюсером веб-сервиса Hello World.
Для создания клиента: -
Давайте рассмотрим пример, опубликованного WSDL в сети, как: -
http://www.webservicex.net/geoipservice.asmx?WSDL
Прежде всего, необходимо создать клиент банку или Java-классы, как: -
wsimport -keep -s C:\wsdl http://www.webservicex.net/geoipservice.asmx?WSDL
Посмотрите на документацию или посмотрите имя службы в wsdl. Это будет GeoIPService. Теперь в классе вызывается метод WebService, как: -
package com.soap.client;
import net.webservicex.GeoIP;
import net.webservicex.GeoIPService;
import net.webservicex.GeoIPServiceSoap;
public class SoapWebServiceClient {
public static void main(String[] args) {
GeoIPService ipService = new GeoIPService();
GeoIPServiceSoap gp = ipService.getGeoIPServiceSoap();
GeoIP ip = gp.getGeoIP("117.198.208.1"); //google.com
System.out.println(ip.getCountryName());
}
}
Теперь аналогично для локального WSDL вы можете создавать классы и банки с помощью с помощью Axis2 или просто wsimport
Поместите WSDL и схемы в папке, ниже: -
C:\wsdl>wsimport -keep -s C:\wsdl C:\wsdl
C:\wsdl>wsimport -clientjar client.jar C:\wsdl
Он создаст для вас клиента. Посмотрите имя службы и аналогичным образом можете протестировать развернутую службу из java-кода, как показано выше.
Для тестирования с использованием soapui вам необходимо скачать его и создать новый проект с мылом. Дайте имя и перейдите на свой локальный диск, где присутствуют все схемы и wsdl. Он создаст все ваши запросы. Вам нужно заполнить значения в параметрах запроса («?») И запустить службу. Если все будет хорошо, это покажет результат.
Примечание: -
wsimport это инструмент командной строки для эталонной реализации JAX-WS. JAX-WS RI использует JAXB для привязки данных.
Axis2 в какой-то мере реализует API JAX-WS, поэтому созданные артефакты Java могут быть совершенно разными по сравнению с теми, которые генерируются JAX-WS RI. Также Axis2 не использует JAXB, но вместо этого предлагает выбор ADB (по умолчанию), Apache XmlBeans или JiBX для привязки данных. Наиболее широко используются либо xmlbeans, либо JAXB.
Попробуйте '-ss' варианта, чтобы создать каркас для сервера. – approxiblue
- это то, что в строке 'wsdl2java.sh -uri tmp.wsdl -d adb -s'? т.е. преобразовать его в 'wsdl2java.sh -uri tmp.wsdl -d adb -s -ss'? –
Как бы вы также протестировали новую услугу? –