Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1����������������������������
��������������������� ������ Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1
Webservices
Grundlagen, Beispiel, Tomcat 5, Apache Axis
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 2����������������������������
��������������������� ������
Was ist ein WebService
� Eine oder mehrer Methoden die über das Netzwerk aufgerufen werden können.
� Standardisierter Remote Procedure Call (RPC)� Parameter und Rückgabewerte werden serialisiert.� Nachrichtenbasiert� XML� Sprachunabhängig
• Java, .Net, Perl, ...
� Vorteile �• Zentralisierung
- Wartbarkeit �
• Systemunabhängigkeit �• Standardisiert �
• Entkopplung der Logik und der Darstellung �
� Nachteile �• Zentralisierung
- Verfügbarkeit �
• Aufwand �• Authentifizierung �
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 3����������������������������
��������������������� ������
Aufruf eines WebServices
� Anwendung nutzt WebService Stub, sie kümmert sich nicht darum woher der Stub das Ergebnis hat.
� WebService Stub verpackt die Anforderung in XML und schickt sie dem Webserver
� Webserver (z.B.: Tomcat mit AXIS) erkennt die Anfrage und ruft das entsprechende WebService auf (Reflection)
� Webserver verpackt die Antwort in XML und schickt sie an den Stub� Stub entpackt die Antwort und liefert das Ergebnis.
Webserver
WebServiceImplementierung
WebService Stub
Anwendung
Transport-schicht
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 4����������������������������
��������������������� ������
XML
� XML ist:• Extensible Markup Language• Inspiriert durch SGML• Einfach, flexibel, Textformat
• Portabel
• DTD, XML-Schema (XSD)• http://www.w3.org/XML/
� XML ist nicht:• Programmiersprache
• Netzwerkprotokoll• Datenbank
XML is a markup language, and only a markup language. It's important to remember this fact. The XML hype has become so extreme that some people expect XML to do everything up to, and including, washing the family dog.
XML In A Nutshell, Eliotte Rusty Harold & W. Scott Means
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 5����������������������������
��������������������� ������
WSDL
� Web Service Description Language� Standard zur Beschreibung von Netzwerkdiensten
• Service- Adresse
- Name
• Funktionen- Name
- Parameter
- Rückgabewert
• Typen - Beschreibung der verwendeten Typen in den Nachrichten
• Nachrichten- Aufbau der möglichen Nachrichten
� Plattformunabhängig� Programmiersprachenunabhängig� XML� http://www.w3.org/TR/wsdl.html
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 6����������������������������
��������������������� ������
SOAP
� Simple Object Access Protocol� Ziele:
• Einfach
• Erweiterbar
• Leichtgewichtig
� Repräsentation: XML� Standardisiertes Verpackungsprotokoll für Nachrichtenaustausch� Entwickelt von:
• Microsoft
• IBM
• DevelopMentor (Don Box)• UserLand (Dave Winer)
� Seit 2000 W3C Spezifikation (http://www.w3.org/TR/SOAP/)� Implementierungen:
• Apache Axis (früher Apache SOAP)
• Microsoft .NET
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 7����������������������������
��������������������� ������
Beispiel SOAP Nachricht (Anfrage)
��������������������������������������������������������������������������������������������������������������������������������������������������������������� �!����������������������� �!����������������������� �!����������������������� �!����""""#��#��#��#������$%�����$�����$%�����$�����$%�����$�����$%�����$�����������������������������������������������������������$�$������&&��$�$������&&��$�$������&&��$�$������&&��������������������������������'��%����()"'��%����()"'��%����()"'��%����()"������������*+���������&���&�����,�%��-*+���������&���&�����,�%��-*+���������&���&�����,�%��-*+���������&���&�����,�%��-����"&+."&+."&+."&+.*������/������*������/������*������/������*������/������
�����������&����������������������%�������������&�����������&����������������������%�������������&�����������&����������������������%�������������&�����������&����������������������%�������������&������,�&�������000�0(���%�1����23'������&������,�&�������000�0(���%�1����23'������&������,�&�������000�0(���%�1����23'������&������,�&�������000�0(���%�1����23'������&�������&�������000�0(���%�1����23'�������������&�������000�0(���%�1����23'�������������&�������000�0(���%�1����23'�������������&�������000�0(���%�1����23'����������������&.������&.������&.������&.
*������4�,�.*������4�,�.*������4�,�.*������4�,�.*���*���*���*���������������
����������,�%����������������,�%����������������,�%����������������,�%������
&����������������������%���������,�%�&&����������������������%���������,�%�&&����������������������%���������,�%�&&����������������������%���������,�%�&��������&��������&��������&��������&������5������5������5������5&�.&�.&�.&�.
*�������4�,�.*�������4�,�.*�������4�,�.*�������4�,�.*�������/������.*�������/������.*�������/������.*�������/������.
*������/������*������/������*������/������*������/�����������������&����������������������%�������������&�����������&����������������������%�������������&�����������&����������������������%�������������&�����������&����������������������%�������������&������,�&�������000�0(���%�1����23'������&������,�&�������000�0(���%�1����23'������&������,�&�������000�0(���%�1����23'������&������,�&�������000�0(���%�1����23'������&�������&�������000�0(���%�1����23'�������������&�������000�0(���%�1����23'�������������&�������000�0(���%�1����23'�������������&�������000�0(���%�1����23'����������������&.������&.������&.������&.
*������4�,�.*������4�,�.*������4�,�.*������4�,�.*���*���*���*���������������
����������,�%����������������,�%����������������,�%����������������,�%������
&����������������������%���������,�%�&&����������������������%���������,�%�&&����������������������%���������,�%�&&����������������������%���������,�%�&��������&��������&��������&��������&������5������5������5������5&�.&�.&�.&�.
*�������4�,�.*�������4�,�.*�������4�,�.*�������4�,�.*�������/������.*�������/������.*�������/������.*�������/������.
*������4�,�.*������4�,�.*������4�,�.*������4�,�.*���*���*���*���������������
����������,�%����������������,�%����������������,�%����������������,�%������
&����������������������%���������,�%�&&����������������������%���������,�%�&&����������������������%���������,�%�&&����������������������%���������,�%�&��������&��������&��������&��������&������5������5������5������5&�.&�.&�.&�.
*�������4�,�.*�������4�,�.*�������4�,�.*�������4�,�.
Header(HTTP & SOAP)
SOAP Envelope
SOAP Body
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 8����������������������������
��������������������� ������
Beispiel SOAP Nachricht (Antwort)
���������1����6���������1����6���������1����6���������1����6������������������������������������������������������ �!���������������������� �!���������������������� �!���������������������� �!����""""7������� 8�19�:���1��;�������
����������,�%����������������,�%����������������,�%����������������,�%������
&����������������������%���������,�%�&&����������������������%���������,�%�&&����������������������%���������,�%�&&����������������������%���������,�%�&��������&������5&.��������&������5&.��������&������5&.��������&������5&.*���>�� ����������&�,����%&.���*����>�� ��.*���>�� ����������&�,����%&.���*����>�� ��.*���>�� ����������&�,����%&.���*����>�� ��.*���>�� ����������&�,����%&.���*����>�� ��.*�������>�����.*�������>�����.*�������>�����.*�������>�����.
*�������4�,�.*�������4�,�.*�������4�,�.*�������4�,�.*�������/������.*�������/������.*�������/������.*�������/������.
*������/������*������/������*������/������*������/�����������������&����������������������%�������������&�����������&����������������������%�������������&�����������&����������������������%�������������&�����������&����������������������%�������������&������,�&�������000�0(���%�1����23'������&������,�&�������000�0(���%�1����23'������&������,�&�������000�0(���%�1����23'������&������,�&�������000�0(���%�1����23'������&�������&�������000�0(���%�1����23'�������������&�������000�0(���%�1����23'�������������&�������000�0(���%�1����23'�������������&�������000�0(���%�1����23'����������������&.������&.������&.������&.
*������4�,�.*������4�,�.*������4�,�.*������4�,�.*������>�����*������>�����*������>�����*������>�����
����������,�%����������������,�%����������������,�%����������������,�%������
&����������������������%���������,�%�&&����������������������%���������,�%�&&����������������������%���������,�%�&&����������������������%���������,�%�&��������&������5&.��������&������5&.��������&������5&.��������&������5&.*���>�� ����������&�,����%&.���*����>�� ��.*���>�� ����������&�,����%&.���*����>�� ��.*���>�� ����������&�,����%&.���*����>�� ��.*���>�� ����������&�,����%&.���*����>�� ��.*�������>�����.*�������>�����.*�������>�����.*�������>�����.
*�������4�,�.*�������4�,�.*�������4�,�.*�������4�,�.*�������/������.*�������/������.*�������/������.*�������/������.
Test
Header(HTTP & SOAP)
SOAP Envelope
SOAP Body
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 9����������������������������
��������������������� ������
WebServices in Java
� Application Server• Apache Tomcat• Bea Weblogic• IBM WebSphere
• ...
� SOAP Implementierung• Apache AXIS• IBM Web Service Toolkit• Graham Glass GLUE
• ...
Tomcat
Axis Servlet1 Servlet2
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 10����������������������������
��������������������� ������
Erstellen eines SOAP Beispiels
� Service• Schnittstelle: "Test.java"
• oder "dummy"-Implementierung: "Test.java"
���5�%����5�%����5�%����5�%� ������5�
� ?��� ?��� ?��� ?�� ����!�������!�������!�������!��� ����@� ?��� ?��� ?��� ?�� ����%����AB�
C
���5�%����5�%����5�%����5�%� ������5�
� ?��� ?��� ?��� ?�� ���
���
���
���
����@� ?��� ?��� ?��� ?�� ����%����AB�@
��� ����� ����� ����� �� &&�C
C
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 11����������������������������
��������������������� ������
Erstellen eines SOAP Beispiels
� Erstellen der WSDL• java org.apache.axis.wsdl.Java2WSDL [optionen] Klasse
- --output - --location
- --namespace
- ...
D�����%�����������0,��:��1E�7'��� �� ��&����0,�&����������&����������������"�"�������������&������5����
xy.java
xy.classjavac
xy.wsdlJava2WSDL
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 12����������������������������
��������������������� ������
Erstellen eines SOAP Beispiels
� Erstellen der Stubs• java org.apache.axis.wsdl.WSDL2Java [Optionen] WSDL-URI
- --server-side- --skeletonDeploy
- --output
D�����%�����������0,��E�7'1:���������,���5������7�������� ���� �� �������0,�
xy.wsdlServerseitige Dateien:xy.java, xySoapBindingImpl.java, xySoapBindingSkeleton.javaDateien für deploy/undeploy:deploy.wsdd, undeploy.wsddClientseitige Dateien:xyService.java, xyServiceLocator.javaxySoapBindingStub.java
WSDL2Java
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 13����������������������������
��������������������� ������
Erstellen eines SOAP Beispiels
� Achtung "xy.java" überschreibt das Original
���5�%����5�%����5�%����5�%� ������5�� ?��� ?��� ?��� ?�� ����!�������!�������!�������!��� ����@
� ?��� ?��� ?��� ?�� ����%����AB�C
�FFF�����D��FF����!���0��� ���%�������,�!����E�7'F�?������$������$��E�7'1:����������F�
���5�%����5�%����5�%����5�%� ������5�� ?��� ?��� ?��� ?�� ����!�������������,�D������>������@� ?��� ?��� ?��� ?�� D������%�����%����AB����0����0����0����0 D������>�����/��������
C
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 14����������������������������
��������������������� ������
Erstellen eines SOAP Beispiels
� Implementierung in xySoapBindingImpl.java
�FFF��������4�,�%G����D��FF����!���0��� ���%�������,�!����E�7'F�?������$������$��E�7'1:����������F�
���5�%����5�%����5�%����5�%� ������5�
� ?��� ?��� ?��� ?�� ���
���
���
���
�������4�,�%G������������������������������������
������5����@
� ?��� ?��� ?��� ?�� D������%�����%����AB����0����0����0����0 D������>�����/��������@
��� ����� ����� ����� �� � ���C
C
��� ���&���&�
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 15����������������������������
��������������������� ������
Erstellen eines SOAP Beispiels
� Kompilieren der java Dateien� Kopieren von
• xy.class
• xySoapBindingImpl.class
• xySoapBindingSkeleton.classnach
"%CATALINA_HOME%\webapps\axis\WEB-INF\classes\"
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 16����������������������������
��������������������� ������
Erstellen eines SOAP Beispiels
� Installieren eines Webservices (deploy)• java org.apache.axis.client.AdminClient
D�����%�����������������$,��������,������0,,
*,��������������&��������������������%����0,,�&�����D���&��������������������%����0,,����,���D��&.
*���� �����&���&����,���&D���>��&������&���&� ��&����,�,&.*��������� �����&0,����%��H�������&��� ��&������5&�.*��������� �����&0,������/������&��� ��&��������&�.*��������� �����&0,����������&��� ��&���&�.*��������� �����&���
H���&��� ��&������5��������4�,�%�5������&�.*��������� �����&0,���������&��� ��&���&�.*��������� �����&����0�,3����,&��� ��&F&�.*�����.
*�,���������.
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 17����������������������������
��������������������� ������
Erstellen eines SOAP Beispiels
� Anzeigen installierter Services (list):
� Komfortabler über http://localhost:8080/axis/services
� Entfernen (undeploy):
D�����%�����������������$,�������� �,������0,,
D�����%�����������������$,����������
* �,��������� �����&��������������������%����0,,�&.
*���� �����&���&�.
*� �,���������.
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 18����������������������������
��������������������� ������
Erstellen eines SOAP Beispiels
� Client:
�������������������� ������5������������������������� ������5���������'��������������������������� D�����������������/���������������������������� D������>�����/��������
� ?��� ?��� ?��� ?�� ���
���
���
���
�����@
� ?��� ?��� ?��� ?�� ���������������� �,�,�,�, ���A����%���%IJB����0����0����0����0 �����/�������8�>�����/�������@
��������������'���������������������������0��0��0��0 ��������'������AB�������������%�����AB�������� ��������A�����ABB�
CC
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 19����������������������������
��������������������� ������
Ablauf
TestPack. Test
java.rmi. Remote
Client
org.apache.axis.client.Service
TestPack.TestServiceLocator
TestPack. TestService
org.apache.axis.client.Stub
TestPack.TestSoapBindingStub
%�����AB%�����AB%�����AB%�����AB
���AB���AB���AB���AB
org.apache.axis.client.Call
��5�AB��5�AB��5�AB��5�AB
Client:
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 20����������������������������
��������������������� ������
Ablauf
TestPack.TestSoapBindingSkeleton
TestPack.Test
org.apache.axis.wsdl. Skeleton
java.rmi. Remote
TestPack.TestSoapBindingImpl
���AB���AB���AB���AB
Server:
Tomcat
Axis
���AB���AB���AB���AB
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 21����������������������������
��������������������� ������
Überwachen der Client/Server-Kommunikation
� java org.apache.axis.utils.tcpmon [List. Port] [Targ. Host] [Targ. Port]
Anfrage
Antwort
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 22����������������������������
��������������������� ������
WebService mit .Net
� TestService.asmx:
� Virtuelles Verzeichnis im IIS anlegen, TestService.asmx ablegen� WSDL: .../TestService.asmx?WSDL� Testseite: .../TestService.asmx?op=GetTest
*KL�E�?������'��% �%��&�M&����
�&��������&K.
�% �% �% �% ������E�?�������
� ?��� ?��� ?��� ?�� ���
���
���
���
�����������E�?������@IE�?3����,J� ?��� ?��� ?��� ?�� ���%���%���%���% =�����AB�@
��� ����� ����� ����� �� &���&�C
C
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 23����������������������������
��������������������� ������
Zusammenfassung
� Sprachunabhängig• Java
• .NET (C#)
� XML� Zentralisiert
• Wartbar
• Verfügbarkeit
� Logik und Darstellung entkoppelt
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 24����������������������������
��������������������� ������
Tomcat 5
� Voraussetzungen:• Java SDK Version >= 1.3
• Umgebungsvariablen- JAVA_HOME=C:\j2sdk1.4.2_02
- CATALINA_HOME=C:\Webservices\jakarta-tomcat-5.0.16
� Download: http://apache.netmonic.com/jakarta/tomcat-5/� Starten: startup
- CATALINA_HOME\bin\startup.bat
- Linux: CATALINA_HOME/bin/startup.sh
� Betrieb: http://localhost:8080/� Stoppen: shutdown
- Windows: CATALINA_HOME\bin\shutdown.bat
- Linux: CATALINA_HOME/bin/shutdown.sh
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 25����������������������������
��������������������� ������
Apache AXIS 1.1
� Voraussetzungen:• Java SDK Version >= 1.4
• Servlet Container (z.B.: Tomcat)- http://jakarta.apache.org/tomcat/
• JavaBeans Activation Framework- http://java.sun.com/products/javabeans/glasgow/jaf.html
� Download: http://ws.apache.org/axis/� Entpacken
� Kopieren• ??\Axis-1_1\webapps\axis -> CATALINA_HOME\webapps\• ??\jaf-1.0.2\activation.jar -> CATALINA_HOME\common\lib\
� Umgebungsvariablen• AXIS_HOME=c:\Webservices\axis-1_1• AXIS_LIB=%AXIS_HOME%\lib
• AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;%AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar
• CLASSPATH=%CLASSPATH%;%AXISCLASSPATH%
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 26����������������������������
��������������������� ������
Testen der Installation
� http://localhost:8080/axis/happyaxis.jsp