Post on 02-Jul-2015
description
WS-I - Axis 2.0
�����������
���� �
WS-I - Axis 2.0
������� ��� �����
�����������
� �! "# $%��& '(� )*�!+�,��!��!�&
����!-��& .��*/*��& 0���&
)���� 1 2�� ��2
.�# ����������� ���� #
�������3!���4/��� ���
(((�5��!����/���
WS-I - Axis 2.0
)��,!�� �# 0!��*�!�
��� ������� ���!�6
��� �������� 7������(
������������ ���������� ����������������
��� �������� ���
��� �������� �!������
��������
�����
������������������������������������ �
��������������! ���
� Web Services Description Language (WSDL)
��� �������� 8�3� )6� �
�,���� ��� ������� �!��9
WS-I - Axis 2.0
��� ������� ���!�6
"#�����3 �� �!�� ��,*!��� �� ���: (& $���� ������� �%����& ������'&&$����
����(��� #��(� ���'���(!) ��*�
"�!(�9�/ ����(()�� ���'��&� ����#������� ��� #�����&������+� #�+�#��������
������'���*�
"#����&��'���� ���) �����(!) ������ ��!��������)�#��� �� ���*�-.)& -�0& 007.& ��
)7-$� ��� 3�( ,�,�� ��
"#����!��!��&��3�� ! ������ #����� ��&� )����'� #��!���&�(*�"#���+� �(������
��,��!� 3 *���*� ��!��/��*� �)���+� �(�*
WS-I - Axis 2.0
� *!� 1 �!!, ; <�8 = �7�. � ->�'
�������������!��������������+���'�������� <�8%����� (��� ��!���� ���'���
#��� ��� ���%� #)����&��� #����''��� ��+� �(�� ��� ��� *
���������������'����7�.& #��(������'��( *�"#�+�&�����'�����?8&�#��#�����
��((���+� �����������������������*
?�33���! ,�/�����/ �/*�/�� (+���'�����''��� ��(!&�(� ����'���������������%�
+� � #�+�� ���!�� �����)��� #�+�&&�������� #��'��( ��'� #���'��( ��� #�+��#��*
WS-I - Axis 2.0
�( ? 7�/��+�!�� ��� �! ��� ��������@
"#������� #����(���+�����#��#������� �����(����� ��������������*�"#���������
'�&&���,
-*�)���!�/ � �( ��� ������� 3�� ����!��*�"#������&�!������ ��� #��')� ��&� �����'�
#���������������&&���!��!��������)(� � ����������� #������������*
.*�>�,��/ � ����!�/ 3*�!�� �!6 #��)�#�������������*�����%� #��')� ��&� �����'�
#����������&���+��/�� *��&+� #����������������! �������� ������(!&�(� ��*
0*�0!�/��!�/ ��� �������� 3�� !��� ����� � �*����� ,��!���� "#�������
�� �����#����)��������������(!&�(� ����+�� #������(����'����&�� #��)�&����'��(�
��� �#*��� #�����������%� #������� �����&&������1)����� ��� ��� ��� #���2��������
�)������!� ���2�������������*
WS-I - Axis 2.0
�7� 1 '�� -�� 7�5��!���
"#��')�(� &�����! ���#������������������� #������������������� ������#� �� )�� %*
��!!&�� ��������&������&����(��&� #���!����(%��) ������������� ���(&&��%�&����&+�
��)!&���!����(�%���!��������������������&����&+���)!&��� ��� #����� #�� ����������
��&&���'����� ��'���*�
"#����&����&+���)!&���!����(��(3�� #����#� �� )������+��/ ����&�%���� ��1)����� #����&� +�
����������(��������������� #�&�(� ������ �*�"#���'���%��������������������� ����+�
��(������/�� �����������*
"!�# )���� .�!!��& ��A���& �� B�< !� 9 ��*! �7� � ������ C����!��
!��� ! *����!�� �7��
WS-I - Axis 2.0
��� �������� ���
������� .������
������� -�D*��!�
������� $�9�� � -�/��!�6
WS-I - Axis 2.0
��� �������� �!������
WS-I - Axis 2.0
��%0 $���� .�3� ��!!,#EE(((�(�%���/E.�3� ��E$����.�3� �%�����!�
"#������)(� ���'���� #�����4�5�������'�&��-*-%������ ����'���� ��'���!��!��� �+�����
����������!���'�� ���%�&����� #��&��'�� ���%���'��(� �%�� ��!�� ������
(!&�'�� �����'� #�����!���'�� �����#��#�!��(� ��� ���!����&� +
WS-I - Axis 2.0
�7�.
"#�������� ������������&&+����������+�'�)������&�!������ #� #����3����'��������' �
�����6�� �������!�� ���&*
7)�����!����!&�,�84�� ������ ��#�&��+9
5)�&�����3�+�4 ��� �� ����5)�&�����3�+�4 ��� �� ����
�������""��:����
�)�(� ��� ���0�
"#��������!���'�� �����'���,
"#�������(������'��(
���� ������(������
���� �������������!����
� �������
WS-I - Axis 2.0
���! �7�. 0� "!F
��6�� ���+���'�����
��� ���) �����������&&�� ��
5������� ��&��""�
�� �� ��
��(!&�� ��
����; � �+� ����&�������+�!���&�(������ ���) �����(!) ��
��������&+��(!&�(� ��
WS-I - Axis 2.0
�7�. �''. 1 -�D*��!
POST /WebCalculator/Calculator.asmx HTTP/1.1Content-Type: text/xmlSOAPAction: “http://tempuri.org/Add”Content-Length: 386
<?xml version=“1.0”?><soap:Envelope ...>...
</soap:Envelope>
WS-I - Axis 2.0
�7�. �����/� �!�*�!*��
SOAP Message
SOAP Envelope
Headers
<Envelope> encloses payload
Protocol binding headers
The complete SOAP message
SOAP Header
SOAP Body
Message Name & Data
Headers
XML-encoded SOAP message name & data
<Body> contains SOAP message name
Individual headers
<Header> encloses headers
WS-I - Axis 2.0
A Sample SOAP Request
POST /StockQuote HTTP/1.1Host: www.stockquoteserver.comContent-Type: text/xml; charset="utf-8"Content-Length: nnnnSOAPAction: "Some-URI“SOAPAction: "Some-URI“
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV: encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI"><symbol>DIS</symbol>
</m:GetLastTradePrice></SOAP-ENV:Body>
</SOAP-ENV:Envelope>
WS-I - Axis 2.0
� �7�. -�, 6
HTTP/1.1 200 OKContent-Type: text/xml; charset="utf-8"Content-Length: nnnn
<SOAP-ENV:Envelopexmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/"SOAP-ENV: encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"/><SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI"><Price>34.5</Price>
</m:GetLastTradePriceResponse></SOAP-ENV:Body>
</SOAP-ENV:Envelope>
WS-I - Axis 2.0
�7�. ��* !
HTTP/1.1 500 Internal Server ErrorContent-Type: text/xml; charset="utf-8"Content-Length: nnnn
<SOAP-ENV:Envelope<SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body>
<SOAP-ENV:Fault><faultcode> SOAP-ENV: MustUnderstand </faultcode><faultstring>SOAP Must Understand Error </faultstring>
</SOAP-ENV:Fault></SOAP-ENV:Body>
</SOAP-ENV:Envelope>
WS-I - Axis 2.0
�7�. ���*��!6 �� ���!*���
5)�&������""�����)�� +
� HTTPS� X.509 certificates
����&�!����<�4"��#������#��#�(� #���� ���/!�����/!&��� &+
������ �!���!!&�� ������������� �!���!!&�� �������
=����&&�'����&+
"+!���'�
WS-I - Axis 2.0
��?8 %�������������������! �����)��
������#�(�'�������������������������
1. Service interface definition– Abstract semantics for Web Service
2. Service implementation definition– Concrete end points and network addresses where Web Service can be invoked– Concrete end points and network addresses where Web Service can be invoked
�&�����&�� ����� ������ �� �������� ��(������
�����������+�)��')&��'�+�)�3����# ������������������) � #������ #�����%����#����
#�+���*�"#����������+�!�� ���&����)��')&�'�������#������ )&&+�'�����������������
����������������!)�&��#����������+���4��� ����)(� *�"#�����������'�&�� # ��� ���
#��>����'� #�������������! ����'� #���������*
WSDLWSDL Schema
ImplementationInterface
<import>
<definitions>
<import>
<definitions>
<portType>
<message>
<import>
<binding>
<types>
<port>
<import>
<service>
WSDLWSDL Schema
Interface
<import>
<definitions>
• <definitions> are root node of WSDL
• <import> allows other entities for inclusion
• <types> are data definitions - xsd
• <message> defines parameters of a
<portType>
<message>
<import>
<binding>
<types>
• <message> defines parameters of a Web Service function
• <portType> defines input and output operations
• <binding> specifies how each message is sent over the wire
WSDLWSDL Schema
Implementation
<import>
<definitions>• <service> specifies details about the implementation
• <port> contains the address itself
<port>
<import>
<service>
• <port> contains the address itself
� Open – allows for other namespaces and thus highly extensible
� Ability to import other schemas & WSDLProvides “recipe” for Web Services
WSDL Elements
� Provides “recipe” for Web Services� Provides both interface and implementation details
WSDL Example
� Demo: http://localhost/…/math?WSDL� http://localhost:8080/axis/services/urn:questhelloservice1
?wsdl
WS-I - Axis 2.0
���!�/ � ����� �������
0!��*�!�
�#��� ���(��� ����� ���������������%����#��� �����((�&+�)���� ��#�1)��*�?�#��'� #�� ��#�1)���#��� ������� ���%�����&&�������� ���*�"#����?�#��'� #�� ��#�1)���#��� ������� ���%�����&&�������� ���*�"#������((�&+�)���� ��#�1)���������&���'������'�&&���,
�����'��� �!!���#
�� �� �'��� �!!���#
4� #�������'��� �!!���#%����� � �����������������&�!(� �'��(������
WS-I - Axis 2.0
��/ �%) ��� .7B7 �,,����
����� #������%�&� �)����)(�� # ��)�����������&��������� �#���+�!�3���(������&&�
!!�����'�&&���,�
!)�&����&�����&&����&�@�
!)�&���� �����+��&&��� ����(� �@�
�� )��$��&&��$�:�(�A��� )��$��&&��$�:�(�A�
B
B
WS-I - Axis 2.0
�!�, �# )�,� � !�� B��� � ���& !�� 3�� !�� �� �� ��� ��� 3� ��
�!�, �# G ! H'7�)�'I�7�>J K (���,,� K ����� K �>$%0"�
�!�, �# )���!� � �����!�6 �� �� L,5L ����� !�� �>$%0"� �����!�6�
�!�, �# '��& �,6 !�� �� �� ��� ��� 3� � �! !�� ,5�����!�6�
�!�, �# 03 '���! �� ! �*�/& !�� �!��! �!�
�!�, 2# G ! �!!,#EE �� ��!#����E�����E��������E ��!�������� & (���� (� �� 3�� �
������� �� �� �� �� ��
�!�, �# "( !6,� �!�, �# "( !6,�
�!!,#EE �� ��!#����E�����E��������E�� �� �E��6�� @���=M�����M !�����
�� (� �� �� � ! ��� L�� �����L � !�� ��(���� 8�! *� � !�� ���� !��/ �/��
���/�/ !�� ��� ,�����!��& (���� (� /��� *� !�� ��,��!�� *!,*!�
�# � #�����(!&+�(������ # ����#����)�����')&&+���!&�+����)���������������#���
���3��� #������������ #���?�"�(��*
WS-I - Axis 2.0
B�- ��� 1 �!�!� �,,����
�(!�� �6�/*6��*����������A
�(!�� �6�/*6��*����� #��A
�(!�� �6�/*6��*�����(A
C���������� � ��� D(��!�� E�$# !,<<�(!&�*���<#�&&����&�$�%�(��E�$��&&����&�$
!)�&����&�����&&����&�@�
C����� #���� ���E�$)�,�+��&&�$�%�!�� ��D(� E�$�+��&&�$ !)�&���� ����C����� #���� ���E�$)�,�+��&&�$�%�!�� ��D(� E�$�+��&&�$ !)�&���� ����
�+��&&��C�����( �!� D(� E�$(�$ �� ����(� �@�
�� )��$��&&��$�:�(�A�
B
B
WS-I - Axis 2.0
>������� �# .7B7 (�!� ) ��� ����/ .��9�/� "��� 1 ��, 6�� �� �5�� � ,5�����!�6
!�3������3*�(!&�
�(!�� �6�/*6��*����������A
C����������
!)�&����&����������������� @�
!)�&������������� ��������� ����(� �@�!)�&������������� ��������� ����(� �@�
�������������� E������������ A�
������*�� � ��� �$� ��� $ A�
������*�� D)(����$D)(����-F$ A�
�� )��������A�
B
B
WS-I - Axis 2.0
�&����� ��#���� # ����#���� ��� #�����������&��%��� #�����������&�����&&�&��3�&�3��
#��%��#��#������(!&+��G����*
!�3������3*�(!&�
!)�&����&�����������@�
!��� ��� ����� ��� A� !��� ��� ����)(���A�
!)�&���� ������ � ��� � �@�
�� )��� ��� A�
B�B�
!)�&���������� � ��� �� ����� ��� �@�
#��*� ��� E�� ��� A�
B�
!)�&���� ������ D)(���� �@�
�� )��)(���A�
B�
!)�&���������� D)(����� ����)(��� �@�
#��*)(��� E�)(���A�B�����B
WS-I - Axis 2.0
D����# ����#��� �������� ����(!�&�� #����)�������������� ���G�����#����'�&���*6� �'�&�*�
D�/ %�������� ����� ��)��/��.*/(&�'�&�� ��������!&�+�� ��#�&�� #��*6��'�&�*�
�������� # ��+������'�&&������ �+� �� #��/��.*/(&�'�&����H'7�)�'I�7�>J K
(���,,� K ����� K �>$%0"� K �3 K ��������
H��!&�+�� �/ ����E$*6�$������ ��+E$!�6�$�
�&��E$���*!�#�*/��.*��!&�+(� *��G���!&�+��$<I
"#���/ �� �!���� ����������!� #��*6��'�&��� ��H'7�)�'I�7�>J K (���,,� K �����
K �>$%0"� K ,5
������� ��3��!���(��� # ��#�����(3��+���'��)� ����#������/��.*/(&%����#���
����� � � #���+� �(� ��!!&+� #���#���*�
"�������# �#��#!!���%��'�"�(� �����)��� #��&� 2����� � ������ ��
# !,<<&��&#�� ,JKJK</��.
WS-I - Axis 2.0
?�, 6�/ � ������� C��/ � ������� ������� �� �
���!�/ !�� ����������� �� �
H��������(�E$��&&��������$I�
H������! ��I�
"#������(+�'��� ��������%��#��#��+��#�&&��
H<������! ��I�H<������! ��I�
H,�����!�� ���=M�������) ���MJ�� �� �HE,�����!��J
H�!�� ������=M��6�� MJ
H�����/�-�������
� ���=M�/��,������������,������������-.)�����/�-�������MEJ
H<�!�� ��I
H<�������I
WS-I - Axis 2.0
)���!�/ � ������� ������� �� �
"#���/ �� �!���� ����� �������������#����'�&���� ���� #����(!�&���������'� #����������
�(!&�(� ����&��%��� #����������*/(&�'�&�*�"#��� ��&�'�&����� �)� )����'� #����������
��#����'�&��&��3��&�3�� #��,�
��&&����&�*��
�?"��4D=�
��������*/(&�
��&&����&�*�&��
��!&�+��� #�������������6)� ��( ����'����!!��� #������������#����'�&��� �� #�����������
����� ��+����)���/��.����������!��� ��+*�
WS-I - Axis 2.0
?�33���! ��6� 3 �,���36�/ �����/� -��������
���(� ���������%� #������������&��+���'��!���'+���(����������������'���������
�������,�
�!���'+�(���������������� � #���!�� ���&���&�'�����#��!�� ��*
�!���'+�(���������������� � #����������&���&�'��� #���#�&���������*
�!���'+���������&���&�(��������������������������� #�(��� #��!�� ���%������#��
��1)����*�
WS-I - Axis 2.0
�,���36 �����/� -�������� �! !�� ������� 8��� 3� !�� �� � �������
WS-I - Axis 2.0
������� G�*, �� ��/ � �������
"#����(+����(+��� �����#�������� � ����!&�+�()& �!&�������������#��#�(+����
&����&&+���& ������� � ��� #���������&������������#����'�&�*�"����� # %��/��.�#�� #��
����! ��'���������7��)!*�
���������� (� 9 �9� !��� (�
H�������7��)!I�
H�����������=M�6��������MJ
************************�
H<�������I�
H�����������=M�6��������MJ
***********************�
H<�������I
H<�������7��)!I
WS-I - Axis 2.0
����/ '����%.��!6 -��*����
"#����(+����(+��� �����#�������� � ��)���� #����!� +�&����+����)�������������*�
���&���+�3��� # ���#�����������(��)&�����/��.�������& ����(������#�����������
�!�� ����� ��� ������&���&���� *�
�+�������*��
�?"��4D=�
��������*/(&�
&���
'��*6��'��*6��
��*6��
������� ��?8 �� �������
�#�������� ����(!&�/�!!&�� ���%������&&�'��� #������ ��#��������'�&�������#�(�
'�&��������� #������������#����'�&�*�/+�*!��!�� ���
�?"��4D=�
��������*/(&�
(+�������*���&
WS-I - Axis 2.0
����/ '����%.��!6 -��*����
"#����(+����(+��� �����#�������� � ��)���� #����!� +�&����+����)�������������*�
���&���+�3��� # ���#�����������(��)&�����/��.�������& ����(������#�����������
�!�� ����� ��� ������&���&���� *�
�+�������*��
�?"��4D=�
��������*/(&�
&���
'��*6��'��*6��
��*6��
������� ��?8 �� �������
�#�������� ����(!&�/�!!&�� ���%������&&�'��� #������ ��#��������'�&�������#�(�
'�&��������� #������������#����'�&�*�/+�*!��!�� ���
�?"��4D=�
��������*/(&�
(+�������*���&
WS-I - Axis 2.0
)!���!%����! �,,����N�!��!�/ 3�� ��?8
�/��.�#���)�& ����)!!�� �'������� ���������������*��������#��� #������%������ #���
���������������) #������#����&+� ����� #��'�&&�����'���� �!�,
7��� �� #�������������������������3�&� � *
=�&&� #�����������3�&� ���������� �� #���)����������(� *
�)� #������ ��� ��)�&��'�&�*�)� #������ ��� ��)�&��'�&�*
��!&�+� #�� ���� �������������#����'�&��� ���)��!!&�� �����������#�����/��.�����)��*
G����!�/ )��
�/��.���(����� #���� ��'� ��&����4�?�!&)�����'������������ ��������.���� ���������
��(3�� #�����3������*�
� ����� ��,
���������3�&� ���&��%����������������� �(�� ��'� #�� �(�������� �� %����������*/(&
��������*���&%��� ��)�&��'�&�
WS-I - Axis 2.0
���, � �# C�� ?�3�* ! )��%G����!� 7,!�� ! G����!� ������%���� )��
7�� �� #���������� ��+��'� #���/��.����+���� ���) ��%����)��� #��� #��� �#���� #���#�&&�
'�&�*�"#�������'�&��������&�&���� #���(!&��<���&����� ��+*�"#��'�&&�������((��
���� ���������������������� #���')& ��! ���,
I���&.6�*� ��)�� **L�(!&��L���&L�/��.�(!&������ *���&�����3�&��� M��
"������ �������������������'��(�����%�+�)�#��� ��!������� #����� �������������� ������
�����������������! �� �'&��� �� #����������� ��*�"#��2���2'&������ ����#� #���� �����������
���������*�5) %�� ��������((����� ��)��� #��2���2�'&��&����� #� #��2���2'&�%��� #����������
�� ������!&�+����� #�) ����������������! ������/��.*�4���� ��%�+�)���&����!���'+� #��
�) !) �&�� ���)���� #��2��L ,!��
WS-I - Axis 2.0
���, � �# G����!� � 0!��3��� 0�!��� 3 � )���!� ) ���
"#��������� �����#���� #��������������&�!����#����� ��'���'��� #���3�&� �%��� #��
#�+�(���!� ��)&�����������(!&�(� ���'��� #����'��)� ��*�"#��������&+��������
�� #��/��.��+�)���� #��2����2��������������� ��'�� �'&�,
I���&.6�*� ��)�� **L�(!&��L���&L�/��.�(!&������ *���&�����3�&��� �������
"#���������)���� #���(� ��� ���(� ��� ��'�����!&����'������� ���&��*��'���)���%� #��
����� ���&������&������� ��%��) �� ����� ���'������������� #��(��������������*�4� ��%�
#��� ��'������)���%��� #��)�������'���� ��!&���+��&��� # ��(!&�(� �� # �� ��'�����
#�����������&��*
WS-I - Axis 2.0
���, � �# G����!�/ ) ��!%���� )��
I���&.6�*� ��)�� **L�(!&��L���&L�/��.�(!&������ *���&����� )�
�/��.�(!&������ �������� )��� )��E�����/��.�(!&������ �������� )�� A�
�/��.�(!&������ �������� )�*?�#�� �����(���1)�� �E���
�/��.�(!&������ �������� )�*?�#�� �����(� A�
��1)�� *�� ?�#�� �����(�$��&&�$ A���1)�� *�� ?�#�� �����(�$��&&�$ A�
�/��.�(!&������ �������� )�*?�#�� ����� )�����!����E�� )�*��#�� ������1)�� A
WS-I - Axis 2.0
>���*!� )���
��� ��
��&�������/������� �&���%� # ���%� #�+����� �3��!� #����!����/��) ���� ����� #��
(�(��+*���#�&���������������������&��������3����� #� #���!) �'��� #��&�������&) ���
3��'��(� #���������� �/ ������&&�&���(������) ��������� �/ ���#! ���N* ���
��&���#���� #���������� ��������!��(������� ���������� �/ ��� ���� �����&���#���� #���������� ��������!��(������� ���������� �/ ��� ���� ���
���(��������(�����*
�+�#�&������/��.�#�� #���!��&� +� ��!)��� #��(�������/��) ��%��#��#�(��� # � #��
#�&����� ��(� �� #��(������'&����'�� ��� ��� �)�*
WS-I - Axis 2.0
���!�/ � ���, � ��� ��
����(!&��#�&��� # ��/ ���� #����� �� ��&�� �&�����&&�!!�����'�&&���,�
!)�&����&�����(!&���&�� �/ ������� �� ��&��
@�
!)�&�����(!&���&��� �
@�
B�B�
!)�&���4��� �����!��� ���3���������� �/ (���� �/ � #������/��=)& @�
<<��� �� #��!���������&�����#����
<<������(� #���
�� )��4��� �����!���*��D"4D>?A�
B
B
WS-I - Axis 2.0
D� �� #���� )���&)���'� #�����3��(� #��*������#��� #��'�&&����� #�����&)����� #��
�� )���&)���'� #�����3��(� #��,
)!�*�# '�� ��� �� !��9� !��! !�� �����/� �� ����6 ! / 3�(����
�*�,��# '�� ��� �� !��9� !��! !�� �����/� ��! �� ��! 3�(��� ���� ���
���!�� ��� ! ��!��3���: � !�� ����*!� �� �*�,�����
���!# '�� ��� �� !��9� !��! !���� �� ���!��/ (�/ (�!� !�� �����/�& ��
��! !����3�� � ( !�� �����/� ! / 3�(����
WS-I - Axis 2.0
.����
"#������! ��'�!#������� ���)�����+��/��.%�(�&+� ���)!!�� � #���+(������������'�
#�&���*���!#����������'�������)(�����'��+�,
4 �����������������&����&���&&�� ����'�#�&���*
4 ������������������!���'��� �(��� ���&��� #��(�������/��) ��*
4 ������������������)�3� �� ���#��#� ��!) ��#�&��*
��������������!#������#�&��� ��*
��'&��������/��) ����#����������������������&&�� ����'�!#���
WS-I - Axis 2.0
���� #��������&&�� #�����3��(� #����'� #��!#��%�� �#�� #��'�&&������/��) �����1)���,
•=��� %��#��3��#� #��� #��!������ ������� ��'���*
•"#���#��3��#� #��� #��!#��=��� #�&������ #���*�4'�� ����!���� %� #��� ���&&�������3��*
•D�/ %� #����� ��'� #��#�&������&&�������3��%��/��! �'��� #��!#���� #�&��*
•4'� #��!#���� #�&������ #���%� #��� ���&&�������3��*
•=�&&+%�� ���&&��#��3��#� #��� #��!�� ���� �� ���� ��'��������� ��'������ #��(�����*
WS-I - Axis 2.0
'6,�� 3 .�����
"#������� ��� +!����'�!#������'������/��.*/(&*�"#�����������''��������� ���� #��
�+�� #��&���������(!&�(� ��*��������%� #��&�� ����'� #��!#����� #���/��) ����#��
��''���*�"#�� ��� +!����'�!#������,
-*�7&��&�!#��
.*��!�� ���!#��
G �� .����
���&��&�!#�������!#��� # �������3��������!�� �����'� #���������*�4���(!&�� ��(�%��#������
�(��������(���� �� #���+� �(%�� ���&&���� #��)�#� #���&��&�!#��*
7,���!� .����
=����� ��%��)!!���� # ����#����#�&��%� # �������� �#��� ���)�'�������+�(������
��(��� �� #���+� �(%�� #���������� ���)� # �'������&�� ����� ��'��!�� ���*
WS-I - Axis 2.0
.���� -* ��
,��������!
H#�&���(�E$��(!&�O��&�� $��&��E$���*!�#�*/��*#�&���*��(!&���&�� $I�
H������!#��E$)���!#��-$�!#��=��� E$ �)�$<I
H<#�&��I
,����8��!
H#�&���(�E$��(!&�O��&��$��&��E$���*!�#�*/��*#�&���*��(!&���&�� $I�H#�&���(�E$��(!&�O��&��$��&��E$���*!�#�*/��*#�&���*��(!&���&�� $I�
H������!#��E$)���!#��-$�!#���� E$ �)�$<I
H<#�&��I
��3��
H#�&���(�E$��(!&�O��&��.�$��&��E$���*!�#�*/��*#�&���*��(!&���&��.�$I�
H������!#��E$)���!#��-$���'���E$���(!&�O��&�� $<I
H<#�&��I
WS-I - Axis 2.0
�3!��
H#�&���(�E$��(!&�O��&��0�$��&��E$���*!�#�*/��*#�&���*��(!&���&��0�$I�
H������!#��E$)���!#��-$�' ��E$���(!&�O��&��.$<I
H<#�&��I
��3����3��
H#�&���(�E$��(!&�O��&��P$��&��E$���*!�#�*/��*#�&���*��(!&���&��P$I�
H������!#��E$)���!#��-$�' ��E$���(!&�O��&��-$���'���E$���(!&�O��&��.$<I
H<#�&��I
WS-I - Axis 2.0
� (
=&��������(!&+����&&�� ����'�!#���*�"#���������'�!#�����������'&��������'������
/��.*/(&*������!#�������&����&���&&�� �����#��#������'� ����� )&�����! %��'&��������
��)(��� ����� #���/��) ����#�����&&�� ����'�#�&��� *
"#��'�&&�������� #��'�)�� +!����'�'&�������/��.,
-*�4=&��
.*��) =&��
0*�4=)& =&��
P*��) =)& =&��
WS-I - Axis 2.0
���!�/ � ����� ��* � 1 ��* � �!�*�!*�� $� (
WS-I - Axis 2.0
��* � )3�/*��!� �� � O��* ���� P
����(!&��(��)&�*/(&�'�&��#���&+����#�&����) ��#��� ���(��� ����(!&�/�(��)&��%����
��#�����(��� #�����'��)� ������(��)&�*/(&*�=��� %�&� 2��&��3� � #�� +!����'�
��'��)� ������&�&����(��)&�*/(&��� #���/(!&��(��)&�%��#��#���) ��&&� #��
���(������) �����(������%�)���� #����#�����,
��&�������#����)&��
��(� ���
���)&���(!&�(� ����&��
�����&��+
?��!�� ��
WS-I - Axis 2.0
��� ��� �� .���� -* ��
"#��'�&&�������� #�� ����+���'���� ����#�&������/��.,
4(!&�(� ����*!�#�*/��.*����*��&���� ��'��
?/ ������*!�#�*/��.*#�&���*��� �� ��&����� �� ��&��
!)�&����&���4��(����) ����&�� �/ ������� �� ��&�� �(!&�(� ��!)�&����&���4��(����) ����&�� �/ ������� �� ��&�� �(!&�(� ��
��) ����� � @
!)�&���4��� �����!��� ���3���������� �/ (������� �/ � #������/��=)& @�
<<�� � #����) ���!��!�� +�'��(� #����'��)� ����� �/ �
��'��)� ���� �/ ��'��)� ���� �/ E�(������� �/ *�� ��'��)� ���� �/ � A�
WS-I - Axis 2.0
4 �������) �E�
�4 ���� ���'��)� ���� �/ *�� ���!�� +�4D���4D7O�?���7?O��>D"OQ?R A�
<<����(� � #����) ���
��) �E�4 ����*�&)��'���) *� S&)�� �:�-:�TU A�
<<�� � #�������) ���3� �� #����'��)� ����� �/ �
��'��)� ���� �/ *�� ���!�� +�4D���4D7O�?���7?O��>D"OQ?R%���) A�
<<!�� �� ��) �
�+� �(*�) *!�� &�T"#�����(���(��������) �������T�:���) A��+� �(*�) *!�� &�T"#�����(���(��������) �������T�:���) A�
�� )��4��� �����!���*��D"4D>?A�
B
B
WS-I - Axis 2.0
����(��)&��) #������#��� �����&&� #��&�����!��������������� #�����3��(� #��%�����
#��������'�� �����)& %��������������#� #����/��?��� �#�)&������� �)��%��)�!����%����
��� ��*�"#�������������+��� )���� #��������!������� )���&)�*�"#����&�&���� )��
+!���������&���'��������&��,
4��� �����!���*��D"4D>?,�7����� #�����&� ���� �)�� #��(�����*
4��� �����!���*�>��?D�,���������� ��� �)���������(���'� #������ �������
� �+� �� ��'���*�������#��� ��!)��� #���/��) ��%����� *
4��� �����!���*�5��",���(� #���#����������*����#��� �����!� #��(�����%���
&� � #���� � ���3�����) �� * ��'�&&���,&� � #���� � ���3�����) �� * ��'�&&���,
"#��������!�������) ����� � �&���������&&�� ����'���� �%��#��#�!!����
!)�&���� ��'�����) ����� �
@�
� ����4D���4D7O�?���7?O��>D"OQ?R�E�$���(���(��������) $A�
� �����>"7�4D7O�?���7?O��>D"OQ?R�E�$�) �����(��������) $A�
� ������>D"O=4�?OD��?O��?=4��E�$��) O������$A
B
WS-I - Axis 2.0
(��!� !�� *!/�/ �����/� �*!��
!)�&����&����) ������) ����&�� �/ ������� �� ��&�� �(!&�(� ��
��) ����� � @�
!)�&���4��� �����!��� ���3���������� �/ (������� �/ � #������/��=)& @�
<<�� � #����) ���!��!�� +�'��(� #����'��)� ����� �/ �
��'��)� ���� �/ ��'��)� ���� �/ E�(������� �/ *��� ��'��)� ���� �/ � A�
4 �������) �E�4 �������) �E�
�4 ���� ���'��)� ���� �/ *�� ���!�� +��>"7�4D7O�?���7?O��>D"OQ?R A�
<<����(� � #����) ���
��) �E�4 ����*�&)��'���) *� S&)�� �:�-:�TU A�
<<�� �� ���3� �� #����'��)� ���
��'��)� ���� �/ *�� ���!�� +��>"7�4D7O�?���7?O��>D"OQ?R%���) A�
<<!�� �� ��) �
�+� �(*�) *!�� &�T"#���) �����(��������) �������T�:���) A�
�� )��4��� �����!���*��D"4D>?A� B����B
WS-I - Axis 2.0
��* � 0�, ���!�!� ) ���
�#��������������� ��!�����&���&�!!&�� ��%�� ���������)�� # ����#��� ���� �&�����
)(�����'� #�����)�#���� �������� ���%�������!��!�� +�'�&��%�� � ���)!� #����%���
����*�"#���'���%��!&��������1)������#����������)&��!) � #��&��������)��(��)&�*����
3��� # �#�&�����)��&+��#�����1)�� ���(���� �� #���+� �(%���� � � #���+� �(�
�� �&�� ��� �(�*�"#��(��)&���(!&�(� ����&���!����������+� ���#������+� �(�
�� �&�� ���&���������&&����+� �(��#) ����� �(��!��������*�������#���(� ���������%�
#��(��)&���(!&�(� ����&�������! ��&*�4'���� 3�� #���/��.���')& ����������(��)&�%� #��(��)&���(!&�(� ����&�������! ��&*�4'���� 3�� #���/��.���')& ����������(��)&�%�
� ������� �#����(��)&���(!&�(� ����&��*�=���)���� ����!)�!����%������&&���� ���
(��)&���(!&�(� ����&������#��,
WS-I - Axis 2.0
!)�&����&�����) �����)&� �(!&�(� �����)&�%���) ����� � @�
!��� ��� ���'�&�� ������>D"�O����?D"�E�$��) �$A�
!��� ��� ���'�&�� ����"4�?�"���O=����"�E�$++������((��$A�
!��� ��� ���'�&�� ����=4�?O�>==4��E�$*!��!�� ���$A�
!)�&���������� ���'��)� ���� �/ ��'��)� ���� �/ %�
�/�����)&� /�����)&� � #������/��=)& @�
<<�� �&�����)����) ����
�+� �(*�) *!�� &�$������ #���� �,�(��)&�$ A��+� �(*�) *!�� &�$������ #���� �,�(��)&�$ A�
�� ��) �����'��)� ���� �/ %�4D���4D7O�?���7?O��>D"OQ?R A�
�� ��) �����'��)� ���� �/ %��>"7�4D7O�?���7?O��>D"OQ?R A�
B�
!��� ��������� ��) �����'��)� ���� �/ ��'��)� ���� �/ %�
� ����3�+ �@�
4 �������) �E��4 ���� ���'��)� ���� �/ *�� ���!�� +�3�+ A�
�'����) �EE�)&& �@�
��'��)� ���� �/ *�� ���!�� +�3�+%�4 ����*�&)��'�$K$ A� B���B�
WS-I - Axis 2.0
!)�&������������D� �'+��/��������! �� /��������! �� � #������/��=)& @�
�+� �(*�) *!�� &�$������ #������D� �'+$�:�/��������! �� A�
B�
!)�&������&� ��)!!�� ����� �������� ������� �� �@�
<<�� )����#� #���!�&��+����� ����������)!!�� ���
�� )��'&��A�
B�
!)�&��������!!&+��&��+���&��+�!�&��+%�!)�&��������!!&+��&��+���&��+�!�&��+%�
�/��������! �� /��������! �� � #������/��=)& @�
<<���'��))�� )���� #��!�������!�&��+V�
B
!)�&���������#) ������'��)� ���� �/ ��'��)� ���� �/ � #������/��=)& @�
<<����&�)!�� �� #���������2&&���� �� #���&)����'� #��<<��) ���� ���'�&��
�+�@�
��(!&�� �=��( '��( �E������(!&�� �=��( ��"4�?�"���O=����" A
WS-I - Axis 2.0
=�&����) =�&� E����=�&����>D"O=4�?OD��?O��?=4��:�'��( *'��( ����� �� �:�
=4�?O�>==4� A�
�'��V��) =�&�*�/�� �� �@�
��) =�&�*��� �D��=�&�� A�
B�
���!�� ����!��!��E�������!�� ���� A�
!��!�*�� ���!�� +�4D���4D7O�?���7?O��>D"OQ?R%�
��'��)� ���� �/ *�� ���!�� +�4D���4D7O�?���7?O��>D"OQ?R * �� ���� A���'��)� ���� �/ *�� ���!�� +�4D���4D7O�?���7?O��>D"OQ?R * �� ���� A�
!��!�*�� ���!�� +��>"7�4D7O�?���7?O��>D"OQ?R%�
��'��)� ���� �/ *�� ���!�� +��>"7�4D7O�?���7?O��>D"OQ?R * �� ���� A�
<<��� �� ���'�&��
!��!�*� �������=�&��) !) � ��(���) =�&� %���>D"�O����?D" A�
B�� �#��4�?/��! �� � �@�
<<�'����#����/��! ������2&&�6)� �!�� ��(��������&� �<<� ����
�+� �(*�) *!�� &�$�������) ��'�&��V�?��������$�:��*�� ������� A�
B�
B�B
WS-I - Axis 2.0
���!�/ !�� ��* ���� �� �
H(��)&��(�E$��) �����)&�$�
�&��E$���*!�#�*/��.*�(!&�*(��)&�*��1)�� *��) �����)&�$I�
H������! ��I�
��) �� #�����(������) �����(������H<������! ��I�
H4=&��I�
H#�&���(�E$4��(����������) ��&��$�
�&��E$���*!�#�*/��.*�(!&�*(��)&�*��1)�� *4��(����) ����&��$I��&��E$���*!�#�*/��.*�(!&�*(��)&�*��1)�� *4��(����) ����&��$I�
H������!#��E$"��!�� $�' ��E$��1)�� >�45������! �#��$�
��'���E$������ ��5������! �#��$<I�
H<#�&��I�
H<4=&��I�
H�) =&��I�
H#�&���(�E$�) ������������) ��&��$�
�&��E$���*!�#�*/��.*�(!&�*(��)&�*��1)�� *�) ������) ����&��$I�
H������!#��E$�������) $<I�
H<#�&��I�
H<�) =&��I
H<(��)&�I
WS-I - Axis 2.0
?�, 6�/ �� >/�/�/ !�� ��* �
D������ �������� ��+��&&����?"��4D=�)���� #���&���������� ��+%�����!+� #��
(��)&�*/(&�'�&��� ��� *�"#�%��)���&���������� ��+���&&�!!�����'�&&���,
�&�����
�?"��4D=�
(��)&�*/(&�
��������
��) ����� �*�&��
��) �����)&�*�&��
4��(����) ����&��*�&��
�) ������) ����&��*�&��
D������ ���W4��'�&��'��(� #���&���������� ��+%�����(�� #��W4��'�&������) ���
(��)&�*(�*
WS-I - Axis 2.0
4������� ������� #��(��)&�� �� #���+� �(%�'�&&��� #��� �!���������&��,
-*�7�� ��# !,<<&��&#�� ,JKJK</��.<*
.*��&��3��� #��������!��!� !��� '�� �! (� ,� *, � �( ,�/� !��! ��9� 3�
*������ �� ,���(���
0*�"+!��$�(�$���)���(����$/��.$���!������%� #��� ���&&��!��)!� #���(��� � ���
����&�*
P*�"#���&��3��� #������ �� � ��* �� � !�� �3!%��� ���� ���/�!� ��*& (���� (�
�� 3�� *� )*!�� ��* � ��#
�*!����* �# '��� �*!� !�� ����/ �� *!/�/ �����/��� F*�D������ ��
>/�/� ��* � K �� � ��������& (���� (� ,� *, � �( ,�/� (�!� � ��,%�(
��*�
N*���&�� ��*!����* � 3�� !�� ��,%�( ��*& �� � ��9 �/�/��
X*�D��%�+�)���&&����� #��(��)&��$��) �����)&�$��������)�����')&&+*
J*�"#����� ��G �� )����� Q* (� �� �� � ! ��� !��
0���/�����/�)*!��� �� ��� �� � !�� !���,�! ,���� ��!(��
-�D*��!C-0$����?��,�!���� �� �7�.��!�$����?��,�!�����
WS-I - Axis 2.0
) ��! �.0
$ �9�/ �� "%$ �9�/ 0���!�
������#���6)� �����)����%� #������� ���(���+���'�) �&�����������������%��+�#���)��
���+�#���)����&��3��������&��3�� *�4� #�������'��+�#���)������ ��%�+�)�
���3�� #�������������� �) �&�+�)��� � #�����!���*�"#���'���%��� #�������'��+�#���)��
���� ��%� #��!!&�� ����&��3��) �&�+�)��� � #�����!���*�
WS-I - Axis 2.0
'6,� �# )���!�/ � �������) ��!*��/ 0!� ?�3�* ! )�!�*�!�
WS-I - Axis 2.0
������ �# 0�9�/ � ������� � $ �9�/ ���� O���-������OPP
�!�, �# )���!� � �������) ��!�6 *��/ �6 3 !�� ��!�*�!�� !��! ��� ��!���
��� ����
�!�, �# )���!� � 7�> ���!3� !�� ,�6 �� O�� !�� 3���! ��� � 3 !�� �7�. ��6P� 0
�����& <�8 ��,����!�!� �� �*� ! �<07�& � (� ��� ! ����!� 7�> ���!�
!)�&�����?&�(� ��� ��+���� �@
��=� ��+'� E������ �� =� ��+*�� ��=� ��+� A
��D(��!�� �(D� E�'�*��� ���D(��!����$# !,<<��*!�#�*���</��.$%�$�-$ A
��?&�(� (� #���E�'�*��� ���?&�(� �$��#�$%��(D� A
��?&�(� �&)��E�'�*��� ���?&�(� �$�&)�$%��(D� A
�&)�*�� "�/ �$��&&��%�(+�'��� ���������) �&�� ��$ A
(� #��*���#�&���&)� A
�� )��(� #��A
B
WS-I - Axis 2.0
�!�, �# $�3�� ��9�/ !�� �������& (� ��� ! ����!� � ��!���!� O,�,��!6 ��/P
�5��! �� �� 7,!�� �� ��! !��! ! �������) ��!� '�� �5��! 7,!�� �!���
,�,��!��� �*�� �� !��/�! >.- O>� .�! -�3�����P& �7�. ��!�& !���,�! ��!�&
�� � & ! �3�/*�� !�� � ��! ���� 3� !�� ������� ����!�� '�� 3 (�/ ���
��,,�! ��(� �( (� �� ����!� !�� 7,!�� �5��! �� 3� �!#
��������&�� ���E������������&�� � A
<<���� ���! �����6��
�! �����! ��E�����! ���� A�! �����! ��E�����! ���� A
<<�� ��� ��� �?��
�! �*�� "�����?�!�� ��'������
$# !,<<-.X*K*K*-,JKJK</��.<��������<�+�������$ A
<<�� ���� ��
�! �*�� �� ���$)�,��#�$ A
<<�� ������ ����! ���� �����������&��
��*�� �! �����! � A
WS-I - Axis 2.0
�!�, �# ���-������ �� !�� �.0 3� ��9�/ � ������� � � � �9�/ ����� ��� (�
*�� !��� �.0& !�� ,�/��� /�!� � �9�� *!� �! /�!� � ���,���
��?&�(� ����E���*�������������� ��+���� A
�+� �(*�) *!�� &���� A
��������)� #����(!&������%������&&��� � #��'�&&������) !) ,�
H�,��#����!���
/(&�,�E$# !,<<��*!�#�*���</��.</��$I�
H�� )�I
��&&��"#������(+�'��� ���������
H<�� )�I
H<�,��#����!���I
WS-I - Axis 2.0
D� �,�
���������� ��� #����4�'������3����������������&��3���(��*���(�(���� # �
��*���������� ���� ��+���� ����3���&+��'������� ����������&�� �+��� #���)����� ��
��')& ���� �)� ��%����!������)&&��&)����/��������� !�(� ���'���+�� #���
��� �)� ���*�
�#�������� �� #����������&�� �+��� #���)�����)�����/���������%��������+(����&�� %�
���#��� ��)��� #��'�&&�����(� #����� #� #�������� ��!�� ���(�*���#��� ��)��� #��'�&&�����(� #����� #� #�������� ��!�� ���(�*
�����������YD(� �!�� ��%���?&�(� �&�( A
�� ����, �& �3 (� ����!� �������) ��!�6 *��/ !�� ��?8 �������& !�� (� ���� !
*�� !�� ,���!� ��� �� ��( � !�� ��� �� (#
��������&�� ���E������������&�� �)&&%����
>���$# !,<<&��&#�� ,JKJK</��.<��������<�+�����������&$ %)&&%)&& A
��*��������������YD(��$# !,<<��*!�#�*���</��.$%$��#�$ %��� ��+���� A
WS-I - Axis 2.0
������ �# C!� �+�/ � ������� � � "%$ �9�/ ����
O���-������"$ �9�/OPP
4������� �����3������) ��?������+�#���)��(��%������)��� #�����4*�"#�������
���(��#��(��'����(!&�(� ����+�#���)�� +!������ ��,
4� #������%������'�&&���� �!�-� ��� �!�0����������-%��� #�) �+�(���'�� ��%��) �� �!�P�
����� ������#���� �� #��'�&&����,
��������&�� ���E������������&�� � A
�! �����! ��E�����! ���� A
�! �*�� "�����?�!�� ��'������
$# !,<<-.X*K*K*-,JKJK</��.<��������<�+�������$ A
�! �*�� �� ���$)�,��#�$ A
��*�� �! �����! � A
WS-I - Axis 2.0
<<��� ����&&��3���6��
�/���&&��3�&&��3�E�����/���&&��3� �@
!)�&������������������������ �/ (���� �/ �@
�+� �(*�) *!�� &�
(���� �/ *�� ?��&�!�� *�� 5��+� *�� =��� ?&�(� � A
��(!&� ��E� �)�A
B
!)�&���������=)& ��������� �/ (���� �/ �@!)�&���������=)& ��������� �/ (���� �/ �@
�+� �(*���*!�� �(���� �/ *�� ?��&�!�� * �� ���� A
B
!)�&���������?�����?/��! ���� �@
�*!�� � �3"���� A
B
!)�&�����������(!&� �� �@
��(!&� ��E� �)�A� R
BA
WS-I - Axis 2.0
<<���3��� #���������
��*����������D�5&��3������ ��+���� %��&&��3 A
�+� �(*�) *!�� &�$�������4��3�� #������������������$ A
� ���/�E�KA
<<�� � �&&�+�)��� � #�����!���%�����&�!!&�� ����+�)����� ����
<< ����� #��%���������� #�����!����������/��.���&&�� �'+<<��&&��3%� #��+�)���
�(!&�(� ��&&��3� ������# �����+�)�� %<<(+���� ��)!� ��7>4
�#�&���V��(!&� � �@�#�&���V��(!&� � �@
"#���*�&��!�-KKK A
���/::A
�'�����/�I�-K �@
#��������/��=)& �$"�(���) $ A
B
B
WS-I - Axis 2.0
������ �# C!� �+�/ � 0%7 6 �>. O��������/�!OPP
��������&�� ���E������������&�� � A
�! �����! ��E�����! ���� A
�! �*�� "�����?�!�� ��'�������$# !,<<-.X*K*K*-,JKJK</��.<��������<�+�������$ A
,!����!��!�OM*�#*,��!�MP:
��*�� �! �����! � A
���3�������/�!O����!�.�68��OPP:���3�������/�!O����!�.�68��OPP:
WS-I - Axis 2.0
������ �# C!� �+�/ � 0%7 6 �>. O���-�*�!OPP
"#�����4�&������3��������+��!�� ��%� #���&+���''����������� # �)&�3�����������
0%��3 ���!��/ /�� (�/ (�!� !�� ������& !�� � ��! �� �3����� �����)��� #���������0�������� #�(�����#���� �����3�� #����������������)� �(��*�� �!�-���
� �!�.��#�)&����(��)�#���%���� �!�0������ ������#������ #��'�&&�����(��,
��������&�� ���E������������&�� � A
�! �����! ��E�����! ���� A
�! �*�� "�����?�!�� ��'������$# !,<<-.X*K*K*-,JKJK</��.<��������<�+�������$ A
,!����!��!�OM*�#*,��!�MP:
��*�� �! �����! � A
������-�*�!O����!�.�68��OPP:
WS-I - Axis 2.0
Building Web Services the REST Way
What is REST?
REST is a term coined by Roy Fielding in his Ph.D. dissertation [1] to describe an architecture style of networked systems. REST is an acronym standing for Representational State Transfer.
Here is Roy Fielding's explanation of the meaning of Representational State Here is Roy Fielding's explanation of the meaning of Representational State Transfer:
"Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use."
Rest
REST uses the following standards:
HTTPURLXML/HTML/GIF/JPEG/etc (Resource Representations)text/xml, text/html, image/gif, image/jpeg, etc (MIME Types)
Rest – A sample Illustration
Parts Depot Web Services
Parts Depot, Inc (fictitious company) has deployed some web services to enable its customers to:
get a list of partsget detailed information about a particular partsubmit a Purchase Order (PO)
Let's consider how each of these services are implemented in a RESTful fashion.
Rest
Get Parts List
The web service makes available a URL to a parts list resource. For example, a client would use this URL to get the parts list:
http://www.parts-depot.com/parts
Note that "how" the web service generates the parts list is completely transparent to the client.
All the client knows is that if he/she submits the above URL then a document containing the list of parts is returned. Since the implementation is transparent to clients, Parts Depot is free to modify the underlying implementation of this resource without impacting clients.
This is loose coupling.
Rest
Here's the document that the client receives:
<?xml version="1.0"?><p:Parts xmlns:p="http://www.parts-depot.com"
xmlns:xlink="http://www.w3.org/1999/xlink"><Part id="00345" xlink:href="http://www.parts-depot.com/parts/00345"/><Part id="00346" xlink:href="http://www.parts-depot.com/parts/00346"/><Part id="00347" xlink:href="http://www.parts-depot.com/parts/00347"/><Part id="00347" xlink:href="http://www.parts-depot.com/parts/00347"/><Part id="00348" xlink:href="http://www.parts-depot.com/parts/00348"/>
</p:Parts>
Assume that through content negotiation the service determined that the client wants the representation as XML (for machine-to-machine processing).
Note that the parts list has links to get detailed info about each part. This is a key feature of REST. The client transfers from one state to the next by examining and choosing from among the alternative URLs in the response document.
Rest
Get Detailed Part DataThe web service makes available a URL to each part resource. Example, here's how a client requests part 00345:http://www.parts-depot.com/parts/00345Here's the document that the client receives:<?xml version="1.0"?><p:Part xmlns:p="http://www.parts-depot.com"
xmlns:xlink="http://www.w3.org/1999/xlink"><Part-ID>00345</Part-ID><Name>Widget-A</Name><Specification xlink:href="http://www.parts-
depot.com/parts/00345/specification"/></p:Part>
Again observe how this data is linked to still more data - the specification for this part may be found by traversing the hyperlink. Each response document allows the client to drill down to get more detailed information.
Rest
Submit PO
The web service makes available a URL to submit a PO. The client creates a PO instance document which conforms to the PO schema that Parts Depot has designed (and publicized in a WSDL document). The client submits PO.xml as the payload of an HTTP POST.
The PO service responds to the HTTP POST with a URL to the submitted PO. Thus, the client can retrieve the PO any time thereafter (to update/edit it). The PO has become a piece of information which is shared between the client and the server. The shared information (PO) is given an address (URL) by the server and is exposed as a Web service.
Rest
Logical URLs versus Physical URLsA resource is a conceptual entity. A representation is a concrete manifestation of the resource. This URL:http://www.parts-depot.com/parts/00345is a logical URL, not a physical URL.
Thus, there doesn't need to be, for example, a static HTML page for each part. In fact, if there were a million parts then a million static HTML pages would not be a very attractive design.be a very attractive design.
[Implementation detail: Parts Depot could implement the service that gets detailed data about a particular part by employing a Java Servlet which parses the string after the host name, uses the part number to query the parts database, formulate the query results as XML, and then return the XML as the payload of the HTTP response.]
As a matter of style URLs should not reveal the implementation technique used. You need to be free to change your implementation without impacting clients or having misleading URLs.
Rest
REST Web Services CharacteristicsHere are the characteristics of REST:
Client-Server: a pull-based interaction style: consuming components pull representations.
Stateless: each request from client to server must contain all the information necessary to understand the request, and cannot take advantage of any stored necessary to understand the request, and cannot take advantage of any stored context on the server.
Cache: to improve network efficiency responses must be capable of being labeled as cacheable or non-cacheable.
Uniform interface: all resources are accessed with a generic interface (e.g., HTTP GET, POST, PUT, DELETE).
Named resources - the system is comprised of resources which are named using a URL.
Rest
Interconnected resource representations - the representations of the resources are interconnected using URLs, thereby enabling a client to progress from one state to another.
Layered components - intermediaries, such as proxy servers, cache servers, gateways, etc, can be inserted between clients and resources to support performance, security, etc.
Rest
Principles of REST Web Service Design
1. The key to creating Web Services in a REST network (i.e., the Web) is to identify all of the conceptual entities that you wish to expose as services. Above we saw some examples of resources: parts list, detailed part data, purchase order.
2. Create a URL to each resource. The resources should be nouns, not verbs. For example, do not use this:
http://www.parts-depot.com/parts/getPart?id=00345Note the verb, getPart. Instead, use a noun:http://www.parts-depot.com/parts/00345
Rest
3. Categorize your resources according to whether clients can just receive a representation of the resource, or whether clients can modify (add to) the resource. For the former, make those resources accessible using an HTTP GET. For the later, make those resources accessible using HTTP POST, PUT, and/or DELETE.
4. All resources accessible via HTTP GET should be side-effect free. That is, the resource should just return a representation of the resource. Invoking the resource should not result in modifying the resource.
5. No man/woman is an island. Likewise, no representation should be an island. In other words, put hyperlinks within resource representations to enable clients to drill down for more information, and/or to obtain related information.
Rest
6. Design to reveal data gradually. Don't reveal everything in a single response document. Provide hyperlinks to obtain more details.
7. Specify the format of response data using a schema (DTD, W3C Schema, RelaxNG, or Schematron). For those services that require a POST or PUT to it, also provide a schema to specify the format of the response.
8. Describe how your services are to be invoked using either a WSDL document, or simply an HTML document.
Rest – POX over HTTP
import javax.xml.bind.annotation.XmlType;
@XmlTypepublic class Product {private String id;private String name;private double price;public Product() { }//Getters and Setters omitted...
Rest
import java.util.ArrayList;import java.util.List;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElementpublic class ProductCatalog {private List<Product> products;public ProductCatalog() {products = new ArrayList<Product>();Product p = new Product();Product p = new Product();p.setId("123");p.setName("Shirt");p.setPrice(159.95D);Product p2 = new Product();p2.setId("456");p2.setName("Monkey");p2.setPrice(2500D);products.add(p);products.add(p2);}
Rest
public List<Product> getProducts() {return products;}public void setProducts(List<Product> products) {this.products = products;}@Overridepublic String toString() {return products.toString();}}
Rest
public class SimpleRestServlet extends javax.servlet.http.HttpServletimplements javax.servlet.Servlet {public SimpleRestServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("DoGet invoked on RESTful service.");ProductCatalog catalog = new ProductCatalog();Source xmlSource = asXml(catalog);ServletOutputStream out = response.getOutputStream();response.setContentType("text/xml");StreamResult st = new StreamResult(out);try {
Rest
Transformer t =TransformerFactory.newInstance().newTransformer();t.transform(xmlSource, st);} catch (Exception e) {throw new ServletException(e);}System.out.println("All done.");}
private static Source asXml(ProductCatalog pc) throws ServletException {System.out.println("Marshalling...");Source source = null;Document doc = null;try {JAXBContext ctx = JAXBContext.newInstance(ProductCatalog.class);
Rest
Marshaller m = ctx.createMarshaller();DocumentBuilder parser =DocumentBuilderFactory.newInstance().newDocumentBuilder();doc = parser.newDocument();System.out.println("Products=" + pc);m.marshal(pc, doc);System.out.println("Marshalled catalog to XML.");} catch (JAXBException je) {throw new ServletException(je);} catch (ParserConfigurationException pce) {throw new ServletException(pce);}source = new DOMSource(doc);System.out.println("Returning XML source.");return source;}
Rest
REST
Rest
REST
Rest
REST
Rest
Developing REST Webservices in MyEclipse – Using JAX-RS1. Introduction
We will outline the process of developing a REST web service, deploying it to the internal MyEclipse Tomcat server and testing it with the REST Web Services Explorer.
The REST features in MyEclipse are based on Jersey, which is the reference implementation for JAX-RS, the Java API for RESTful Web Services. We will be creating a simple web service which we will use to maintain a list of customers.
MyEclipse also supports developing SOAP web services using JAX-WS; for folks needing to develop and deploy WebSphere JAX-RPC or WebSphere JAX-WS web services, please take a look at MyEclipse Blue Edition.
Rest
System Requirements
This tutorial was created with MyEclipse 7.0. If you are using another version of MyEclipse (possibly newer), most of these screens and instructions should still be very similar
Creating the REST Web Service Project
Invoke the wizard using File > New > Other > MyEclipse > Java Enterprise Projects > Web Service Project.Name the project restdemo and select REST (JAX-RS) from the list of frameworks.
Click Next to move to page 2 of the wizard. On this page you can specify the path at which the services will be available, the name of the corresponding JAX-RS servlet and libraries which you wish to add to your project. For this project the defaults are fine, so click Finish to create the project.
Rest
Instead of creating a new project, you may also add REST capabilities to any existing Java EE 5 Web project. From the project's context menu, select MyEclipse > Add REST Capabilities...
Creating the REST Web Service
Creating the Customer entityCreating the Customer entity
To start, create a simple Customer class with id, name and address fields; this class represents the Customer entity we will be managing with our web service.
Use the File > New > Class wizard, put Customer in theName field, com.myeclipseide.ws in the Package field and Finish the wizard. Replace the contents of the generated class with the following code:
Rest
we will be using XML as the serialization format, i.e. we will send and receive Customer entities from the web service using XML.
The @XMLRootElement annotation on the Customer class is a JAXB annotation which allows JAXB to convert this entity from Java to XML and back. It is possible to annotate the fields and methods within the class to customize the serialization, but for our tutorial the JAXB defaults are fine.
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElementpublic class Customer {
private int id;private String name;private String address; //write setters and getters
…} – Rest refer the Study Material
Rest
Mapping HTTPMethods to Operations PerformedHTTP Method Operations Performed
GET Get a resource
POST Create a resource and other operations, as it has no defined semantics
PUT Create or update a resource
DELETE Delete a resource
Rest
HowDoes Jersey Fit In?
Jersey is Sun's production quality reference implementation for JSR 311: JAX-RS:
The Java API for RESTful Web Services. Jersey implements support for the annotations defined in JSR-311, making it easy for developers to build RESTful web services with Java and the Java JVM.
Jersey also adds additional features not specified by the JSR.
The latest version of the JAX—RS API's can be viewed athttps://jsr311.dev.java.net/nonav/javadoc/index.html
Rest
Working with Jersey
To successfully run the JAX-RS reference implementation, you need a lot of JARs. It’sprobably easiest to put them on your server’s classpath, but you can certainly add themto your WAR’s WEB-INF/lib directory if you like. As of the current release, they to your WAR’s WEB-INF/lib directory if you like. As of the current release, they are:
• activation.jar• asm-3.1.jar• grizzly-servlet-webserver-1.7.3.2.jar• http.jar• jaxb-api.jar• jaxb-impl.jar• jaxb-xjc.jar• jaxws-api.jar• jdom-1.0.jar• jersey.jar• jettison-1.0-RC1.jar• jsr173_api.jar• jsr250-api.jar• jsr311-api.jar• rome-0.9.jar• wadl2java.jar
Rest
Modifying the web.xml fileYou need to modify your web.xml file to use the Jersey adapter servlet, much as youwould when using JavaServer Faces:<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet><servlet-name>ServletAdaptor</servlet-name><servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>ServletAdaptor</servlet-name><url-pattern>/resources/*</url-pattern></servlet-mapping>
Rest
Creating Hello World with Jerseyimport javax.ws.rs.Path;import javax.ws.rs.GET;import javax.ws.rs.ProduceMime;/*** Simplest REST web service.*/@Path("/helloRest")public class HelloRest {public class HelloRest {/**•Retrieves representation of an instance of•HelloRest.java* @return a string with HTML text.*/@GET@ProduceMime("text/html")public String sayHello() {return "<html><body><h1>Hello from REST!</body></h1></html>";}}
Rest
Here you create a POJO that is annotated withjavax.ws.rs.Path. Its value attribute indicates the path where this resource will be made available. The resource path follows the adapter servlet path, so you will be able to reach an instance of this class at
<server>:<port>/<context>/<jersey-servletmapping>/<path-value>
By using the JAX-RS@GET annotation, you indicate that the sayHello method is the one you want to respond to HTTP GET requests.
Then use the @ProduceMime annotation to indicate the MIMEtype you want to return on response. Here you use text/html, but you can use any MIME type that makes sense for your application, including text/xml and image/gif.
Rest
Creating a Single Path for Variable Resources of the Same Type
@Path("/products/{id}")public class ProductResource {@Contextprivate UriInfo context;/** Creates a new instance of ProductResource */public ProductResource() { }public ProductResource() { }@GET@ProduceMime("text/plain")public String getProduct(@PathParam("id") int productId) {switch (productId) {case 1: return "A Shiny New Bike";case 2: return "Big Wheel";case 3: return "Taser: Toddler Edition";default: return "No such product";}}}
Rest
Restricting the Structure of Values in a Path Template
@Path("products/{id:[a-zA-Z][a-zA-Z_0-9]}”).
@Path("/products/{id: \\d{3}}") - the input should be exactly three digits.
URL http://localhost:8080/restexamples/resources/products/555,
Rest
Accessing Query Parameters
Use the @QueryParam annotation on your method parameter. Optionally, include the @DefaultValue in case the query parameter you’re expecting is not passed.@GET@Produces("text/xml")public String getProducts(public String getProducts(@PathParam("id") int productId,@QueryParam("results")@DefaultValue("5") int numResults) {StringBuilder result = new StringBuilder("<products>");//return the number of results requestedfor (int i = 0; i < numResults; i++) {result.append("<p>Product " + i + "</p>");}result.append("</products>");return result.toString();}
Rest
Marshaling a Custom Type to XML in a Response
Problem You want your service to provide an XML view of a custom Java type you’ve defined.
Hint: @XmlRootElement, and create a JAX-RS service that indicates that it produces XML with the @Produces("application/xml") annotation.shows a basic Java type that your service can automatically marshal toXML using JAXB.XML using JAXB.
Employee.java with JAXB annotations to assist in automatic marshalingpackage com.soacookbook.rest.xml;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name="employee")public class Employee {@XmlElement(name="id")int id;@XmlElement(name="name") String name; }
Rest
public class EmployeeService {private static Map<Integer, Employee> emps = populateDatabase();public EmployeeService() { }@GET@Path("{id}")@Produces("application/xml")public Employee getEmployee(@PathParam("id") int empId) {return emps.get(empId);return emps.get(empId);}private static Map<Integer, Employee> populateDatabase(){Map<Integer, Employee> emps = new HashMap<Integer, Employee>();Employee e1 = new Employee(); e1.id = 1; e1.name = "Bill Gates";Employee e2 = new Employee();e2.id = 2;e2.name = "Larry Ellison";Employee e3 = new Employee();e3.id = 3;e3.name = "Steve Jobs";emps.put(1, e1);emps.put(2, e2);emps.put(3, e3);return emps;}}
Rest
Offering Different Representations of the Same Resource
ProblemYou want your service to provide alternate views of the same resource.
DiscussionA standard browser will pass the MIME types it can handle by passing the A standard browser will pass the MIME types it can handle by passing the HTTP Accept header in its request. A typical request header sent from Firefox looks like this:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
The client is telling the server that it would prefer to get HTML or XHTML, and its next preference is to accept XML. The preferences are indicated not only by the order in which they appear, but with the q parameter, used to specify a relative “quality factor” or how strong the preference is for the given media type on a scale of 0 to 1.
Rest
import java.io.File;import javax.activation.MimetypesFileTypeMap;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.WebApplicationException;import javax.ws.rs.core.Response;/*** If we put a @Produces annotation on the class level,* that will be the value matched despite browser preferences* in the Accept header.*/@Path("/duke")@Produces("text/plain")public class DifferentRepresentations {private static final String IMG_PATH ="C:\\programs/eclipse/workspace/restexamples/WebContent/duke.gif";
Contd…
Rest
@GET@Produces("text/html")public String doGetAsHtml() {return "<html><h1>Html Duke</h1></html>";}//notice no override, as this method returns the default@GETpublic String doGetAsPlainText() {return "Plain Duke";return "Plain Duke";}@GET@Produces("image/*")public Response doGetAsImage() {File image = new File(IMG_PATH);if (!image.exists()) {throw new WebApplicationException(404);}String type = new MimetypesFileTypeMap().getContentType(image);return Response.ok(image, type).build();} contd…
Rest
@GET@Produces("text/xml")public String doGetAsXml() {return "<?xml version='1.0' encoding='utf-8'?>" +"<mascot>Xml Duke</mascot>";}}
//end
Rest
Creating a Resource
ProblemYou want to provide a way for users to create a RESTful resource in JAX-RS.
Solution
Use the @POST annotation on a resource method to indicate that it accepts HTTP POST data, and add the entity in the method with the incoming data.
Rest@Path("user/{id}")@Singletonpublic class UserService {private Map<Integer, User> userDatabase;//create fake user database to keep example simplepublic UserService() {userDatabase = new HashMap<Integer, User>();}@POST@Consumes("application/xml")@Consumes("application/xml")public Response postUser(User user) {System.out.println("Post User.");//save to database here...userDatabase.put(user.getId(), user);System.out.println("Posted user: " + user);URI createdUri = UriBuilder.fromPath("user/" +user.getId()).build(user);System.out.println("post: createdUri: " + createdUri);//return a 201 'created' statusreturn Response.created(createdUri).build();}
WS-I - Axis 2.0
G����
�����������
7������( 3�
"����
WS-I - Axis 2.0
Learning Objectives
� Understand the coming Web Services revolution
� Fundamentals of Web Services
Web Services OverviewInternet Business Processes Span Companies
Web Services Overview Technology Fabric Must Span Companies Too
Web Services Overview Possible Solutions
� Distributed computing� Web sites (portals)� Web Services
Web Services Overview Distributed Computing
� Client/server model� Doesn‘t scale� Not secure
� Distributed object model� Distributed object model� Components: packaging and interoperability� Remoting: remote method invocation� COM, CORBA, Java RMI and EJB
� Not Internet-friendly� Interoperability issues: poor/non-existent standards� Tightly coupled: still doesn‘t scale
Web Services Overview Distributed Computing
� 3-tier Application Architecture� Great way to build scalable Web applications
� But such applications are silos� Integration is an afterthought� Integration is an afterthought� They can be integrated behind the firewall
� Even that can be a problem
� They do not provide a way to integrate across the firewall (i.e. over the Internet)
Calendar
Other Svcs
Ads
Web Services Overview Portals
News
Finance
Weather
� No standard way to expose functionality� Integration is expensive and error-prone� Hard to outsource � Not designed to be used outside original
Web Services OverviewPortal Limitations
� Not designed to be used outside original scope
� The problem? � HTML is designed for presentation to people� Can’t repurpose it in a general, reliable way
Web Services OverviewWhat Is a Web Service?� The solution? Web Services!� A Web Service exposes functionality to a consumer
� Over the Internet or intranet� A programmable URL� Functions you can call over the Internet� Functions you can call over the Internet
� Based on Web standards� HTTP, XML, SOAP, WSDL, UDDI, with more to come
� Can be implemented in any language on any platform� Black boxes
� Component-like, reusable
Web Services OverviewWhat Is a Web Service?
� A Web Service combines the best features of distributed computing and portals and eliminates the worst� Provides a mechanism for invoking methods � Provides a mechanism for invoking methods
remotely� Uses Web standards (e.g. HTTP, XML) to do so
Web Services OverviewWhat Is a Web Service?
� Web Services allow you to interconnect:� Different companies� Many/any devices� Applications� Different clients
� Not just browsers
� Distribution and integration of application logic
� Enable the programmable Web� Not just the purely interactive Web
� Web Services are loosely coupled
� New paradigm for Internet development� Deliver applications as services� Richer, customer-driven experience� Continuous delivery of value/bits
Web Services OverviewWhat is a Web Service?
� Continuous delivery of value/bits� Third-generation Internet
Web Services Overview Evolution of the Web
HTML, XML
Generation 1Static HTML
HTML
Generation 2Web Applications
HTMLHTML, XML
HTML, XML
Generation 3Web Services
Web Services
� The Web today� How Web services work
Web Services The Web Today
Purchase coursewarePurchase courseware
PurchasedPurchased
Designed for people to browseDesigned for people to browse
Web Services The Web Today
Purchase CoursewarePurchase Courseware ??
Server to server is a problemServer to server is a problem
Web ServicesWhat Are Web Services?
� Allow applications to communicate across the internet
� Platform independent� Protocol independent� Synchronous/asynchronous� Statefull/stateless� BizTalk®
� ASP.NET
Web Services
Class CoursewareWebMethod
GetPricePurchase
Class CoursewareWebMethod
GetPricePurchase
Web Services
TestingTestingCoursewareCourseware
Test HTML PageTest HTML Page
Web Services
Courseware?SDLCourseware?SDL
Service Definition(XML)Service Definition(XML)
WebServiceUtilWebServiceUtil
ProxyProxyProxyProxy
Web Services
Register for CourseRegister for Course Purchase CoursewarePurchase Courseware
ProxyProxyProxyProxy
Other Web Services
Partner Web Service
Partner Web Service
Web Services OverviewApplication Model
Web Service
Data Access and Storage Tier
Application Business Logic Tier
YourCompany.com
Internet + XML
Other Applications
End Users
Web Services OverviewSample Web Services
� E-commerce: order books, office supplies, other products
� Track packages: UPS, FedEx� Weather� Weather� Maps� Telephone redirection, customizable rules
and messages
Underlying TechnologiesXML Is the Glue
Program the Web
Browse the Web
Connect the Web
Connectivity Presentation Connecting Applications
Underlying TechnologiesWeb Services Stack
Description: Formal Service Descriptions: WSDL
Directory: Publish & Find Services: UDDI
Inspection: Find Services on server: DISCO
Ubiquitous Communications: Internet
Universal Data Format: XML
Wire Format: Service Interactions: SOAP
Description: Formal Service Descriptions: WSDL
Simple, Open, Broad Industry Support
Underlying TechnologiesWeb Services Stack
� Discovery� Directory allows potential clients to locate relevant
Web Services� UDDI
� Inspection allows you to locate documents about Web Services located on at a given URL� DISCO
� A Description language defines the format of methods provided by a Web Service� WSDL
Underlying TechnologiesWeb Services Stack
Directoryhttp://www.uddi.org
UDDI
DISCOInspectionhttp://www.ibuyspy.com/ibuyspy.disco
Locate a Service
Link to Discovery Document (XML)
Web
Ser
vice
Clie
nt
UD
DI or
otherdirectory service
WSDL
SOAP
http://www.ibuyspy.com/ibuyspy.disco
Descriptionhttp://www.ibuyspy.com/ibuyspycs/InstantOrder.asmx?wsdl
Wire Format
Request Discovery Document
Return Discovery Document (XML)
Return Service Description (XML)
Return Service Response (XML)
Request Service
Request Service Description
Web
Ser
vice
Clie
ntW
eb Service
Underlying TechnologiesWeb Service Wire Format
� The Web Service Wire Format specifies how specific messages are exchanged� HTTP-GET� HTTP-POST
SOAP� SOAP� HTTP-GET and HTTP-POST use a minimal
HTTP interface to invoke Web Services� Limited support for data types
� SOAP provides a robust HTTP/XML interface� Extensive support for data types
� XML is designed to represent and transfer structured data� In HTML: ��������������� ��
XML OverviewXML Basics
� In XML: ���������������������� ����������
� XML does not display or transform data� XML separates data from formatting and
transforming� HTML and XML are both derived from SGML
� In different ways
� XML is composed of tags and attributes� Tags can be nested
� Representing entities, entity properties, and entity hierarchy<ROOT>
XML OverviewXML Syntax
hierarchy<ROOT><Orders OrderID="10643" CustomerID="ALFKI" EmployeeID="6" OrderDate="1997-08-25T00:00:00" RequiredDate="1997-09-22T00:00:00" ShippedDate="1997-09-02T00:00:00" />
</ROOT>
� XML schemas describe the structure of an XML document� XML schemas describe the tag and attribute
specifications
XML OverviewXML Schemas
� Simple and compound data types
� XML schemas also describe constraints on the contained text
� XML schemas and the DTD are mutually exclusive
WS-I - Axis 2.0
WS-I - Axis 2.0
WS-I - Axis 2.0