Web Services w Java
Web Services w Java
Kod szkolenia: JAVA-WS
Szkolenie kierowane jest do programistów Java warstwy biznesowej i integracji, którzy chcą nauczyć się tworzyć Web Service w standardach JEE. Tak w przypadku systemów homogenicznych jak i heterogenicznych.
Celem szkolenia jest nabycie umiejętności wytwarzania Web Service w Java. Tak na wysokim poziomie jak i za pomocą API niskopoziomowych - często niezbędnych w przypadku integracji z gotowymi usługami Web Service wytworzonymi poza standardami Java.
Na szkoleniu poznajemy zarówno sposoby automatycznego określania kontraktów WSDL, jak i dokładnie ćwiczymy tworzenie WSDL od podstaw w celu umożliwienia pracy zespołów systemów heterogenicznych (podejście contract first).
Także ze względu na potencjalne problemy integracyjne przedstawiane są dokładnie standardy tak samych Web Service (SOAP, WSDL), jak i standardy wyższego rzędu regulujące użycie technologii pobocznych WS-* (WSIT).
Uczestnicy uczą się także posługiwania tzw. RESTful Web Services w oparciu o JAX-RS (od JEE6) aby łatwo wystawiać usługi, czy integrować się z AJAX.
5 dni, po 8 godzin. Łącznie 40 godzin(y) szkolenia.
Oczekiwane przygotowanie słuchaczy przed szkoleniem
Od uczestników wymaga się umiejętności programowania w języku Java.
Polecane szkolenia uzupełniające
Szkolenie poprzedzające - Programowanie w Java (JAVA-PRO).
W naszej ofercie znajdują się również szkolenia uzupełniające w zakresie JEE:
JAVA-WYD,
JAVA-EJB,
JAVA-JSF,
JAVA-JPA,
JAVA-JEE.
A także szkolenia na wyższych poziomach: projektowanie (JAVA-WZO) i architektura (JAVA-ARCH)
- Wprowadzenie do Web Service
- Czym jest Web Service?
- Architektura SEO
- Klient
- Server
- Repozytorium usług
- Zalety i wady Web Service
- Podstawowe standardy Web Service
- WSDL
- SOAP
- REST
- Standardy Java dotyczące Web Service
- JAX-WS następca JAX-RPC
- JAX-B
- JAX-P
- SAAJ
- JAX-R
- JAX-RS
- Szybkie tworzenie Web Service
- JAX-WS jako następca JAX-RPC
- Podstawy tworzenia usług w JAX-WS
- SEI - service endopint interface
- @WebService
- @WebMethod
- @OneWay metody jednokierunkowe
- Deployment usług JAX-WS
- Standalone (Endpoint)
- Jako Servlet
- Jako EJB
- Automatycznie wygenerowany WSDL
- Podgląd komunikatów WS (soapUI)
- Klient JAX-WS
- Generowanie klas na podstawie WSDL (wsimport)
- Klasa typu Service (@WebServiceClient)
- Metoda typu getPort (@WebEndpoint)
- Wywołanie usługi WS
- Kontrola mapowania klas na XML
- Czym jest Marshalling i unmarshalling (JAX-B)
- JAX-B a JAX-WS
- Wprowadzenie do XML
- Język znaczników
- Prolog
- Elementy (znaczniki)
- Atrybuty
- Przestrzenie nazw xmlns
- Encje
- Predefinowane
- Własne definicje !ENTITY
- Kontrola mapowania przez adnotacje
- @XmlRootElement
- @XmlElement
- @XmlAttribute
- Dostrajanie mapowania
- Dla klasy
- @XmlType
- @XmlAccessorOrder
- @XmlAccessorType i XmlAccessType
- Określania typów danych
- @XmlTransient
- @XmlID, @XmlIDREF
- @XmlSchemaType
- @XmlJavaTypeAdapter
- @XmlList
- API transformacji w JAX-B
- JAXBContext
- SchemaFactory
- Generowanie XML Schema (schemagen)
- Unmarshaller
- Marshaller
- @XmlRegistry i ObjectFactory
- Automatyczne tworzenie ObjectFactory (xjc)
- @XmlElementDecl
- QName, Name
- JAXBElement
- Walidacja modelu i ValidationEventHandler
- Standard XML Schema
- Czym jest XML Schema Definition (XSD)
- XSD a DTD
- Nagłówek schemy XSD
- Namespace XSD
- Namespace dokumentu docelowego (targetNamespace)
- Namespace dokumentu bieżącego
- Namespace domyślne (elementFormDefault)
- Typy proste
- Elementy
- Definicja (element)
- Wartości domyślne (default)
- Stałe (fixed)
- Typy proste XSD
- Ograniczenia na typach prostych
- simpleType
- restriction
- minExclusive, maxExclusive
- minInclusive, maxInclusive
- totalDigits, fractionDigits
- minLength, maxLength, length
- enumeration
- pattern
- whiteSpace
- Typy złożone
- Elementy z pod-elementami
- complexType
- Typy nazwane a wewnętrzne anonimowe
- Pod-elementy mieszane z tekstem (mixed)
- Uporządkowanie pod-elementów
- sequence
- choice
- all
- Ilość pod-elementów (min/maxOccurs)
- Definicja inline a referencja
- Elementy z atrybutami (attribute)
- Tylko atrybuty
- Atrybuty i pod-elementy
- Elementy z tekstem i atrybutami
- complexType + simpleContent + extension
- Przegląd elementów zaawansowanych
- Dziedziczenie w XSD
- complexType + complexContent + extension
- Grupy
- Grupy elementów (group)
- Grupy atrybutów (attributeGroup)
- Otwarta schema
- any
- anyAttribute
- Użycie XSD
- Nagłówek dokumentu zgodnego z XSD
- Namespace dokumentu bieżącego
- Namespace instancji XSD
- Odwołanie do schemy (schemaLocation)
- Narzędzia XML a walidacja ze schemą
- Kontrola mapowania przez XML Schema
- Mapowanie za pomocą XML Schema
- Typy złożone/Klasy
- Elementy proste i atrybuty/Atrybuty klasy
- Elementy wielokrotne/Kolekcje
- Typy XSD a typy Java
- Typy złożone a elementy złożone w XSD
- Generowanie klas na podstawie XSD (xjc)
- Zaawansowane mapowanie
- annotation i appInfo
- Znaczniki JAX-B
- globalBindings
- javaType
- schemaBindings
- package
- javadoc
- nameXmlTransform
- typeName
- elementName
- modelGroupName
- anonymousTypeName
- Bindowanie na poziomie własności
- property
- javadoc
- baseType
- javaType
- Bindowanie enumeracji
- typesafeEnumClass
- javadoc
- typesafeEnumMember
- javadoc
- Wyciągnięcie znaczników JAX-B ze Schemy
- Pliki bindings
- Podstawy XPath
- Wyszukiwanie elementów
- Odwołania do atrybutów
- Odwołania do otoczenia (axes)
- Konstrukcje XPath
- Operatory
- Funkcje
- Samodzielne tworzenie komunikatów Web Service
- Po co tworzyć komunikaty samodzielnie?
- Podstawy API XML (JAX-P)
- Transformacje XSLT (TrAX)
- Czym są transformaty XSLT?
- Idea
- Przykłady
- API transformacji (TrAX)
- Transformer, TransformerFactory
- Source, Result
- Drzewa DOM
- Podstawy struktury drzewa DOM
- Dokument i pochodne
- Document
- DocumentFragment
- DocumentType
- Węzeł i pochodne
- Node
- NamedNodeMap
- NodeList
- Rodzaje węzłów
- Element
- Attr
- CharacterData
- Text
- Comment
- CDATASection
- Odczyt XML do drzewa DOM
- DocumentBuilderFactory
- DocumentBuilder
- Operacje na drzewie DOM
- Tworzenie elementów
- Podpinanie elementów
- Usuwanie elementów
- Zapis drzewa DOM do XML
- W oparciu o API transformacji
- DOMSource
- StreamResult
- TransformerFactory, Transformer (TrAX)
- Strumienie zdarzeń SAX
- ContentHandler
- Attributes
- Locator
- DefaultHandler
- XMLReader
- XMLReaderFactory
- Predefiniowane features
- Zdarzenia na żądanie STAX
- Cursor API - odczyt
- XMLStreamReader
- XMLInputFactory.createXMLStreamReader
- Cursor API - zapis
- XMLStreamWriter
- XMLOutputFactory.createXMLStreamWriter
- Iterator API - odczyt
- XMLEventReader
- Hierarchia XMLEvent
- XMLInputFactory.createXMLEventReader
- Iterator API - zapis
- XMLEventWriter
- XMLEventFactory
- XMLOutputFactory.createXMLEventWriter
- Format wiadomości SOAP
- Envelope
- Header
- mustUnderstand
- role
- relay
- encodingStyle
- Body
- encodingStyle
- Opis błędu (fault)
- code
- value
- subcode (value, subcode)
- reason
- detail
- node
- role
- Kody błędów
- Sender
- Receiver
- MustUnderstand
- VersionMismatch
- DataEncodingUnknown
- Załączniki w SOAP
- SAAJ - wsparcie tworzenia SOAP
- SOAP with Attachement API for Java
- API SAAJ
- SAAJ jako nakładka na DOM
- Node
- SOAPElement
- SOAPMessage
- SOAPPart
- SOAPEnvelope
- SOAPHeader
- SOAPHeaderElement
- SOAPBody
- SOAPBodyElement
- AttachementPart
- MessageFactory
- SOAPConstants
- Tworzenie wiadomości SOAP
- Wysłanie wiadomości z API SAAJ
- SOAPConnection
- SOAPConnectionFactory
- Odczyt wiadomości SOAP
- Obsługa załączników
- SAAJ z JAX-P
- SAAJ z JAX-B
- Niskopoziomowa komunikacja z JAX-WS
- Po co komunikacja niskopoziomowa?
- Niskopoziomowy serwer JAX-WS
- @WebServiceProvider
- Wspierane protokoły (@Binding)
- HTTPBinding (XML po HTTP)
- SOAPBinding (SOAP 1.1, SOAP 1.2)
- @ServiceMode
- Service.Mode.MESSAGE
- Service.Mode.PAYLOAD
- Interfejs Provider<T>
- Provider<SOAPMessage> (SAAJ API)
- Provider<Source> (TrAX API)
- Provider<DataSource> (Activation API)
- Ograniczenia możliwych konfiguracji
- Niskopoziomowy klient JAX-WS
- Service
- Dispatch
- Komunikacja synchroniczna
- Komunikacja asynchroniczna
- Jednokierunkowa
- Z odbiorem wyniku (Response)
- Bazując na Future (odpytanie)
- Poprzez handlera (notyfikacja)
- Komunikacja niskopoziomowa a WSDL
- Definiowanie kontraktów WSDL
- Web Service Description Language - po co?
- Podejście contract first
- Czemu WSDL 1.1 a nie 2.0?
- Struktura WSDL 1.1
- definitions (root)
- documentation
- types
- message
- part
- Atrybut type a element
- portType
- operation
- input
- output
- fault
- 4 typy komunikacji
- One-Way
- Notification
- Request-Response
- Solicit-Response
- binding
- Odzwierciedlenie zawartości portType
- Rozszerzenia SAOP
- soap:binding
- soap:operation
- soap:body
- soap:header
- soap:headerfault
- soap:fault
- Rozszerzenia HTTP
- http:binding
- http:operation
- http:urlEncoded
- http:urlReplacement
- Rozszerzenia MIME
- mime:content
- mime:multipartRelated
- mime:mimeXml
- service
- port
- soap:address
- http:address
- Contract first a JAX-WS - tworzenie usługi
- Generacja klas na podstawie WSDL (wsimport)
- Implementacja SEI
- Poprawna konfiguracja @WebService dla SEI
- Adnotacje JAX-WS sterowania treścią WSDL
- @WebService
- @WebMethod
- @WebFault
- @WebResult
- @WebParam
- @RequestWrapper, @ResponseWrapper
- @BindingType
- @SOAPBinding
- Zewnętrzne sterowanie mapowaniem - bindings
- Po co?
- Jak? - a'la JAX-B
- Pozostałe elementy JAX-WS
- Wstrzykiwanie zależności
- @WebServiceRef
- @Resource
- WebServiceContext
- Inne zasoby zarządzane
- @EJB
- @PersistanceUnit, @PersistanceContext
- Metody cyklu życia komponentu JAX-WS
- @PostConstruct
- @PreDestroy
- Obsługa wyjątków
- WebServiceException
- ProtocolException
- SOAPFaultException
- HTTPException
- @WebFault
- Handlery
- Handler
- Logiczne - LogicalHandler
- Protokołowe - SOAPHandler
- MessageContext
- Zakresy HANDLER i APPLICATION
- Predefiniowane własności
- LogicalMessageContext
- SOAPMessageContext
- BindingProvider
- Podpinanie handlerów do usług
- @HandlerChain i XML
- HandlerResolver i jego podpięcie
- Pliki konfuguracyjne
- Podsumowanie modeli komunikacji JAX-WS
- Wysokopoziomowa (@WebService)
- Statyczna (stuby wsimport)
- Dynamiczna (Service i QName)
- Synchroniczna
- Asynchroniczna (@OneWay)
- Niskopoziomowa (@WebServiceProvider)
- Dostęp do komunikatu (@ServiceMode)
- Przez wiadomość (MESSAGE)
- Przez ciało (PAYLOAD)
- Komunikacja z klientem (Dispatch)
- Synchroniczna (invoke)
- Asynchroniczna (invokeAsync, invokeOneWay)
- Zaawansowane aspekty JAX-WS
- Stanowe WS
- Sesja Servletów
- Rozwiązania product speficif
- JAX-WS Commons i @HttpSessionScope
- Glassfish i @Statefull (EJB)
- Szyny danych - ESB
- Przegląd technologii WS-*
- WS-* a serwery WS
- Standard WSIT
- Metadane
- WS-MetadataExchange
- WS-Transfer
- WS-Policy
- Bezpieczeństwo
- WS-Security
- WS-SecurityPolicy
- WS-SecureConversation
- WS-Trust
- Wiadomości
- WS-ReliableMessaging
- WS-RMPolicy
- Transakcje
- WS-Coordination
- WS-AtomicTransaction
- WS-* a WSDL
- Problemy protokołu na poziomie nagłówków
- Opis nagłówków w WSDL (WS-Policy)
- wsp:Policy
- wsp:All
- wsp:ExactlyOne
- wsp:PolicyReference
- Features - wsparcie JAX-WS dla WS-*
- Predefiniowane Features
- Podpięcie w środowisku zarządzanym
- @MTOM
- @RespectBinding
- @Addressing
- @Action
- @FaultAction
- Podpięcie w API
- Klasa bazowa WebServiceFeature
- Metody podpięcia
- Service.create
- Service.createDispatch
- Service.getPort
- getPort stabu wsimpot
- Predefiniowane klasy Feature
- MTOMFeature
- RespectBindingFeature
- AddressingFeature
- Tworzenie własnych Features
- Klasa bazowa WebServiceFeature
- Adnotacja bazowa @WebServiceFeatureAnnotation
- Bezpieczeństwo WS
- Bezpieczeństwo na poziomie servletu
- Bezpieczeństwo na poziomie EJB
- Bezpieczeństwo WS-*
- WS-Security
- WS-SecurityPolicy
- WS-SecureConversation
- WS-Trust
- Transakcje długoterminowe
- WS-Transaction
- Atomic Transaction (AT)
- Business Activity (BA)
- Przegląd biblioteki Camel
- Przegląd rejestrów usług Web Service
- UDDI
- eb-XML
- Ujednolicone API - JAX-R
- RESTful Web Services
- Idea RESTful WS
- Protokół HTTP
- Struktura HTTP
- Metoda, Adres, Wersja
- Nagłówki
- Ciało
- Metody HTTP
- GET
- POST
- PUT
- DELETE
- HEAD
- OPTIONS
- TRACE
- CONNECT
- Zastosowanie REST - mapowanie metod HTTP na logikę
- Standard JAX-RS (od JEE6)
- Mapowanie żądań
- @Path
- @GET, @POST, @PUT, @DELETE, @HEAD
- Parametry żądań
- @PathParam i mapowanie z regex
- @QueryParam
- @FormParam
- @MatrixParam
- @HeaderParam
- @CookieParam
- @DefaultValue
- @Context
- Konsumpcja i produkcja
- @Consumes
- @Produces
- Integracja z AJAX (JSON)
- Integracja z JAX-B (XML)
- Wybrane API JAX-RS
- Klasa Response - dodawanie nagłówków HTTP
- WebApplicationException
- @Context - zasoby wstrzykiwalne
- HttpHeaders
- SecurityContext
- Providers
- Request
- UriInfo
- UriBuilder