JAX07: Inside Axis2: Flows, Phasen, Handler und Module

Neue Konzepte in AXIS 2:
Flows, Phasen, Module
WS-* Standards sehr unübersichtlich
Axis bringt nur eigentlich nur die Grundfunktionalitäten mit.
Läßt sich aber sehr einfach erweitern durch Plugins(Module) usw. (Baukastenprinzip)

WS-Framework der 3. Generation?
ca. 2006 wurden sehr viele Standards verabschiedet, daher auch die Notwendigkeit, neue Frameworks zu entwickeln

Wichtigste Änderungen:
MEP (Message Exchange Pattern, bsp. 3 mal request, dann erst ein response), echte asynchronität
Dynamische Handlerketten

FLOWS

Axis Engine -> Pipeline
Handlerkette werden seriell aufgerugen. Kette unterteilt in Phasen.
4 Flows:
InFlow
OutFlow
InFaultFlow (Definition, was passieren soll, wenn ein Fehler aufgetreten ist)
OutFaultFlow

Interne Verarbeitung:
AxisServlet
AxisEngine (Inflow – Handler)
Neu: MessageReceiver -> WebService
AxisEngine (Outflow)

ES MUSS gar keine Antwort mehr geben, sehr fexible, bsp. 3 inflows, 2 outflow

WebService muss nicht in Java geschrieben werden!

Auf Client Seite genau die gleichen Möglichkeiten , inkl. handlerketten usw.
OperationKontext solange „am Leben“ bis die Response da ist.

Einwegkommunikation: HTTP Protokoll, keine Response, wird ein HTTP 202 gesendet

Unterscheidung zwischen Global Flows und Service Flows
In Axis 1.x nur statische Handlerketten.

PHASEN

Menge logisch zusammengehöriger Handler
Reihenfolge der vordefinierten Phasen festgelegt, die Handlerreihenfolge innerhalb den Phasen kann jedoch angepasst werden.
Standard Phasen: Transport, Security, PreDispatch, Dispatch

Benutzerdefinierte Phasen:
Können beim InFlow nur ans Ende gesetzt werden
Beim Outflow am anfang
Definition eines Handlers
<handler name=“testHandler“ class=“net.bla.axishandler“><order/></handler>

Interface Handler ableiten von AbstractHandler
init(HandlerDescription) – vor dem Handler
cleanup() – wenn der Handler fertig ist (Wird aber nicht aufgerufen!!)
invoke(MessageContext mc)
-> Kann AxisFault werfen
AxisFault viel flexibler-> selbst wenn ein Fehler geworfen wird kann weitergearbeitet werden. Außerdem könnte man auch die Verarbeitung abbrechen.

MODULE

Modul gruppiert eine Menge von Handlern (Bsp. WS-Security, WS-Adressing, Logger) ((m)jar-Dateien)
Module können bis auf eine Operation herunter ein und ausgeschaltet werden.
Konfigurierbar über
Axis2 HTML Frontend! axis2-admin -> Konfiguration flüchtig!
Service Archive hochladen

Zur Laufzeit Module verknüpfen
Bsp.: WS-Policy (welche Features unterstützt der Service (nicht funktionale Aspekte eines Services, z.b. Verschlüsselung))
Vorteil Services können aushandeln, welche Module benötigt werden zur Kommunikation…

Module implementieren
Interface Module
Deployment: Kopieren der mar Datei in den Module Ordner der Web-Anwendung
!Versionierungkonzept für Module! Durch Classloader

Handler müssen ThreadSafe programmiert sein!

services.xml (neues wsdd)

Module können auch anderen Services beliebige Operationen hinzufügen
D.h. alle WebServices können dann automatisch Standardoperationen erhalten

Fazit:
Handlerkonzept sehr stark erweitert
Phasen, Module sehr mächtig
Bestehende Anwenungen sehr einfach erweiterbar

Zukunft: JAX-WS, Annotations

Advertisements



    Kommentar verfassen

    Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

    WordPress.com-Logo

    Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

    Twitter-Bild

    Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

    Facebook-Foto

    Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

    Google+ Foto

    Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

    Verbinde mit %s



%d Bloggern gefällt das: