pdf / 8-web_services
.pdfWeb Services(Metro stack)
●JAX-WS
Java API for XML Web Services
●JAXB
Binding between XML Schema and Java Classes
●Streaming API for XML
●SOAP with Attachments API for Java
Термины
●SOAP with Attachments API for Java (SAAJ)
–Envelope structure
–Encoding rules
–Conventions for representing web service invocations and responses
●WSDL - Web Service Description Language
●UDDI — Universal Description Discovery & Integration
●Web Services Interoperability (WS-I) Basic Profile
Шаги по созданию WebService
●Создаем и компилируем класс (@WebService)
●Используем wsgen для создания вспомогательных объектов
●Создаем и размещаем WAR файл
●Создаем код клиента
●Используем wsimport для создания вспомогательных объектов
●Компилируем и запускаем клиента
Requirements of a JAX-WS
Endpoint
●@javax.jws.WebService или @javax.jws.WebServiceProvider
●Можно использовать атрибут endpointInterface для задания интерфейса
●Методы public, и не static и не final
●@javax.jws.WebMethod на нужных методах
●Принимаемые и возвращаемые параметры должны быть JAXB-compatible
●Класс должен быть:
–public not final and not abstract
–public constructor
–Нельзя опрделять finalize
–Может определить методы javax.annotation.PostConstruct или PreDestroy
Пример
@WebService()
public class TestWebService {
/**
* Web service operation */
@WebMethod(operationName = "sayHello") public String sayHello(String name) {
return "Hi "+name+"!";
}
}
A Simple JAX-WS Client
public class Main {
static TestWebServiceService service = new TestWebServiceService();
public static void main(String[] args) { try {
TestWebService port = service.getTestWebServicePort();
System.out.println(port.sayHello("Petya")); } catch(Exception e) {
e.printStackTrace();
}
}
}
JAXB Architecture
Компоненты
●Schema compiler
Создает по ХМЛ схеме классы
●Schema generator
Создает по аннотированным классам ХМЛ схему
●Binding runtime framework
Обеспечивает unmarshalling (reading) and marshalling (writing)
Binding Process
●Generate classes
XML schema -> Java classes
●Compile classes
●Unmarshal
●Generate content tree Создание дерева JAXB classes
●Validate (optional)
●Process content
●Marshal
JAXB Mapping of XML Schema
Built-in Data Types
XML Schema Type |
Java Data Type |
xsd:string |
java.lang.String |
xsd:integer |
java.math.BigInteger |
xsd:int |
int |
xsd.long |
long |
xsd:short |
short |
xsd:decimal |
java.math.BigDecimal |
xsd:float |
float |
xsd:double |
double |
xsd:boolean |
boolean |
xsd:byte |
byte |
xsd:QName |
javax.xml.namespace.QName |
xsd:dateTime |
javax.xml.datatype.XMLGregorianCalendar |
xsd:base64Binary |
byte[] |