You are on page 1of 50

Unit-5

Technologies for SOA:

1
Unit-5: Technologies for SOA
• XML: Namespaces, schemas, processing/passing models
• SOAP: messages, elements, attributes and processing
model, message exchange types ,HTTP binding
• WSDL: containment structure, elements of abstract
description, elements of the implementation part,
logical relationships, SOAP binding
• UDDI Registry: Basic data model, tmodel, categorization
and identification schemes, binding template, use of
WSDL in the UDDI registry

2
XML
• XML is probably the most important pillar of Web
Services.
• a means for passing information between the
service provider and service consumer.
• XML also forms the basis for
– WSDL
– SOAP
– UDDI (Universal Description, Discovery, and
Integration), which is used to publish and discover a
Web Service, is also based on XML.

3
4
XML
• Overview of the XML language.
• Concept of namespaces
• Schemas
• Various models you can use for parsing, processing,
creating, and editing an XML document.

5
XML
• XML uses tags (Similar to HTML).

• HTML tags indicate how the data should be


presented or displayed

• XML tags are used to describe what the data is

• HTML has fixed set of tags

• XML is extensible (new tags can be defined)


6
XML
 Open tags Example: <name>

 Close tags Example: </name>

 Elements Example: <name>Blue Device</name>

 Attributes Example: <price currency="US">


<product>
<name>Blue Device</name>
<price currency="US">99.99</price>
</product>
7
8
XML contd.
 This figure shows that a basic XML document consists of a top
element. This top element may consist of data (the payload),
an attribute, any number of other elements in a recursive
manner.

 A sample portion of a simple XML document


1 <address country=“USA”>
2 <name>John Smith</name>
3 <street>43 Walcut St</street>
4 <city>Dublin</city>
5 <state>Ohio</state>
6 <postal-code>45561</postal-code>
7 </address>
9
XML contd.
The XML contains a top element named address
has a single attribute -- country.
has four child elements
 name of the person, street address, the city, and the postal
code.
Each of these child elements has data

10
XML contd.
Grammar of an XML document
DTD
XMLSchema
 NameSpace is used to
 avoid the tag name collisions
extend the use of vocabulary defined in one specific
domain to other

11
Namespaces
XML Namespaces increase reuse across multiple WSDL
documents and across the enterprise and beyond

An XML namespace comprises a collection of


element type names
attribute names

A namespace is identified by a URI reference.

As an example, consider the three different


namespaces shown in Figure 11.3.
12
Namespace examples

