si.deis.unical.itsi.deis.unical.it/~talia/aa0607/dis/es6-2p.pdf · 23 2 b ˘ 4&5 ˜ ˘ . 2 ˘...
TRANSCRIPT
1
����������������
2
�����������
� ������������������������������ ������������ ������������� ����������������������� ������������������ �������������������������������������������������������������������������������� �� �������������������������� ��������
� ������������� � �������� �� ���������������������������� �� ����������������������������� �� ��
� ������������������������������ ���������!
3
"�#$�%�#&�%��'()%����
� "�#$�%���������������*�������� ������������������� �������%�����������+ ������������,�#$������� �����
� -"�&%����& ��� ���%�����������+ ��.���#��������������"��� ��#�"
� �'()�#�������%�������������������'() ���& ��� ���%���/�������������� �����������%������ ������� �� �
� 0��%�������0���#������& ���������������#&� �������������0���#������& ��������������������� �0#&�
� ����� �������������� � ����������������1�� ������������
4
���������������.�������� ��������
� ����� ���������������������������� ������������ �� �����������������#�"2�� (�����+� ����������������������������������
��������������������
� ����%����� ���� �� ���������������������������� ����������������3 �������������������
5
"����� +3 ����
�����3 ����������������������������������� ��������������������������������
�� �������2� �����3 �� ���� ��4&5� ������� �� ��������������� ��������� ������� �� ���������������������� ��������������� ���������� ������������
��������������� ��������� ����%�������� �����������������������
6
�����3 �� ���� ��4&5
� )������������������������������������� ���������%������������3 �� ���� ��4&5%�1�������� �����
� �������������3 ������������ ����������������64&5�3 �������������������� ��������
� ������� ������������7 ������,������82��������������/����������������������� �������������)���+����������3 �������� �������� ���9))��������� ����
� ������������� ����������������3 �� ���������������������������� �����%��������������������������������� � ����������� ���������������������"�#$�����'() #�������������������
7
���������������� ����������
� :���� �����������3 ����� �����2
� :����������������%��������%��������������������� ���� ��������������������������+ ����������1�� �����������
� :��������������� �������������� ��� �����3 1����������� ����������������������������������������� �����%��� ������������;�����<%����3 ����������������������� ����������� �= ����������� ����� ����������������
� :��������������8���������������� �������������������������� ����������������
8
����2� ������������� �����
� ����������������������� �������������
� ������������������ �����
� �������������������������
������������
� ������������������� ���8
� ����������������������
�����������������������
������
����
������
�� ���
�������
��� ����
�������
����
������
�� ��
�������
���� �������
9
"������������������ :�����������������������������2
� �����#�1�� �� ����������������������������%���������������
������%������ �����#� ��� �
� ����������������������������������������������
� )��������� ���������� ������������������4&5
Vendor A Vendor B
Clientapplication Component
XML/HTTP
Soaplistener
Soapproxy
10
9����
������������
�����
����
�
�������������
�������������
�������������
�������������
������
11
����
�������
�����
���
�������
�������
�������
��������
�������
�����
���
�������
�������
��������
�������
�����
���
�������
�������
�������
12
�����(�������
� �������������������������������������������������������������������������$��82������� �������������������������� ����������4&5��
� 5�� ����������������� ��������������������=%���� ����� ������>� ������>������������������%������������%������� ��������������� �����������������7 �������%�����������������������������
� 5>������������������� �������� ��������������������� ��������4&5������� %�������� �����������������������������������������������������������%�����������������������������7 ����� �������������������������������������������������������������������� ��
13
�����(�������2������ �������
���� �����%�3 �� ������������������������������� ��4&5� �������������������3 �������� �������������������� �����%������������4&52
<X1>12</X1>
��������?@���������� ����������%���������������������������������������� ������������������������"����A ������������������2
<X1 xsd:type="String">12</X1>
14
�������������2����������� ��
� ����������82��������������������� �����������������8%�������/�� ���� ������� ��������������������������5��� �������������������������������8�������������������������������������8)8�� ���� ������������������������������������+ ��8����������������3��������������������� ������
� 5���������2����� ��������������������3�����������������������������������������������������������������������������������3 ������������������������
15
����� ��9))�
� �����3 ������ ���������������� �������� ���9))�����������������;����� ����<��)������%� ���� ���������������������������������� ������ �������������������������������������������%����� �������+ �&)��
� ��������*���������������������������������4�� ��������1�� �������������� �������1�� ������������
16
����� ��9))�
� ���9))��� � ����������������������������������������������� ��������� ��2� ���)%��������� ����������������� � ������� ��%�
�����������������������������;��8����< � B()%��������� ����������������� � ������� ������
������������������������������������������
GET /index.html?campo=valore HTTP/1.0
� ������� ���������� ��� ������������= ���)��-��������������������%����3 �����8����3 �� ������������� ���������������������
17
���������
18
��������� 2�����������
� :�����������������������������+���� ����3 1������������������������������������������ �������������������������������2
� ���� ����������������������������������� � �����
� ������������������������������ �������
� 5+�������������������������/�� ������ ������������ ��������2
� ���+������������� �� ���������
� )������������+�������
� C� ����������������
19
��������� 2������������
� � ������������� �������� ���������������
��������������������������������
� !����������������������������������"��� ���
������������� �� ���������# �����������������������
� ����������������������������
� � ������������� ��$������% �����������������������������
�������
& ����'����(������������������������� ����������'
20
��������� 2��������������=
� 5�� ������������������ ����������3 �������������� ���������� ����������� ��������������������������������� ������������ ���������
� 5�����������3 �+ �������������=2
� �� ��������� ������ ������� ����������
� '��� ����������������������������� ������D����������������
� �� ����� ��������������������������������1��� �� ������������
� ��������������� ����� ����� ����� ���� ���������������������������� �
21
��������� 2�������� ������ :�� ���� ����� 3 ��+������������� �� �� �� �� �� �������
����������� � ��� ���� ��������� ��� ���� ������ ����� ������������ ������� �����������������������EF�������������������
� ����������� ��� ��� ���������� ��������������� �����
G �������������=2���������/�� �������������������������������� �%������������������������������������������� ��������� ������3 � ������
G ����� ��������2�������������������������� ���������������������������+���������������
G ���� ������=2���������/�� ���� ������������������ �������������+��������
22
��������� ��4&5
� �� ��������� ������ ���� ��4&52� ������������������3 �������������������������
4&5
� ����������������� ������������ ������ ������ ���������4&5����-5
� 5�� ������������� ������������������������������� ������:--� � ����������������4&5
23
��������� 2� �����������������
B��� �������������������������� ����������������������4&5
� ���� ����������.�������� �������� 2��� ������������������� ���� ��4&5����������� ������������ �����������������3 �������������������������+������������+������
� ��-5 �����������-����������5������� 2��� �����+������������ ���������������������6 ���� ������������ ����������������������������������
� :--��:��� ���-� ���8%�-� ���������������������� 2��� ������� �������������������������������� ����������+���� �������
24
Internet
GET/POST Request
HTML Response
Server (s)
Internet
SOAP Request
SOAP Response
Server (s)Client
���������������
�����
������������� ������������������������
������������
����������������������������������������������� ����������� �����
25
"��������������������������
26
"�������������������������� � ������������� ��������������������-5 ����������� ���:--�2� ����������������������������� ��� ������������ ��� ����������������������H8� ������������������� ����������������� �� ��� 5�������������������������������������:--�� ��������+� ��
��������� I
Appl. Client
UDDI Registry
Service Consumer Service Provider
Service Registry
SOAP (HTTP + XML)
Scopre WSDL Registra WSDL
Proxy
Service Contract
Appl. Server
27
��������� -���������5�������
� ���������J"��������� �����������4&5
����+������������������������
G "������������������������������� �����
� :���������-5�3 � ���������������������� ���3 ������������������������������������� �����
28
��-52� ��������������������
� -� ���2
� "� ����������/����
� -���� ����
� "�����������
� -�����������-5��� ����� ���� ���� ��������� ����� ���:--�
WSDL1.1 DocumentStructure
�� !
������
�"�����
#$��� %��&
#����"����&
#������%�&
#��������&
29
"����������������������������-5
:��������������-5�3 �� ��������� ���������������K����������4&52
� )8�� 2����������������� ������������ ����
� &� ��� 2�������������������� ���������������������������������������� ��5��������������� ����������������� �����
� ���)8��2��������������������������������� ���������������������������3 �����������+����������
� $������ 2����� ��������������������������������������������% ��������������� ������ ���%�����% ���%��� �%����
� ����� 2������������� ������ �������������������������8�� ��"�������������������������������������
30
��������� 2�������������
� ( � �������� ����������������� ��� ����������������� %����1�� ��� ���� ����������������)����������������4��
� )�����3 ������������������7 ���� ���������������������������������������
� ��������4���� L �������������������� ��������������� ��������������������� � M��� ������� ��������������� ��������������������
� ����2DD.�*�������������
31
)�����2��� �������������������8-�����+�� �������������� �������������������8����)��������������� �������������
32
��������������-�����8
� ���2�������������� ���������+�������+�� ������)������ ������2������� ������������������ ��� ����,������8� ������ ���������
�����)�����������������������,��������������� ��������� �����)������ ����2�������������������������������������������)����������������,
������������ ��� 2������������������������������������������� ��2������� ������������������ ��� ����,������8� ������ ��������� ����
��)������ ����2������� ������������������ ��� ����,������8� ���������� �����
������������,������������������ ������ ������������)������ ������ 2�3 �������������������������)��������������������� �����
������������,��������������������/������������������1���3���������������������8��
� ��*2�������������������������� ���������������������������������������������0��
33
)�����2���������+�� �����������3 ���������������������������������)�����3 ����������%���������������������� ��������������� ��������� � ���� ����������������������� ���������������2DD������� �2EFEF�������= ��� ���������������
34
������������������������������� :������������������3 ������������������� � ��������������0��%�9)&5%�
����� %����������������������%����� � ��� ������������������ � ������� ��������������� ������%�� �������� ���
�����������������������������������������������2�MyWebApplication/
WEB-INFclasseslib
� �������������������������� ������������������������������� ��������� ���� � ���MyWebApplication
� 5��� � ������������ ���������������������������������������WEB-INF%����+�������������1����� ������������������������ � �������2�������� ����������������������+����������
� 5����������WEB-INF ���������������������web.xml%����� �������+���������������� ����+������������%�������������classes%����������= �������.class ����+������������%�����+�����������������lib%����������= �������������������� ���������� �������.jar
� 5+���������/��������� �������������������������������+����������������%�������������%���/�� ��� �������������������� �����������%����� ��������������images ������������������������������
� �������������������MyWebApplication ��/�� ����� ������������+���������������������webapps ���)�����%������������������������8����������
35
�H� 2��� ����������C������������������������������������H� ������������� ���:#5��5+���������������= � ����������3 ��� �������
36
C����������C���������������������������������������������������������������� ������*C����������� �������������������������H� ��C�= �� ���������������� ������ �� 1������ �������%� ������ 1����� ���� ������� � ������ �����������������������
37
C���������-5"������ ������� �����������-5%���������������������H� %���������������������������������������������������-5����������3 ��� �����������3������������� ��������= � � �����
38
5� ������� ����������������������� ������ ���������������������������� ���� �������������������� ������*�5� �����+��������������H�
39
:�������� �����
//File Esempio1.java
/* Classe che implementa il servizio. */public class Esempio1{
/* Metodo che implementa il servizio.* Questo servizio restituisce una stringa di saluto.**/public String saluto(){ return "Ciao Mondo"; }
}
(������������ ��������� ��������� �������������������������� ��.������������������� ����������������������3 ��/����� ���� ���������� ��� �����%������������� ��3 ������������������ �����
40
������������������ �����
� ������������
� ���������������������������������������classes
� ������������������)!**������������+����
������
� �������������������AdminClient
41
����������--'��� ����� ��--� ����� �� ����� ��� �������� ��� ��� �������������� ���� ������� ����� ��� ������ �� ����� ����� ��� ��� N ����O ��� ����� ������ ���� �� ����� ���������%� ���� �� ����� ���������2� ����� ���� �����%������������ ��� �� �� ��������� ��������������������� �� ����� ���� ����������������--�3 ��� �������
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="Esempio1" provider="java:RPC"><parameter name="className" value="Esempio1"/><parameter name="allowedMethods" value="saluto"/><parameter name="scope" value="Request"/>
</service></deployment>
42
�����"�����-�� �������3 �� ����� ��� ���� ������ ���������������� ��� ��������� ������� ���������-�������� ���� �� 3 � ����� ���� ��� ����������� � ����%���)9���"5�����)9%� ����� �������������������
43
'������ �����������������-5������� ���� �����
44
������������������ �����2��������@�� �����0��
� ������������������������� ������������8������������������������������
� ������������������������������������� ��� �����;�.��< ���������������� ��� �����;�.� <
� ������������%��� P ��������%����������������������������8�����H�
� ��� ������ �= ���������� ������������� �� �������������������������� ���:#5%����� �����2�����2DD������� �2EFEFD�H� D( �����K�.�
� ����������-5���������� ���� �= �������� ���������������������;!� ��< ��� �����������:#5������������ ���+���� �������*������������������������ ����
45
������0��
� "���� ��3 ���������������/����� ��������3 ��� ����������� ������
� 5�� ������������������������������������1��������� ����������������������������������������� ������������������������������������������ ������������.� "�� �
� ��������������� ���������������������������������--%������ �����0�������� � �������H� ������*������ ����� ��������������������� ��������� ������+� � �����
46
������0��
(�������� ��������= � ��%���������������� ������������8���
47
5����������2����������������
import java.net.*;import java.rmi.*;import javax.xml.namespace.*;import javax.xml.rpc.*;
import org.apache.axis.client.Call;import org.apache.axis.client.Service;
public class ClientEsempio1{...
��� ������� �� �������� ������������� �������� � �� ����+����������� "��� ����������� �������%��������� �����+� ���������"������������3 ���� �������� ���%������������������������-5%��+:#5����� �����%���� �������%�������������������� ����� �����
48
5����������2���������������
public static void main(String[] args){String messaggio = "";try{
Call call = (Call)new Service().createCall();call.setTargetEndpointAddress(
new URL("http://localhost:8080/axis/services/"));
call.setOperationName(new QName("Esempio1", "saluto"));Object rispostaWS = call.invoke(new Object[]{});messaggio = "il Web service ha risposto:" + (String)rispostaWS;
}catch(MalformedURLException ex){messaggio = "errore: l'url non èesatta";}catch(ServiceException ex){messaggio = "errore: la creazione della chiamata è fallita";}catch(RemoteException ex){messaggio = "errore: l'invocazione del WS èfallita";}finally{
System.out.println(messaggio);}}
}
49
-8����� ���������
� "��� ������� �������������� ������ ��������� ���������������
� 5����� ��"��� ������������������������������ �����������������������
<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Body><ns1:Echo2 xmlns:ns1="http://localhost:8080/axis/Echo.jws"><arg0 xsi:type="xsd:string">Hello!</arg0></ns1:echoService></SOAP-ENV:Body></SOAP-ENV:Envelope>
50
"������������ �����
51
5����������2�B��������������-5@0��
� )��� .���������� ���������������������������� ������ ������������������������������
� '���3 ��7 ���� �����������������������������������-5� ������� ������������������������������� �����������
� 5+�������������%������������%���� �� ����������� �����������
� 5���������������;������< ���� ����������������������������������������� ��;Q�����5�����<
� ������� ������������ ���+:#5������������-5������� ������� �����
52
5����������2�B��������������-5@0��
53
��������������������"�����
54
B����� ��C�������������� ������������ ������������������������ ����������������� �������������� �����������-5������� ��������� �����
55
B����� ��
� :#5�������-52http://api.google.com/GoogleSearch.wsdl
� "������2java org.apache.axis.wsdl.WSDL2Java
http://api.google.com/GoogleSearch.wsdl� #� ������2
� -�����8"�����8�.��� B����������$�����������.��� B��������������.��� B����������#� ����.��� B����������������.��� B���������������5������.��� #� ���(�������.��
56
B�������������/*** GoogleSearchPort.java** This file was auto-generated from WSDL* by the Apache Axis 1.2.1 Jun 14, 2005 (09:15:57 EDT) WSDL2Java emitter.*/
package GoogleSearch;
public interface GoogleSearchPort extends java.rmi.Remote {
public byte[] doGetCachedPage(java.lang.String key,java.lang.String url) throws java.rmi.RemoteException;
public java.lang.String doSpellingSuggestion(java.lang.String key, java.lang.String phrase) throws java.rmi.RemoteException;
public GoogleSearch.GoogleSearchResult doGoogleSearch(java.lang.Stringkey, java.lang.String q, int start, int maxResults, boolean filter, java.lang.String restrict, boolean safeSearch, java.lang.String lr, java.lang.String ie, java.lang.String oe) throws
java.rmi.RemoteException;}
57
B����� ��-��������������� ����������������� �� ���%��� ������� ���������� ��������������������������� ������� ��������+� �������������������������������������������� �������5+� �����1�� ��� �����%������1�������� ����������������-5�� ������%��������� ��� ��� �������� ��� ���� B����� �� ���� ���� ��� ���� ������ ��� �� ��������� ����� �������� ��� ����� ������ �������%� ������%� ��� ����� ��������+������������� ��������?FFF���������������
58
:�������� �����2����)� ����
� :#5����������� ��� ����2DD��� ���� ��� ��������D(��������� �� �H!� ��
� M��� ������ ������������ ������,����
59
"��������� �����