26
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

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

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

  • 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