SOA ile Web Servisleri Geliştirme
Kurs Dili: İngilizce
Süre: 5 gün
This comprehensive workshop explores the world of SOA and Web Services. It covers basics as well as a few important advanced topics (such as WS-Security). The course explains and uses standard java APIs such as SAAJ, JAX-WS, JAXB and JAXR.
The course starts by defining the role of Web Services in a Service Oriented Architecture (SOA). For this reason an overview of SOA and related concepts (e.g., Service Oriented Processes). Often people award Web Services for many characteristic, where it is in fact SOA that offers these characteristic.
After Web Services has been placed into the correct context, the course continues by giving an almost complete overview of Web Services technologies. This course focuses on the message, description, discovery and security. Other courses offer orchestration, transaction or give more detail and advanced features to for example Security.
This course explains WSDL as quickly as possible, so that the rest of the course can be as real-life as possible. After WSDL has been explained in depth (following a brief overview of core technologies such as SOAP, WSDL itself and UDDI), technologies are explained and practiced using WSDL as a base. Students will be able to invoke Web Services using tools such as AXIS after going through the WSDL session.
The course provides a thorough overview of SOAP. SOAP is explained with the WS-I Basic Profile in mind. The WS-I BasicProfile is an effort to enable interoperability (e.g. between .Net and J2EE). All aspects of the SOAP recommendation are covered. SAAJ is explained as well as other technologies. SAAJ is an Java API to read, write and send SOAP messages.
The course then continues with Java's core Web services technology: JAX-WS. JAX-WS is thoroughly covered from both a bottom-up (java-first) as well as top-down (wsdl-first) approach. The different available customizations (binding declarations and Java annotations are all covered). JAX-WS relies on JAXB for its XML binding. The JAXB xml binding framework is explained for that reason as well during this course (all aspects such the binding customizations, Java annotations from both development life-cycles: java-first and xml-first)
After these core technologies have been explained, the world of web services security is entered. First by providing an overview of security tasks, concepts, technologies and algorithms. After that WS-Security 1.1 is introduced together with the related XML security standards W3C XML Encryption and XML Signatures. WS-Security specific token profiles (X509, Username, SAML etc) are introduced as well. The course performs all necessary configuration using WS-Policy assertions using WS-SecurityPolicy.
The course completes with two important Web Services standards: WS-Addressing and WS-BPEL. WS-Addressing is a twofold specification: it includes techniques to communicate endpoints and it includes concepts to add addressing information to messages in a transport independent manner. This specification is used by many other standards within the world of Web Services.
WS-BPEL is an orchestration language that enables you to implement long-running web service interactions using a process definition (in XML). Many graphical editors and notations exist to model these processes. One of these notations in BPMN. The WS-BPEL session explains the relation with BPMN (the examples are accompanied by BPMN diagrams).
Kimler katılabilir? Java ile yazılım geliştirme, sistem tasarım ve
mimarisi üzerine çalışan profesyoneller. Katılımcıların Java Servlet'leri konusunda en az bir yıl deneyime
ve XML konusunda temel bilgiye sahip oldukları varsayılmaktadır.
Kurs İçeriği
Session: Service Oriented Architecture Overview
Lesson: Introduction to Service Orientation
- Define the SOA
- List benefits of SOA
- Understand the move in IT which leads us to SOA and the business value it can bring
- Define Business Agility and explain the different aspects of agility
- Define a Service and a software service
- Discuss the possible role of Web Services in an SOA
- Understand the relation between SOA and CBD
- List benefits of using components for the Service implementation
- Describe the requirements of the Software Development Process that leads to services.
Session: Introduction to Web Services in SOA
Lesson: Introduction to Web Services
- Define Web Services
- Look at Web Service from a Business and Architectural perspective
- Look at Web Service from a Technical Architectural perspective
- List benefits of using Web Services for an SOA
- Discuss the maturity of Web Services
- List criteria if, when and where to use Web Services in your Architecture
Lesson: Web Services technologies
- List different types of applications of Web Services
- Layout the Web Services technologies: technologies for meta data, messaging, transactions and process, presentation, security and management
- List important organizations, companies and bodies involved with Web Services
- Understand the role of XML, XML Schema and XML namespaces
- Introduce SOAP
- Understand the role of WSDL
- Understand the significance of a WSDL document
- Understand the role of UDDI
- Understand different ways of using UDDI is used
- Introduce WS-Addressing, WS-Security, WS-RM, BPEL
Session: Introduction to XML Schema
Lesson: XML Schema Overview and Fundamentals
- Introduce the concepts of schemas
- Introduce W3C XML Schema and understand the structure of the recommendation
- Understand the process of validity assessment
- Understand the concept and role of the Post Schema Validation Infoset (PSVI)
- Understand the structure of an XML Document
- List and explain the 12 different Schema components
- Understand the difference in local and global definitions and declarations
- Discuss different schema styles (russian doll, salami slice etc)
- Understand the concept of names for definitions and declarations
- Introduce the concept of symbol spaces
- Understand the relation with XML Namespaces
- Be able to make basic element and attribute declarations
- Understand the difference between simple types and complex types
- List the predefined types
- Be able to define basic simple types using different derivations (automic/restriction,list and union)
- Be able to define basic complex types
- Understand the different content models of complex types
- Introduce complex type extension and restriction
- Introduce compositors (all, sequence and choice)
- Introduce particles
- Understand how to control namespace of local declarations (attributeFormDefault and elementFormDefault)
- Understand how to refer to schema documents from XML documents (and the potential problems with that)
- Understand how to specify type information inside your XML Document using xsi:type
- Understand nil values
- Understand how to include, redefine and import other schemas
Session: Introduction to JAXB 2.x
Lesson: JAXB Overview
- Introduce JAXB 2.x
- List the goals of JAXB 2
- Explain the architecture of JAXB
- Introduce the XML to Java mapping
- Introduce the concept of a Value Class
- Explain handling of naming differences between XML and Java
- Introduce the ObjectFactory
- Introduce JAXB Binding Declarations
- Explain how these binding declarations are provided
- Introduce key JAXB annotations
- Introduce the core API of JAXB and how to configure the JAXB implementation
- Understand and use the JAXBContext class
- Understand and use the core functionality of the Marshaller and Unmarshaller
- List possible input sources and sinks
Lesson: XML to Java Binding
- Understand how Simple types are mapped to Java
- Understand how simple types derived by list and union mapped
- Understand the difference between indexed and list collection properties
- Use binding declarations to customize this bindings
- Understand how simple types with enumeration facet(s) are bound to Java
- Use binding declarations to configure enum binding
- Understand how complex types are bound to Java (Value Classes)
- Understand the relation between value classes and elements
- Understand how complex types with simple and complex content models are mapped
- Understand how model groups are mapped (sequence, choice etc)
- Understand how wildcard particles are mapped
- Understand how element particles are mapped
- Understand when a general content property is used to bind a complex type
- Understand where and how collection of element types is used
- Use binding declarations to customize the binding of complex types to Java
- Understand different ways of binding elements to Java
- Understand the JAXBElement (its rational, importance and usage)
- Understand the relation with its type (e.g., with value classes)
- Use binding declarations to customize the binding of element declarations to Java
Lesson: Java to XML Binding (optional)
- Provide the default mapping of Java to XML
- Explain all JAXB annotations to configure the Java to XML binding
- Explain different package level annotations
- Explain different class level annotations
- Explain different property level annotations
Session: WSDL
Lesson: Comprehensive Overview of WSDL
- Understand the structure of a WSDL document
- Understand the relationships
- Understand how to define Services compliant with the WS-I Basic Profile
- Understand the SOAP Binding
- Understand how to define RPC style web services
- Understand how to define Documented oriented web services
- Using the Import element to split the WSDL into contract and implementation
- Understand the role of WSDL in the SOA and a SOP (Service Oriented Process)
- List the different transmission primitives (aka message exchange patterns)
- List different WSDL Extensions
- List changes made for WSDL2.0
Session: SOAP and SAAJ
Lesson: Overview of the SOAP Recommendation
- Understand the structure of the SOAP1.2 specification
- Understand the SOAP1.2 terminology
- Understand the different parts that make up the specification
- Explain the SOAP Messaging Framework
- The anatomy of a SOAP message
- Understand SOAP Faults
- Understand the structure of a SOAP Fault
- Understand the use of headers with SOAP Faults
Lesson: SOAP Processing
- Understand the The SOAP Processing Model
- Explain the use of headers in vertical extensibility
- Understand the use of the header for extensibility (role attribute)
- Explain the use of the mustUnderstand flag
- Explain the use of Intermediaries
- Understand a SOAP Module
- Understand the concept of Message Exchange Patterns (MEP)
- Understand the SOAP HTTP Binding
- Introduce WSIAP and SOAP Messages with Attachments (SwA)
- Introduce MTOM and XOP
- Understand differences between SOAP1.2 and SOAP1.1
Lesson: SAAJ 1.3 Overview (optional)
- Understand the core of SAAJ
- Understand the core classes that make up SAAJ
- Understand the relationship between SOAP message elements and SAAJ classes
- For each class understand its use
- Be able to send SOAP messages using SAAJ
Session: JAX-WS
Lesson: JAX-WS Overview
- Understand what JAX-WS is
- Understand the JAX-WS Architecture in detail
- Understand the JAX-WS 2.1 Specification
- Understand the role of WSDL
- Discuss bottom-up versus top-down service realization
- Overview of the WSDL and Java Mapping and vice versa
- Introduce the two APIs (client/service side)
Lesson: Building a JAX-WS Client
- Understand the static service use
- Understand how to build a JAX-WS client using a given WSDL
- Understand the internal sequence of service invocation (OSD)
- Understand dynamic service use
Lesson: Service realization using JAX-WS
- Recap the two models: bottom-up and top-down
- Understand the dynamic programming model
- Understand the different Provider implementations
- Understand the static programming model
- Understand the developments steps for bottom-up
- Understand the developments steps for top-down
- Customize Java to WSDL mapping using JAX-WS and Web Services Metadata (JSR 181) annotations
- Appreciate the use of JAXB 2.1 annotations (JSR 222)
- Configure the SOAP Binding
- Understand JAX-WS exception handling
- Add Service Endpoint exception and map these to SOAP faults
- Use the SOAP 1.1 HTTP Binding
- Add support for MTOM/XOP
- Understand lightweight Endpoint and Servlet container deployment
Lesson: Advanced JAX-WS
- Understand the Handler Framework
- Understand the difference between logical and protocol handlers
- Understand the API and accessible classes for each handler type
- Understand the life-cycle of a handler
- Using the Catalog Facility
- Implement handlers that operate on header elements
- Understand different ways of configuring handler chains
- Understand how to manage state in handlers (e.g, MessageContext)
- Understand the structure of an OASIS 1.1 Catalog file
Session: Core Message level Specifications
Lesson: WS-Addressing 1.0 (Core, SOAP Binding and Metadata)
- Understand all three parts of WS-Addressing: Core, Metadata and the SOAP Binding
- Explain the concept of Endpoint References (EPR)
- Explain the concept and semantics of Message Information Headers
- Discuss applications of WSA
- Understand the WSA responsibilites/behavior of senders and receivers
- Understand the WSA SOAP binding
- Understand how to include WSA information inside WSDL
- Understand the WSA Policy assertions
- Understand how JAS-WS supports WSA
- Explain the EPR API in JAX-WS
- Understand how to obtain the reference parameters in JAX-WS
Session: WS-BPEL 2.0
Lesson: WS-BPEL 2.0
- Introduce WS-BPEL
- Understand relation to BPMN
- Understand the structure of a process
- Understand the external view of a process
- Understand the relation with WSDL
- Understand partnerLinks, types and their relation with EPRs
- Understand process state (variables)
- Understand different types of variables
- Understand the default expression and query language
- Understand how to access and update data
- Understand how to receive/reply and invoke web services
- Understand WS-BPEL event handling
- Understand all the different activities in WS-BPEL (pick, if, while etc)
- Understand concurrent processing
- Linking activities in concurrent processing (synchronization)
- Understand branching/forking and merging/joining using links
- Understand conditional transitions
- Understand fault and compensation handling
- Understand message/process correlation
Appendix: UDDI and JAXR
Lesson: UDDI Introduction
- Understand the role of UDDI
- Understand the metamodel of UDDI
- Understand the tModel
- Discuss different Classification Schemes (NAICS, ISO3166 etc)
- Understand the two best-practices for using WSDL in UDDI
Lesson: JAXR
- Understand the JAXR Architecture
- Be able to query a registry based on names
- Be able the query a registry based on classifications
- Be able to bind to a JAX-RPC service, using JAXR