T.M. SoftStudio

feci quod potui, faciant meliora potentes

Купить полную версию книги "Среда разработки Eclipse 4: Руководство разработчика"

Разработка Web-приложений на основе платформы WTP

Web-сервисы

Apache Axis2

Рассмотрим создание Apache Axis2 Web-сервисов в среде Eclipse. Для создания Web-сервиса и его клиента используем среду выполнения Apache Axis2, доступную для скачивания по адресу http://axis.apache.org/axis2/java/core/.

Для развертывания Web-сервиса используем сервер Tomcat, установленный выше.

В меню File среды Eclipse выберем команду New | Dynamic Web Project и введем имя проекта Axis2_WebService. В списке Target Runtime выберем сервер Apache Tomcat, в списке Dynamic web module version выберем 2.5 и нажмем кнопку Finish.

В окне Project Explorer нажмем правой кнопкой мышки на узле проекта и выберем команду New | Class, введем имя Web-сервиса Axis2Example и имя пакета axis2sexample и нажмем кнопку Finish.

Дополним код класса Axis2Example методом:

public String getHello(String name) {

return "Hello"+" "+ name;

}

В меню Window среды Eclipse выберем команду Preferences | Web Services | Axis2 Preferences, во вкладке Axis2 Runtime кнопкой Browse определим директорию предварительно установленной среды выполнения Apache Axis2 (Binary Distribution, http://axis.apache.org/axis2/java/core/download.cgi).

В меню Window среды Eclipse выберем команду Preferences | Web Services | Server and Runtime в списке Server runtime: выберем Tomcat Server, в списке Web service runtime: выберем Apache Axis2 и нажмем кнопку OK.

В окне Project Explorer нажмем правой кнопкой мышки на узле проекта и выберем команду Properties. В появившемся диалоговом окне выберем раздел Project Facets, отметим флажок Axis2 Web Services и нажмем кнопку OK.

В окне Project Explorer нажмем правой кнопкой мышки на узле проекта и выберем команду New | Other | Web Services | Web Service, нажмем кнопку Next и в строке Service implementation введем axis2sexample.Axis2Example.

Если необходимо, перейдем по ссылке Web service runtime: Apache Axis, выберем Apache Axis2 и нажмем кнопку OK.

В окне Web Services нажмем кнопку Finish (см. рис. 14.14).

Рис. 14.14. Диалоговое окно создания Web-сервиса.

В окне Project Explorer нажмем правой кнопкой мышки на узле проекта и выберем команду Run As | Run on Server и нажмем кнопку Finish. В результате в окне браузера появится страничка приветствия Axis2, на которой, перейдя по ссылке Services, можно увидеть информацию о развернутом Web-сервисе Axis2Example (см. рис. 14.15).

Рис. 14.15. Страничка Axis2.

Для создания клиента Axis2 Web-сервиса в меню File среды Eclipse выберем команду New | Dynamic Web Project и введем имя проекта Axis2_WebServiceClient. В списке Target Runtime выберем Apache Tomcat v7.0, в списке Dynamic web module version выберем 2.5 и нажмем кнопку Finish.

В окне Project Explorer нажмем правой кнопкой мышки на узле проекта Axis2_WebServiceClient и выберем Properties. В появившемся диалоговом окне выберем раздел Project Facets, отмети флажок Axis2 Web Services и нажмем кнопку OK.

В окне Project Explorer нажмем правой кнопкой мышки на узле Axis2_WebServiceClient и выберем New | Other | Web Services | Web Service Client, нажмем кнопку Next, в строке Service definition введем http://localhost:8080/Axis2_WebService/services/Axis2Example?wsdl и нажмем кнопку Next.

В строке Port Name выберем конечную точку, например, Axis2ExampleHttpSoap12Endpoint, укажем Generate all types for all elements referred to by schemas и нажмем кнопку Finish (см. рис. 14.16).

Рис. 14.16. Диалоговое окно создания клиента Web-сервиса Axis2Example.

В окне Project Explorer нажмем правой кнопкой мышки на узле Axis2_WebServiceClient | Java Resources: src | axis2sexample и выберем New | Class, введем имя класса Axis2Client и нажмем кнопку Finish.

Изменим код класса Axis2Client согласно листинга 14.16.

Листинг 14.16. Код класса Axis2Client.

package axis2sexample;

public class Axis2Client {

public static void main(String[] args) {

Axis2ExampleStub.GetHello getHello=new Axis2ExampleStub.GetHello();

getHello.setName("User");

Axis2ExampleStub.GetHelloResponse res=new Axis2ExampleStub.GetHelloResponse();

try {

Axis2ExampleStub stub=new Axis2ExampleStub();

res=stub.getHello(getHello);

System.out.println(res.get_return());

} catch (Exception e) {

System.out.println(e.getMessage());

}}}

В методе main класса Axis2Client используется сгенерированный JavaBean-компонент GetHello для установки параметра запроса name. Вызов Web-сервиса обеспечивает объект сгенерированного класса-заглушки Axis2ExampleStub, метод getHello которого возвращает ответное сообщение от Web-сервиса, содержащееся в экземпляре JavaBean-компонента GetHelloResponse.

В окне Project Explorer нажмем правой кнопкой мышки на узле Axis2_WebServiceClient | Java Resources: src | axis2sexample | Axis2Client и выберем Run As | Java Application. В результате в окно Console будет выведено ответное сообщение Web-сервиса «Hello User».

Из вышерассмотренного примера видно, что платформа Axis2 дает возможность разворачивать простой Plain Old Java Object (POJO) класс как Web-сервис. Помимо POJO Web-сервисов платформа Axis2 позволяет разворачивать и аннотированные JAX-WS Web-сервисы. Для создания JAX-WS Web-сервиса на платформе Axis2 достаточно заменить код класса Axis2Example на аннотированный код:

package axis2sexample;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

@WebService()

public class Axis2Example {

@WebMethod(operationName = "getHello")

public String getHello(@WebParam(name = "name")

String name) {

return "Hello"+" "+ name;

}}

Дальше развертывание Web-сервиса ничем не отличается от вышерассмотренного примера (возможно потребуется перезапустить реду Ecliipse).

Для создания Web-сервиса и его клиента платформа Axis2 обеспечивает полное использование спецификации JAX-WS.


Web-сервисы. Apache CXF