Categories: Software

Ein Web Service mit SOAP::Lite

Der Request-Dispatcher ist der Bestandteil des Service, der direkt mit dem Aufrufer des Web Service in Verbindung tritt. Er befindet sich auf Ihrem Webserver und wird ebenfalls als CGI-Skript aufgerufen. Das folgende Beispiel zeigt die Implementierung eines ganz einfachen Request-Dispatchers:


1 #!/usr/bin/perl -w
2 # Dateiname: echo.cgi
3 # Echo-Web Service - dieser Web Service gibt jeden Input
4 # als Echo in seiner Antwort zurück.
5 # Autor: Byrne Reese
6 use Echo;
7 use SOAP::Transport::HTTP;
8 SOAP::Transport::HTTP::CGI
9 ->dispatch_to('Echo')
10 ->handle;

Wie man sieht, macht das SOAP::Transport::HTTP::CGI-Package das Weiterleiten von SOAP-Requests an ein Perl-Modul zu einer einfachen Sache.

In Zeile 6 importieren wir den Request-Handler für unseren Service. Dies ist das Perl-Modul, das die Subroutinen für eingehende SOAP-Meldungen enthält. In Zeile 7 importieren wir das SOAP::Lite-Package, welches den gesamten notwendigen Programmcode für die Bearbeitung von eingehenden SOAP-Requests enthält. In Zeile 9 wird das Perl-Modul für die Bearbeitung eingehender Requests festgelegt. In unserem Beispiel sollte der an dispatch_to übergebene Wert mit dem Namen des Moduls in Zeile 6 übereinstimmen. Und schließlich wird in Zeile 10 SOAP::Lite aufgerufen, um den Request zu bearbeiten.

SOAP::Lite ist in der Lage, eingehende Requests an mehrere Module weiterzuleiten. Diese Fähigkeit erlaubt es, alle eingehenden SOAP-Anfragen an einer einzigen Stelle entgegenzunehmen. Dafür muss man nur jedes Modul mit seinem vollständig qualifizierten Namen als Argument an dispatch_to übergeben. Für noch mehr Flexibilität kann man den Pfad zu einem Verzeichnis angeben, das eine Reihe von Perl-Modulen enthält, an die SOAP::Lite Requests weitergeleitet werden. Das folgende Beispiel kann Requests an die Perl-Module My::Module::Name und My::Other::Module weiterleiten – sowie an jedes Perl-Modul, das im Verzeichnis /Your/Path/To/Deployed/Modules installiert ist:


SOAP::Transport::HTTP::CGI
->dispatch_to('/Ihr/Pfad/zu/verwendeten/Modulen',
'My::Module::Name', 'My::Other::Module')
->handle;

Um zusammenzufassen, wie das funktioniert, wollen wir einen Blick auf etwas XML werfen. Wenn SOAP::Transport::HTTP::CGI->handle() aufgerufen wird, ruft SOAP::Lite die Subroutine mit demselben Namen wie das Root-Element des SOAP-Body auf. Es sucht nach dieser Subroutine in dem Perl-Modul, das durch den Namensraum des Root-Elements des SOAP-Body bestimmt ist. Der folgende SOAP-Request führt z.B. dazu, dass SOAP::Lite den Request an die Subroutine mit dem Namen myMethod weiterleitet, die im Perl-Modul MyWebService.pm zu finden ist:


<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Body>
<namesp1:myMethod xmlns:namesp1="urn:MyWebService">
<foo>bar</foo>
</namesp1:echo>
</SOAP-ENV:Body>

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Digitale Produkte „cyberfit“ machen

Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.

3 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…

3 Tagen ago

Apple schließt Zero-Day-Lücken in iOS, iPadOS und macOS

Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…

3 Tagen ago

Gefährliche Anzeigen für Passwortmanager Bitwarden verbreiten Malware

Die Hintermänner haben es unter anderem auf Daten von Facebook-Geschäftskonten abgesehen. Opfer werden über angebliche…

4 Tagen ago

Public Cloud: Gartner erwartet 2025 weltweite Ausgaben von 723 Milliarden Dollar

Bis 2027 werden 90 Prozent der Unternehmen eine Hybrid-Cloud-Strategie umsetzen.

4 Tagen ago

iPhone 15 ist bestverkauftes Smartphone im dritten Quartal

Apple belegt in der Statistik von Counterpoint die ersten drei Plätze. Samsungs Galaxy S24 schafft…

4 Tagen ago