13
Namespaces
The element's name and the address of the namespace
(http://myCompnny.com/hr/employees) refer to the names and addresses of
the employee' of the company (myCompany).

The identical element type name of the namespace


http://mCompany.com/sales/orders holds the name for the supplier for
myCompany

myCompany's tennis club management also decides to store their member data
in XML format with the element types of name and address.

A namespace is declared through the reserved namespace attribute xmlns or


through an attribute that is prefixed with "xmlns:" and followed by a name
without a colon.

The namespace attribute can be provided in any element of an XML document.


14
Namespaces
An example of a namespace prefix declaration is shown here: <address
xmlns:myC=“http://myCompany.com/hr/employees”>

we can use the prefix to qualify any name of the element.

<myC:address xmlns:myC=“http://myCompany.com/hr/employees”>
<myC:name>John Smith</myC:name>
<myC:street>43 Walcut St</myC:street>
<myC:city>Dublin</myC:city>
<myC:state>Ohio</myC:state>
<myC:postal-code>45561</myC:postal-code>
</myC:address>

15
Namespaces

16
Namespaces
another way to declare and use a namespace without a prefix.
It is called a default namespace. Example
<address xmlns= "http//myCompany.com/hr/employees" >
All subordinate elements are assumed to belong to the default
namespace, provided they are not prefixed

<address xmlns= “http://myCompany.com/hr/employees” >


<name>John Smith</name>
<street>45 Walcut St</street>
<city>Dublin</city>
<state>Ohio</state>
<postal-code>45565</postal-code>
</address> 17
XML Schema
An XML schema
defines the grammar
and structure of XML
instance documents of
a particular type.
An XML schema is
itself an XML instance.
The top element of a
schema is named
"schema."
Its namehttp://www.w3.org/2001/XMLSchema
space is: 18
XML Schema
The sub elements of the top element schema are:
element
 This sub-element declares an element used in an XML
instance. A declaration includes the name and type.
attribute
This subelement declares an attribute used in an XML
instance. A declaration includes the name and type.
SimpleType
This subelement defines a simple type. A simple type in
an XMIL schema is a built-in type, a list of simple types, a
union of simple types, or a restriction of a simple type.
19
XML Schema
Other sub elements of the top element schema are:
ComplexType
subelement defines a complex type.
typically contains XML elements and attributes. The elements and
Attributes appearing or referenced within the type definition are
declared within the type definition.
include
This subelement is used to import an element definition defined in
another schema. The other schema must belong to the same XML
namespace.
import
This subelement is used to import an element definition defined in
another schema that belongs to a different namespace. Through the
use of include and import, reuse is possible with XML schema
20
definitions.
XML Schema
The complexType can have any
number of attributes but can
have only one of the following:
 sequence, all, choice, or
group.
Under sequence, we can have
any number of elements, but
these elements must appear in
the specific order.
In case of all, we can have any
number of elements. All these
elements must appear, but the
order is not important.
In case of choice, only one of
the allowed elements can
21
appear in an XML instance.
XML Schema example
Listing 11.5: An example of a complexType .
<xsd:complexType name="nameType">
<xsd:sequence>
<xsd:element name="title" type="xsd: string">
<xsd:element name="firstName" type="xsd:string">
<xsd:element name="middleName" type="xsd:string">
<xsd:element name="lastName" type="xsd:string ">
</xsd:sequence>
</xsd:complexType>

22
XML Schema example

23
XML confirms to Schema

24
<?xml version="1.0" encoding="UTF-8"?>

<shiporder  orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
  
<orderperson>John Smith</orderperson>
   <shipto>
     <name>Ola Nordmann</name>
     <address>Langgt 23</address>
     <city>4000 Stavanger</city>
     <country>Norway</country>
   </shipto>
   <item>
     <title>Empire Burlesque</title>
     <note>Special Edition</note>
     <quantity>1</quantity>
     <price>10.90</price>
   </item>
   <item>
     <title>Hide your heart</title>
     <quantity>1</quantity>
     <price>9.90</price>
   </item>
</shiporder>

25
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="orderperson" type="xs:string"/>
      <xs:element name="shipto">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="address" type="xs:string"/>
            <xs:element name="city" type="xs:string"/>
            <xs:element name="country" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
26
      
      <xs:element name="item" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="note" type="xs:string" minOccurs="0"/>
            <xs:element name="quantity" type="xs:positiveInteger"/>
            <xs:element name="price" type="xs:decimal"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="orderid" type="xs:string" use="required"/>
  </xs:complexType>
</xs:element>

</xs:schema>

27
XML Processing and Parsing Models
the service provider and service consumer application
exchange data through XML instance documents.
Five choices for XML processing models:
SAX The Simple API for XML is an event-driven parsing
/programming model.
StAX The Streaming API for XML provides a pull, event-
based parsing /programming model.
DOM The Document Object Model provides an in-memory
tree transversal programming model.
XML data-binding Provides an in-memory Java content
class-bound programming model.
XSLT Extensible Stylesheet Language Transformation
provides a template-based programming model. 28
XML Processing and Parsing Models
SAX, DOM more common. StAX catching up.
JAXP APIs (Java APIs for XML Processing) – SAX, DOM, StAX
JAXB technology - XML data binding
The processing includes
Parsing the XML document for processing
Making changes
Creating a new XML document
Deserialization or Unmarshalling Parsing an XML document into an
equivalent data structure
Serialization or Marshalling writing a data structure to an XML
Document
DOM supports both Deserialization and Serialization
SAX supports only Deserialization
29
SAX Processing Model
There are two ways of applying business logic when
using SAX parsing:
First Approach:
The business logic is invoked as soon as the information is
extracted or after minimal aggregation. This approach is
referred to as stream processing
The document can be processed in one step.
Second Approach:
invokes the business logic after complete parsing and
consolidating the extracted information.
Needs two steps to complete the processing of an XML
document.
31
SAX Processing Model
SAX first approach (stream processing) advantage:
it lets an application immediately start processing the content of the
source document.
application does not even have to wait for the entire document to be
retrieved.
Useful when - retrieving document from an earlier processing stage
(pipeline) or from the network
disadvantages :
a document may appear to be well and has unexpected errors at the
end
notices these problems only when it comes across erroneous tokens or
when it cannot resolve an entity reference.
the input stream from which it is reading the document unexpectedly
closes
Use stream processing model within the context of a transaction
32
SAX Processing Model
With the second approach,
parsing the document and applying business logic are
performed in two steps
first ensures that the document and the information
extracted from the document are valid
Once the document data is validated, the application
invokes the business logic
Disadvantages of the SAX model
No facility to modify or produce XML documents.
still possible to generate an XML document by writing
custom serialization handler
33
SAX Processing Model
SAX processing model well suited when
 the XML document is very large and needs more memory
Your applications do not make any structural modifications
and no need to generate XML documents.
the document needs only be processed once
 you want to implement stream process very large documents
extract and process only part of the XML document
 the XML document structure and the order of information
map well to the domain-specific objects
familiar with event-based programming
no need to generate/write XML documents
SAX processing follows a push model
34
SAX Processing Model

35
StAX Processing Model
StAX (Streaming API for XML) is a new API that is becoming
most common processing model for JAVA applications
Like SAX, it is based on streaming
Streaming
a programming model in which XML infosets (sections of XML
document) are transmitted and parsed serially at application
runtime, often in real time, and often from dynamic sources
stream-based parsers can start generating output immediately
infoset elements can be discarded and garbage collected
immediately after they are used.
stream processing provides a smaller memory footprint,
reduced processor requirements
36
StAX Processing Model
Limited to cardboard tube
view of is document
need to know what
processing you want to do
before reading the XML
StAX follows pull streaming
model (a client application
calls methods on an XML
parsing library)

37
StAX Processing Model
Pull model has several advantages over push model:
the client controls the application thread (in pull)
vs the parser controls the application thread
Pull parsing libraries can be much smaller, and the
client code is simpler than with push libraries
Pull clients can read multiple documents at one
time with a single thread.
A StAX pull parser can filter XML documents such
that elements unnecessary to the client can be
ignored
StAX provides marshalling (creating XML docs)
38
StAX Processing Model
Use the StAX processing model when :
You are dealing with very large documents and
memory usage is an issue
You are familiar with event-based programming
The document must be processed only once
There is need for marshalling and unmarshalling
XML documents
You want high performance

39
DOM Processing Model
processing the XML input data involves two
steps:

 The DOM parser generates a tree-like data


structure that models the XML source
document. This structure is called a DOM
tree.

 The application searches for the relevant


information in the tree and extracts,
consolidates, and processes it further.

 Then the application can create domain-


specific objects from the consolidated data.
40
DOM Processing Model
Limitations:
The DOM model designed to be a platform-and language-independent interface. (does
not use the java.util.Collection API )

Advantages:
it is slightly easier to use than the SAX model.

Allow both marshalling and unmarshalling of the XML document

XSLT identity transformation can be used to achieve serialization back to the XML
document

use of XPath with the DOM processing model simplifies many tasks

 XPath allows to specify path patterns to locate element content, attribute values, and subtrees,
may eliminate tree-transversal code.

XPath expressions are strings, they can be easily parameterized and externalized in a
41
configuration file
DOM Processing Model
DOM processing model should be used when

You want to process or generate XML documents

You want to process the XML document more than once

The document is not very large and memory usage is not an issue

You want to manipulate an XML document and need fine-grained control over
the document structure that you want to create or edit

You want random access to parts of the document. For example, you want to go
back and forth within the document.

You want to benefit from the flexibility of XPath and apply XPath expressions on
the DOM tree.

You want to implement data binding but you cannot use JAXB technology 42
because the document either has no schema or it conforms to a DTD
XML Data-Binding Processing Model
Allows the processing a XML document without being
concerned with XML representation

binding compiler is used to generate Java content classes


from a source schema

JAXB binds XML namespace to a Java package.


43
XML Data-Binding Processing Model
JAXB binds XML namespace to a Java package.

XSD schema instance (XML document) can be unmarshaled into


a tree of Java objects

The Java Objects created are the instances of the Java classes
generated by the binding compiler using the XSD schema.

44
XML Data-Binding Processing Model
Application can access the source document using Java Bean—style getter and setter
methods.

You can create or edit in-memory content tree and then marshal the tree into an XML
document instance.

Validations can be performed to ensure that the document created satisfies the
constraints expressed in the XSD schema.

Steps to use JAXB:

Set up the JAXB context (JAXBContext) with the list of derived packages that are used
to unmarshal the document.

Unmarshal an XML document into a content tree. Also, perform validation of the
document

Directly apply the business logic to the content tree or consolidate information from
45
the content tree and then apply business logic on the consolidated information
XML Data-Binding Processing Model
 This processing model also supports serialization to XML

Steps to marshal a content tree:


 Modify the existing content tree /generate new tree, from the
application’s business logic
 Validate content tree against the source schema
 Marshal the content tree into an XML document
46
Difficult to use JAXB if there is no schema
Use JAXB when

You are creating or consuming XML documents

 want to deal with Java Objects and are not concerned with XML representation

do not need to maintain certain as aspects of an XML document (comments and
entity references)

Process the content tree multiple times

You need random access to parts of the document

Memory usage: JAXB implementation creates a Java representation of the content


of a document is much more compact than the equivalent DOM tree

You previously used DOM, and an XSD schema is now available. 47


XSLT Processing Model
XSLT is a higher level processing model than the SAX, StAX, DOM, and XML

XSLT complements to these models, and should be used along with these other models

XSLT requires writing of rules and templates that are applied when specified patterns
are encountered in the source document.

The application of the rules adds new fragments or copies fragments from the source
tree to a result tree (XPATH is used to locate and extract information from the source
document)

When using XSLT, one typically writes style sheets, which are themselves XML
documents.

XSLT processing provides the flexibility that comes with scripting.

The XSLT API available with JAXP provides an abstract for the source and result of a
transformation, allowing the developer not only the ability to chain transformations but
also to interface with other processing models, such as SAX and DOM. 48
XSLT Processing Model

49
XSLT Processing Model
XSLT should be used when

You want to change the structure or insert, remove, or filter the content of an XML
document.

You need to perform complex transformations. Because XSLT is a functional


declarative model, it is easier to design complex transformations by coding
individual rules or templates than by hard-coding procedures.

You want the ability to be flexible and allow future changes in the schemas of
documents you are processing.

You need to minimize performance overhead for large documents that contain a
significant amount of data

You potentially have more than one transformation for the same document—
because of the scripting nature of the style sheets—are better performed using XSLT
transformations 50
52

You might also like