1. Пример 1 (в основном см. [2])
1.1. Системные функции:
Разработать сервис калькулятора рассчитывает обслуживание, которое включает в себя такие операции, как плюс, вычитание, умножение и деление.
1.2. Подготовка перед разработкой:
Установить Eclipse-Jee;
Загрузите последнюю версию AXIS2, URL-http://axis.apache.org/axis2/java/core/download.cgi, выберите пакет ZIP стандартного двоичного распределения и разобщите имени каталога Axis2-1.4.1. Структура файла в каталоге заключается в следующем:
1.3. Конфигурация перед разработкой:
В панели меню Eclipse, Window -> Preferences -> Веб -сервис -> Преимущества Axis2, выберите местоположение пакета декомпрессии Axis2 в месте выполнения Axis2. После настройки нажмите «ОК». (Как показано на картинке)
1.4. Разработать веб -сервис:
(1) Создать новый проект Java и назвать его «WebServicetest1»
(2) Создайте новый класс и назовите его «Calculates Service». Полный код заключается в следующем:
Пакет edu.sjtu.webservice; /*** Операция калькулятора* @author rongxinhua*/public class calculates service {// добавление public float plus (float x, float y) {return x + y; } // вычитание public float minus (float x, float y) {return x - y; } // Несколько публичных плавания умножьте (float x, float y) {return x * y; } // dividation public float divide (float x, float y) {if (y! = 0) {return x /y; } else return -1; }}(3) в проекте «Webservicetest1» Новый -> Другое, найдите «веб -службу» в разделе «Веб -сервис»;
(4) Следующий шаг (следующий), в поле «Объект веб -служб», нажмите «Просмотр» в реализации службы, введите объект «Объект классов» и найдите класс Calculateservice, который мы только что написали. (Рисунок ниже). Нажмите «ОК», и вы вернетесь в диалоговое окно веб -службы.
(5) В диалоговом окне веб -службы настройте слайдер в типе веб -службы в положение «Служба старта» и настройте слайдер в типе клиента в положение «тестового клиента».
(6) На правой стороне схемы ползунка веб -типа есть «конфигурация». Нажмите на вариант ниже, чтобы ввести введенное поле «Конфигурация развертывания службы» и выберите соответствующий сервер (я использую Tomcat6.0 здесь) и среда выполнения веб -службы (выберите Apache Axis2), как показано на рисунке ниже:
(7) После нажатия OK он вернется в диалоговое окно веб -службы. Точно так же существует также «конфигурация» на правой стороне слайдера в типе клиента, и необходимо выполнить соответствующую настройку. Шаги такие же, как и выше. После завершения, следующий -> Далее готов. Вход AXIS2 Веб -служба конфигурации бобов Java, мы выбираем генерировать Services.xml services.xml по умолчанию, как показано на рисунке ниже:
(8) Когда вы прибываете в диалоговое окно «Пуск» сервера, есть кнопка «Сервер начального» (как показано ниже). Нажмите на него, чтобы запустить сервер Tomcat.
(9) После ожидания запуска нажмите «Далее -> Далее», все будет сделано по умолчанию и, наконец, нажмите «Закончить». Наконец, появляется следующий интерфейс: (Web Service Explorer), где мы можем проверить наши веб -сервисы. (Если вы откроете его с помощью браузера, используйте следующий адрес: http://127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp?org.eclipse.wst.ws.explorer=3). Как показано на рисунке ниже:
Примечание. Откройте Explorer Web Service Explorer в браузере (иногда проводник веб -сервисов закрыт в Eclipse, который может быть открыт таким образом)
Первый адрес входа в систему: http://127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp. Затем выберите вкладку Explorer Web Service в верхнем правом углу веб -страницы. Затем введите адрес WSDL: http: // localhost: 8080/webservicetest1/services/calculates service? WSDL. Этот адрес WSDL - WSDL, который мы только что выпустили. Нажмите Go, как показано на следующем рисунке:
Затем вы можете увидеть следующий интерфейс:
(10) Тест относительно прост. Например, мы выбираем операцию «плюс» (должны быть рассчитаны на рассмотрение ServicesOAP11). Появится следующая рисунка. Введите 1 в поле x ввода, введите 2 в поле ввода Y и нажмите «Go», и результат 3.0 будет отображаться в строке состояния. Тесты других методов похожи. Результаты показаны на рисунке выше.
1.5. Calculates Sperive Client вызывает программу
Мы определили методы добавления, вычитания, умножения и деления и опубликовали эти методы в качестве услуг. Теперь все, что нам нужно сделать, это позвонить в эти услуги. Программа вызова клиента, как показано в следующем коде: CalculateserviceTest.java
пакет edu.sjtu.webservice.test; Импорт javax.xml.namespace.qname; Импорт org.apache.axis2.axisfault; импорт org.apache.axis2.addressing.endpointreference; Импорт org.apache.axis2.client.options; импорт org.apache.axis2.rpc.client.rpcserviceclient; Общедоступный класс CallateserviceTest { / ** * @param args * @throws axisfault * / public static void main (string [] args) бросает axisfault {// todo автоматически сгенерированный метод // вызывающий веб-сервис с использованием метода RPC rpcserviceclient serviceclient = new Rpcserviceclient ();); Параметры параметров = serviceclient.getoptions (); // Укажите URL, чтобы позвонить WebService EndPointreference TargetEPR = new EndPointreference ("http: // localhost: 8080/webservicetest1/services/calculateservice"); Options.Setto (TargetEpr); // Укажите метод и пространство имен файла wsdl в компьютере, который можно назвать: edu.sjtu.webservice. Qname opaddentry = new qname ("http://webservice.sjtu.edu", "plus"); // addqname opaddentryminus = new qname ("http://webservice.sjtu.edu", "Минус") ;/ // subtractionqname opaddentry.ed QName ("http://webservice.sjtu.edu", "multiply"); // умножьте qname opaddentrydivide = new qname ("http://webservice.sjtu.edu", «Разделите»); // делить // Укажите значения Plus Plus Method - это два, и NAMEL -namely ad ad -abject -number, а также номера, а также номера, а также номера, а также ad adder, а также номера, а также номера. opaddentryargs = new Object [] {1,2}; // Укажите тип данных возвращаемого значения класса метода плюс [] classe = new Class [] {float.class}; // Вызовите метод плюса и выводит возвращаемое значение системы метода. System.out.println (Serviceclient.invokeblocking (OpaddentryMinus, Opaddentryargs, Classes) [0]); System.out.println (Serviceclient.invokeblocking (opaddentrymultiply, opaddentryargs, классы) [0]); System.out.println (Serviceclient.invokeblocking (opaddentryDivide, opaddentryargs, классы) [0]); }}Результаты работы:
3.0
-1.0
2.0
0,5
2. Пример
2. HelloService
(1) Сначала определите метод обслуживания, код выглядит следующим образом:
Пакет edu.sjtu.webservice; открытый класс helloService {public String sayshellonew () {return "hello"; } public String sayshellotopersonNew (string name) {if (name == null) {name = "никто"; } вернуть "Привет," + name; } public void updatedAta (String Data) {System.out.println (data + "updated."); }} (2) См. Пример 1, чтобы опубликовать этот метод в качестве услуги.
(3) Напишите клиентский код для вызова Webservice (основная ссылка [5])
Самая большая разница между этим примером и другими примерами здесь. Другие примеры, как правило, должны генерировать клиентскую заглушку на основе Сервиса WSDL только сейчас, а затем вызовать службу через заглушку. Этот метод кажется относительно одиноким. Клиент должен нуждаться в заглушке для доступа к сервису, что очень несправедливо. Клиент в этом примере не использует метод STUB, но реализует общий метод вызова и не требует какой -либо клиентской заглушки для доступа к Сервису. Вам нужно только указать адрес веб -сервиса, имя операции, параметр и тип возврата функции. Код выглядит так:
HelloServicetest2.javapackage edu.sjtu.webservice.test; Импорт javax.xml.namespace.qname; Импорт org.apache.axis2.axisfault; импорт org.apache.axis2.addressing.endpointreference; Импорт org.apache.axis2.client.options; импорт org.apache.axis2.rpc.client.rpcserviceclient; открытый класс helloServicetest2 {private RpcServiceClient Serviceclient; варианты частных вариантов; частное конечное местоположение TargetEPR; public helloServicetest2 (String Endpoint) Throws Axisfault {serviceclient = new RpcServiceClient (); опции = serviceclient.getoptions (); targetepr = new Endpointreference (конечная точка); Options.Setto (TargetEpr); } public object [] invokeop (String TargetNamespace, String Opname, Object [] Opargs, Class <?> [] OpreTurnType) Throws Axisfault, ClassNotFoundException {// Установить имя операции QName OpqName = new QName (TargetNamesPace, OpName); // Установить возвращаемое значение // class <?> [] Opreturn = new Class [] {opreturntype}; // Параметры, в которых необходимо пройти операцию, уже приведены в параметрах. Здесь мы напрямую называем return serviceclient.invokeblocking (opqname, opargs, opreturntype); }/** * @param args * @Throws AxiSfault * @Throws classNotFoundException */public static void main (string [] args) throws axisfault, classnotfoundexception {// todo Auto Generated Method Stub Final String Endpointreceer = "http: // localhost: 8080/webservicet1/hellosersecrece =" http: // localhost: 8080/webservicetest1/hlyservice; final String TargetNamesPace = "http://webservice.sjtu.edu"; HelloServicetest2 Client = new HelloServiceTest2 (EndPointreference); String opname = "sayhellotopersonnew"; Object [] opargs = new Object [] {"My Friends"}; Класс <?> [] Opreturntype = new Class [] {String []. Class}; Object [] response = client.invokeop (TargetNamespace, Opname, Opargs, OpreturnType); System.out.println ((((String []) ответ [0]) [0]); }}Запустите программу и нажмите «Запустить приложение» as-> Java. Вы можете видеть, что вывод консольного порта таков: Привет, мои друзья, указывая на то, что звонок клиента успешен. Самая большая разница и преимущество этого примера отражены в методе вызова клиента, или, другими словами, способ инициировать сервисные вызовы. Хотя код немного больше, чем заглушка клиента, этот метод объединяется и не требует производства кода STUB Stub, который решает проблему, что у клиента много классов. Если читатель далее инкапсулирует эти коды, я думаю, что метод вызова прост, просто передайте соответствующие параметры, что лучше иллюстрирует преимущества сервисных вызовов. Более того, этот метод проще и яснее, и вы можете сказать конкретное значение с первого взгляда. Нет необходимости делать некоторые механизмы класса STUB.
(4) Перепишите код службы вызова клиента
(3) Код клиентского приложения, упомянутый в следующем, немного сложно написать. Вышеуказанный клиент, вызывая программу службы, переписана, что намного проще. Код заключается в следующем:
Helloservicetest.javaimport javax.xml.namespace.qname; Импорт org.apache.axis2.axisfault; импорт org.apache.axis2.addressing.endpointreference; Импорт org.apache.axis2.client.options; импорт org.apache.axis2.rpc.client.rpcserviceclient; открытый класс helloServicetest {public static void main (string args []) бросает axiSfault {// вызовать веб -сервис rpcServiceClient с использованием rpc serviceclient = new rpcServiceClient (); Параметры параметров = serviceclient.getoptions (); // Укажите URL, чтобы позвонить в Webservice EndPointreference TargetEpr = new EndPointreference ("http: // localhost: 8080/webservicetest1/services/helloservice"); Options.Setto (TargetEpr); // Укажите метод Sayhellotoperson, который будет вызван, и пространство имен файла wsdl qname opaddentry = new qname ("http://webservice.sjtu.edu", "sayhellotopersonnew"); // Укажите значение параметра объекта метода Sayhellotoperson [] opaddentryargs = new Object [] {"xuwei"}; // Укажите объект класса типа данных, который метод SayHellotoperson возвращает класс значения [] classes = new Class [] {String.class}; // Вызовите метод Sayhellotoperson и выводит возвращаемое значение системы метода. }}Через приведенный выше контент я представлю простой пример разработки Eclipse+Webservice, и я надеюсь, что это будет полезно для всех!