Рассматриваемые темы Введение в Web Services EJB и Web Services 2-1 Введение в Web Services Что такое Web Services? Знакомая проблема Новое решение 2-2 Введение в Web Services Модель «Publish-Find-Bind» Модель «Афиширование-Поиск-Связь» 2-3 Введение в Web Services Модель «Publish-Find-Bind» SOAP – Simple Object Access Protocol WSDL – Web Service Definition Language UDDI – Universal Description, Discovery and Integration 2-4 Введение в Web Services WSDL WSDL стандарт – независимый от реализации IDL Определяет XML-документ, полностью описывающий Web Service Web-сервисы используют обмен сообщениями с помощью SOAP 2-5 Введение в Web Services Java API для Web-сервисов JAX-WS (Java API for XML – Web Services) JSR-181 Упрощенная модель разработки Включает устаревшие JAX-RPC и JAXB API Используется EJB 3.0 2-6 Рассматриваемые темы Введение в Web Services EJB и Web Services 2-7 EJB и Web Services Web-сервисы в EJB 3.0 В EJB 3.0 используется новый стандарт JAX-WS (JSR-181) Аннотации: @WebService @WebMethod @SOAPBinding @WebParameter @WebResult @OneWay 2-8 EJB и Web Services javax.jws.WebService Аннотация @WebService используется для указания, что класс (интерфейс) является Web-сервисом Параметры targetNamespace serviceName wsdlLocation endpointInterface 2-9 EJB и Web Services javax.jws.WebMethod Аннотация @WebMethod помечает метод как операцию Web-сервиса Параметры operationName action 2-10 EJB и Web Services javax.jws.WebParam Аннотация @WebParam контролирует генерацию WSDL для параметра метода Параметры name targetNamespace mode (IN|OUT|INOUT) header 2-11 EJB и Web Services javax.jws.soap.SOAPBinding Аннотация @WebMethod определяет поведение Web-сервиса в SOAP Параметры style (DOCUMENT|RPC) use (LITERAL|ENCODED) parameterStyle (BARED|WRAPPED) По умолчанию – Document/Literal Wrapped 2-12 EJB и Web Services javax.jws.WebResult и javax.jws.OneWay Аннотация @WebResult контролирует создание WSDL для возвращаемого значения метода Аннотация @OneWay показывает, что метод не возвращает значения и может вызываться асинхронно 2-13 EJB и Web Services Атрибут endpointInterface Аннотация @WebService позволяет указать особый интерфейс для Webсервиса @WebService public interface SomeEndpoint { public String doSomethingCool(String in); } @Stateless @WebService(endpointInterface=”SomeEndpoint”) public class SomeBean implements SomeEndpoint { public String doSomethingCool(String in) {...} } 2-14 EJB и Web Services Java-клиенты с JAX-WS Все клиенты общаются с Webсервисом посредством заглушек Обычные Java-клиенты могут расширить javax.xml.ws.Service для получения заглушек EJB-клиенты могут использовать аннотацию @WebServiceRef 2-15 EJB и Web Services javax.xml.ws.WebServiceRef Аннотация @WebServiceRef используется для переменных, имеющих тип интерфейса Webсервиса @Stateful public class MyAgent implements MyAgentRemote { @WebServiceRef(SomeService.class) SomeEndpoint ws; public void doSomething() { ws.doSomethingCool(); } } 2-16 Рассмотренные темы Введение в Web Services EJB и Web Services 2-17 Практика Упражнение Создание JAX-WS Web-сервиса. 2-18