JSP Develop Newsletter #6 vom 01.12.2001

Editorial

Liebe Leserinnen und Leser! Im November hat sich einiges im Bezug auf JSPs und J2EE
getan. Wir waren auf der BEA Technologiekonferenz und haben uns angeschaut, wie sich
der Applikationserver WebLogic im Hinblick auf die neue Spezifikation J2EE 1.3 entwickelt
hat.

Im Open Source Bereich gibt es neben den bekannten Servlet Engines und Application
Servern nun auch vollständige Frameworks für die Entwicklung von Enterprise Anwendungen.
In Ergänzung zu dem Struts Framework, der im Rahmen des Jakarta-Projektes entstanden ist
und sich als Referenzimplementierung des MVC-Konzeptes etabliert, gibt es jetzt auch eine
interessante Implementierung mit dem Namen Arch4J für den Business Tier.

Wir möchten nochmal auf unsere kleine Umfrage hinweisen, und es würde uns freuen wenn
Sie uns Ihre Meinung über jsp-develop.de mitteilen.
Ausserdem haben wir einen neuen Bereich New Features eingerichtet in dem wir neue
Ideen für jsp-develop.de vorstellen möchten.

Viel Spaß beim aktuellen Newsletter!

Marc & Jörg


News

Arch4J is available

Der Open Source Framework Arch4J ist bei SourceForge freigegeben worden. Arch4J ist
ein Framework der Entwicklern verschiedene Dienste für die Implementierung von J2EE
Anwendungen zur Verfügung stellt.

Der Framework beinhaltet die standardisierte Implementierung von Business Services,
Datenbankzugriffen, Messaging-Funktionen, Logging, Dateimanagement für Property-Dateien,
einen Exception Framework, Code Generator und noch vieles mehr. Arch4J ist für den Business
Tier entwickelt worden und nicht als Konkurenz sondern als Ergänzung zum Struts Framework
anzusehen.

EJB 2.0 & Web Services Seminar

BEA und TogetherSoft laden zu einem Seminar ein, indem das Zusammenspiel von BEA
WebLogic Server 6.1 und Together ControlCenter im Bereich J2EE Entwicklung diskutiert
wird. Die Veranstaltung besteht aus theoretischen Teilen zum Thema EJB 2.0 und WebServices
sowie verschiedenen Lifedemos, die das Erstellen von J2EE Applikationen (Model-Build-Deploy)
zeigen.

Das Seminar findet an folgenden Orten statt:

Stuttgart
04. Dezember 2001 , 13.00 - 17.00 Uhr
Kultur- & Kongresszentrum Liederhalle
Berliner Platz 1-3
D-70174 Stuttgart

München
11. Dezember 2001, 13.00 - 17.00 Uhr
Eden-Hotel-Wolff
Europasaal
Arnulfstr. 4
80335 München

Zur Anmeldung...


Konferenzbericht

JspDevelop war auf der Hochschul-Industrie-Kooperations-Tagung und der BEA Technologie
Konferenz. Die Veranstaltungen haben in der Jahrhunderthalle in Frankfurt/Höchst stattgefunden
und waren rundum ein erfolgreiches Ereignis.

Neben spannenden J2EE Vorträgen und Praxisberichten, gab es auch eine Partner
Ausstellung mit interessanten Entwicklungen auf Basis von WebLogic. Die Konferenz
war professionell organisiert, für das leibliche Wohl hat ein umfangreiches Buffet
mit reichhaltigen Leckereien gesorgt. Wir müssen an dieser Stelle zugeben, dass
wir uns nur sehr schwer vom Buffet trennen konnten, um den Vorträgen zu folgen (-:

Überblick über ausgewählte  Vorträge:

13. November 2001:

Track 1A: Applikationsentwicklung und -integration auf Basis von BEA WebLogic

Der Vortrag von Prof. Dr. Appelrath / Dr. Jörg Friebe (Universität Oldenburg) handelte
von einem CRM-Projekt, dass auf  Basis von WebLogic realisiert wurde.

Neben der Definition der Anforderungen wurden auch Entwurfsentscheidungen
wie eine mögliche GUI-Integration bestehender Applikationen bzw. die komplette
Neuimplementierung auf Basis der J2EE besprochen.

Interessant war der Erfahrunsgbericht, der das Projekt umfasste und Probleme,
die sich bei der Realisierung der Anwendung mit der noch neuen Technologie und
Integration in das bestehende Systemumfeld ergeben haben: Serverbasierte
Workflow-Steuerung, EJB 2.0 Draft 2 unterscheidet sich von Draft 1, Anwendung
von Message-Driven Beans, etc...

Track 2B: WebServices auf BEA WebLogic aus dem Bereich Mobile

Uwe Spiegel von der Multimedia Software GmbH Dresden / T-Systems
hat über WebServices und deren Anwendungsmöglichkeiten referiert.
Neben der Schilderung konkreter Erfahrungen im T-Motion Projekt wurden
auch folgende Themen angesprochen: Wie werden WebServices vom
Endbenutzer angenommen, wo stehen wir heute und was bringt uns die
Zukunft in diesem Segment.

Die Technologie der WebServices (Protokolle, UDDI, SOAP, WSDL, etc.) und
deren Anwendungsmöglichkeiten wurden ebenfalls diskutiert. Der Vortrag von
Uwe Spiegel war sehr gut strukturiert, professionell vorgetragen und mit
neuen Ansätzen für B2B- und B2C-Anwendungen verknüpft, die mit WebServices
realisiert werden können.

Track 3C: Idioms - Patterns für die Java Enterprise Edition und Erfahrung
                   am Beispiel von WebLogic Server

Der Vortrag von Adam Bien (Autor und freier Consultant) handelte von J2EE
Design Patterns und deren Anwendungsmöglichkeiten. Adam Bien hat neben
den Design Patterns des Sun Java Centers auch eigene Erweiterungen
vorgestellt, die in seinem Buch beschrieben sind. Neben den zahlreichen
Tipps und Tricks wurden auch Source Code Beispiele vorgestellt, die
den abstrakten Hintergrund untermauert haben.

In der Summe hat der Vortrag einen guten Überblick über Design Patterns
gegeben und angeregt tiefer in den Stoff einzutauchen. Übrigens, das neue
Buch von Adam Bien - J2EE Patterns / Entwurfsmuster für die J2EE - wird
Anfang nächsten Jahres  bei Addison-Wesley erscheinen.

Adam Bien hat bereits ein Buch über Enterprise Java Frameworks geschrieben,
dass in diesem Jahr im Addison-Wesley Verlag erschienen ist. Wir lesen das
Buch zur Zeit und werden in einer der nachfolgenden Ausgaben des Newsletters
darüber berichten.

Neben dem Buch "Core J2EE Design Patterns", welches in diesem Newsletter
rezensiert wird, ist der Klassiker von der Gang of Four (GoF) immer noch der
Standard im Bezug auf Patterns. Schaut mal rein, Patterns sind hilfreich für die
Lösung von Software-Problemen.

14. November 2001:

Track 1B: BEA WebLogic Portal

Der Referent Colin D.Harnwell (BEA Systems) hat das neue BEA WebLogic Portal 4.0
vorgestellt. BEA WebLogic Portal ist eine Zusammenführung der Produkte Personalization
und Commerce Server sowie dem Campaign Manager.

Wesentliche Neuerung ist die Gestaltung der Portaloberfläche in Form von Portlets. Jedes
Portlet besteht aus einer eigenen JSP-Seite, die sich themenbezogen selbst darstellt.
Portlets kommunizieren untereinander mittels Pipelines. Business Rules können für
jedes Portlet hinterlegt werden. Die Business Rules triggern das Portlet und entscheiden
anhand definierter Regeln, welche Informationen dem Benutzer des Portals angezeigt werden
sollen. Das Portal von BEA macht einen sehr guten Eindruck und man darf gespannt sein,
wann die ersten grossen Portale auf dieser Plattform laufen.

Für das Portal gibt es entsprechende Entwicklungswerkzeuge, wie den Portlet Wizzard, einen
Workflow Designer für WebFlows und eine Integration Suite auf Basis WebLogic für den Zugriff
auf externe Dienste wie zum Beispiel einen LDAP-Server für die Zugriffskontrolle zum Portal.

Track 2C: WL Integration 2.0 BEA Lösung für EAI auf J2EE Connector Standard

Dr. Pall Eggerz (BEA Systems) hat über die J2EE Java Connector Architecture (JCA)
gesprochen. JCA ist eine neue Spezifikation, die Bestandteil von J2EE 1.3 ist. JDBC ist
der Pate für JCA (allgemeines JDBC).  Im Rahmen der neuen Spezifikation werden EAI-
Anforderungen umgesetzt, die einen Zugriff auf Legacy Anwendungen und externe Systeme
über eine standardisierte Schnittstelle regeln.

BEA hat auf Basis der JCA Spezifikation das Produkt WebLogic Integration (WLI) implementiert.
WLI bietet neben Standard-Adaptoren (sind auf der BEA-Homepage wiederzufinden) auch
ein Software Development Kit für die Entwicklung eigener Adaptoren. WLI bietet darüberhinaus
verschiedene Schlüsseldienste wie Connection Pooling, Transaction Management und Security
Management für JCA an.

Insgesamt gesehen, ist die JCA-Spezifikation und die Implementierung von BEA eine interessante
Technologie die Connectivity in die heterogene IT-Welt bringt.

Track 3C: EJB 2.0 mit WebLogic Server 6

Der Vortrag von Thomas Walter (BEA Systems) stellte die Neuerungen des EJB 2.0 Standards
heraus. Der Referent ist sehr ausführlich auf die Umsetzung des Standards in WebLogic 6.x
eingegangen. EJB 2.0 ist im Hinblick auf effektiveres Entwickeln von J2EE Anwendungen
ein Meilenstein in der J2EE-Evolution.

Zusammengefasst sind die wesentlichen Erweiterungen der J2EE 1.3 und EJB 2.0 Spezifikation:

J2EE 1.3 sowie EJB 2.0 sind vollständig von BEA implementiert und in WebLogic 6.x integriert worden.


Buch Neuerscheinung

Der QUE-Verlag hat ein neues Buch mit dem Titel Using Enterprise Java Beans 2.0
(ISBN: 0-7897-2567-3) herausgegeben. Das Buch ist von den Autoren Chuck
Cavaness und Brain Keeton geschrieben worden und wendet sich an fortgeschrittene
EJB-Entwickler.

In dem Buch werden die neuen Features des EJB Standards 2.0 besprochen und
anhand von Beispielen untermauert. Neben allgemeinen EJB-Themen werden
auch designspezifische Aspekte wie das Facade-, MVC- und Proxy-Pattern
besprochen. Das Buch behandelt ausführlich die neuen EJB 2.0 Funktionen
wie Message Driven Beans, Container Managed Persistent (CMP) sowie
die lokale EJB-to-EJB Schnittstelle.


Buchbesprechung

Core J2EE Patterns
(Best Practices and Design Strategies)
Deepak Alur
John Crupi
Dan Malks
ISBN: 0-13-064884-1
Prentice Hall

Das Buch "Core J2EE Patterns" ist von drei Enterprise Java Architekten des
Sun Java Centers geschrieben worden. Der Fokus des Buches liegt auf Design
Patterns für Enterprise Anwendungen sowie deren Anwendungsmöglichkeiten.

Der Rezension des Buches vornewegzunehmen, das Werk ist mit vielen Tipps
und Tricks gespickt. Die vielfältigen Sichten der Autoren im Bezug auf die
Realisierung von Enterprise Anwendungen lassen es allerdings nicht zu, dass
man das Buch in einem Zuge durchliest. Das Buch eignet sich deshalb nur für
erfahrene Entwickler und Architekten, die sich intensiv mit der Entwicklung
von webbasierten Enterprise Anwendungen beschäftigt haben.

Teil I

Kapitel 1

Das erste Kapitel diskutiert die Java 2 Enterprise Edition, die Einordnung und
Definition von Patterns, den im Buch zugrundeliegenden Pattern Katalog und
dessen Gebrauch. Zusätzlich beinhaltet das erste Kapitel die Vorteile von
Patterns (bewährte Problemlösungen) und ein paar Worte zu Frameworks.

Kapitel 2

Kapitel zwei beschreibt den Hype der Java Technologie und Application Server,
sowie die Vorteile der J2EE. Interessant ist die Erläuterung der J2EE Architektur
aus Sicht der Autoren und der Vergleich von J2EE mit der Java 2 Standard Edition.
Neben einer Kurzbeschreibung der J2EE Anwendungskomponenten, werden auch
Standard-Dienste (JDBC, JavaMail, RMI, etc.) übersichtlich behandelt. Im Abschluss
des Kapitels werden die verschiedenen Plattformrollen (Produkt Provider, Application
Component Provider, etc.) besprochen. Das Rollenkonzept, sowie es hier dargestellt
wird, findet man in der Praxis meist nicht vollständig umgesetzt wieder, sodass ein
Entwickler oft mehrere Rollen spielt.

Teil II

Kapitel 3

In diesem Kapitel werden designspezifische Aspekte des Presentation Tiers betrachtet
und gute sowie schlechte Praktiken herausgearbeitet. Beginnend bei dem Session Management,
werden auch Plausibilitätsprüfungen auf der client- und serverseite und folgende weiterführende
Themen diskutiert:

Beim Lesen des Kapitels erinnert man sich sehr schnell an vergangene Projekte und kommt
oft zum Schmunzeln, weil man die Probleme die in dem Kapitel beschrieben werden in der
Regel kennt. Das Kapitel stellt die Notwendigkeit der Patterns für den Presentation
Tier heraus und öffnet zugleich die Tür für das Verständnis der Patterns.

Kapitel 4

Kapitel vier handelt von dem Business Tier und dessen Pitfalls. Beginnend bei grundlegenden
Themen wie Session Beans (Stateless/Stateful) werden auch Entity Beans behandelt. Der
wichtigere Teil des Kapitels beschreibt fragwürdige Entwicklungskonstrukte des Business und
Integration Tiers.

Im einzelnen werden folgende Themen angesprochen:

Diese Aufzählung zeigt, dass der Business Tier unterschiedliche Aspekte (die
zu beachten sind) in sich birgt und das man bei der Entwicklung von Enterprise
Anwendungen sehr viel falsch machen kann. Kapitel drei und vier verdeutlichen
die Probleme, die Patterns der nachfolgenden Kapitel hingegen stellen Problem-
lösungen dar.

Kapitel 5

Im Kapitel fünf werden aufbauend auf den in den vorherigen Kapiteln beschriebenen
Probleme technische Lösungsmöglichkeiten gezeigt. Neben der Beantwortung
der Frage: Was ist ein Controller, werden auch Synchronized Tokens, MVC-
spezifische Aspekte sowie die Übergabe der Daten vom Presentation Tier
an den Business Tier, das Zusammenführen von Session Beans, Inter-Entity
Bean Kommunikation, Programmierung der Business Logic in Session Beans,
Verwendung von Connection Pools und weiterführende Themen behandelt.

Sehr schön an diesem Kapitel ist es, dass nicht nur auf abstrakte Patterns
eingegangen wird, sondern konkrete Techniken aufgezeigt werden. Diese
Techniken sind mit anschaulichen Bildern untermauert. Gleichzeitig wird für
die Anwendung der Technik jeweils auch eine Motivation gegeben.

Der wichtigste Punkt des Kapitels ist es, dass die Probleme so wie sie
in den vorherigen Kapiteln beschrieben wurden, direkt auf den Katalog der
Design Patterns (nachfolgende Kapitel) projeziert werden.

Teil III

Kapitel 6

Kapitel sechs beantwortet die Fragen: Was ist ein Pattern und wie identifiziert/
klassifiziert man Patterns. Bestandteil dieses Kapitels ist das Schichtenmodell
und die damit verbundene Trennung der Anwendungslogik. Vorbereitend auf
den ausführlichen Pattern Katalog, wird die zugrundeliegende Terminologie
des Katalogs erläutert sowie eine Übersicht über den Inhalt des Katalogs
gegeben. Die Patterns Roadmap unterstützt das Mapping der Problemfälle,
die in den vorherigen Kapiteln beschrieben worden sind.

Abschliessend werden die zugrundeliegenden Konzepte der J2EE Patterns
erläutert sowie kategorisiert. In den nachfolgenden Kapiteln, erfolgt darauffolgend
die ausführliche Beschreibung der Patterns.

Kapitel 7

Kapitel sieben erläutert Design Patterns des Presentation Tier. Beginnend bei dem
Pattern Intercepting Filter wird veranschaulicht, wie die Vorverarbeitung von Benutzer-
anforderungen (Requests) gelöst werden kann. Filter eignen sich für Standardprüfungen:
Ist der Benutzer authorisiert, hat der Benutzer eine gültige Session, etc...

Das zweite Design Pattern ist der Front Controller. Der Front Controller ist das klassische
Beispiel für die zentrale Verarbeitung und Weiterleitung von Benutzeranforderungen. Der
Front Controller ist der initiale Kontaktpunkt einer Web-Anwendung über den Requests
fliessen. Der Controller leitet Requests zu JavaBeans weiter. In den JavaBeans findet
die Weiterverarbeitung der Request statt. Der Controller ist deshalb oft nur ein Dispatcher
für eingehende Requests.

Schon die Gang of Four (GoF) haben einen Controller mit dem Namen Command Pattern
spezifiziert. Abgeleitete Technologien wie der Struts Framework, der nach dem
MVC-Konzept implementiert ist, verwenden diese Technik heute.

Das dritte Pattern ist das View Helper Pattern.  Die View enthält per Definition den
Formatierungscode (HTML, etc.), die Verarbeitung (Business Logic) findet in den
View Helpern statt. View Helper werden als JavaBeans bzw. TagLibs realisiert.

Das Composite View Pattern zerlegt eine View in einzelne Sichten. Die Composite
View setzt sich aus Includes und der Erweiterung von Views zusammen. Typische
Composite Views sind Portalansichten, in denen viele einzelne Views in eine
Oberfläche integriert sind.

Das Service to Worker Pattern beschreibt die Zusammenführung des Front Controllers
und den View Helpern im Kontext einer Dispatcherkomponente. Der Controller arbeitet
mit einem Dispatcher zusammen, der für das View Management und die Navigation
zuständig ist. Der Dispatcher kann im Controller vorliegen oder in einer seperaten
Komponente gekapselt sein. Helper wiederum helfen der View bzw. dem Controller
den Request eines Benutzers erfolgreich abzuschliessen. Im Rahmen dieses Patterns
kommunizieren Helper mittels des ValueBeans mit den BusinessServices. In den
BusinessServices wird auf das Modell (z.B.: EJB's) bzw. direkt auf den EIS-Tier
zugegriffen.

Anmerkung

Die Diskussion der Design Patterns des Buches beinhaltet folgende allgemeine
Struktur:

Durch diese Gliederung werden die Design Patterns vollständig beschrieben.

Kapitel 8

Kapitel acht widmet sich ganz den Design Patterns des  Business Tier. Das erste
Pattern ist das Business Delegate. Dieses Pattern ist als Abstraktion des Presentation
Tiers anzusehen. Business Delegate verhindert eine enge Bindung zwischen dem
Presentation und Business Tier. Die Umsetzung des Business Delegates beinhaltet
sehr oft auch eine Caching-Komponte, in der Ergebnisse von Datenbankabfragen
und Referenzen zu entfernten Business Services zwischengespeichert werden.

Das Value Object Pattern eignet sich für den Datenaustausch zwischen dem Application
Client und den Business Services. Im Value Object werden Daten gekapselt und durch
einen einfachen Methodenaufruf übertragen. Wenn der Client einen Request stellt, erzeugt
der Business Service (EJB) das Value Object, füllt es mit Werten einer Abfrage
(DB, LDAP, etc.) und übergibt das Value Object (by value) an den Client. Der
wesentliche Vorteil dieser Vorgehensweise ist es, dass sich die Anzahl der Remote
Aufrufe verringert.

Die Session Facade ist mit das populärste Design Pattern. In der Session Facade
werden die Benutzerinteraktionen zentral behandelt. Die Session Facade verwaltet
die Business Obkjekte und stellt zugleich einen Service Layer für Clients dar. Dem
Lesen dieses Abschnittes im Buch vornewegzunehmen, sollte nicht jeder Use Case
in eine Session Facade münden. Es ist besser mehrere Use Cases zu konsolidieren
um die Anzahl der Facaden gering zu halten.

Das Composite Entity Pattern ist eine Komposition von EJBs. Es macht für viele
Anwendungsfälle Sinn, fein ganulare EJBs in einem EJB zusammenzufassen,
um die Anzahl der Remote Aufrufe zu minimieren. Bestandteil dieses Patterns
sind auch Persistenz Strategien wie das Lazy Loading und Store Optimations.

Der Value Object Assembler wird eingesetzt um ein Modell bzw. Submodell zu
erzeugen. Der Value Object Assembler konstruiert ein zusammengesetztes
Value Object, welches Daten der verschiedenen Geschäftskomponenten
(Business Objects) enthält. In dem Value Object werden die Daten an den
Client durch einen einfachen Methodenaufruf übertragen. Der Client nutzt
die übertragenen Daten für die Anzeige der Ergebnisse eines Requests.

Das Design Pattern Value List Handler wird angewendet, wenn komplexe
Daten in Form einer Liste angezeigt werden sollen. Der Value List Handler
kontrolliert die Suche der Daten, cached die Ergebnisse und sendet diese
zu dem Client für die Anzeige in Listenform. Value List Handler beinhalten
in der Regel ausgefeilte Suchfunktionen, die ein mehrmaliges Ausführen
der EJB-Find Methode unnötig machen.

Der Service Locator unterstützt bzw. kapselt das Lookup von EJBs. Jeder
Client der einen Business Service verwenden möchte, muss zuerst
ein Lookup auf die Remote Referenz des Services durchführen. Die
Referenzen werden über einen Naming Kontext verwaltet, der Zugriff
auf den Kontext wird über JNDI vorgenommen. Lookups kosten wertvolle
Zeit, der Service Locator kapselt die JNDI-API und vereinfacht den Lookup
auf Services (EJBs). Der Service Locator ist auch die richtige Stelle um
EJB-Referenzen zu cachen. Diese Technik findet man in der Praxis sehr
oft wieder.

Kapitel 9

Kapitel neun diskutiert die Patterns des Integration Tiers. Das bekannteste
Pattern dieser Gattung ist das Data Access Object (DAO). Diesem Pattern
und dessen Implementierung läuft man immer wieder über den Weg. Wie der
Name schon ausdrückt bewegen wir uns sehr nahe am EIS-Tier. Das Data
Access Object kapselt den Zugriff auf Datenquellen (DB, LDAP, Flat Files, etc.).
Das DAO managed die Verbindung zur Datenquelle um Daten abzufragen und
zu speichern.

Fazit

Wir haben bei der Rezension des Buches nur die wesentlichen Patterns
(mit wenigen Worten) vorgestellt. In dem Buch sind noch andere Patterns
beschrieben, die den Rahmen des Newsletters gesprengt hätten.

In der Summe ist das Buch sehr schlüssig und lehrreich, allerdings möchten
wir das Werk nicht als Sonntagslektüre empfehlen. Es kostet Zeit und Geduld
den Autoren bei ihrem Flug zu folgen. Endet der Flug, sitzt man allerdings
zufrieden in seinem Sessel und sagt: Ich habs geschafft ;-)

Eins ist sicher, jeder der behauptet es wäre einfach Enterprise-Anwendungen
zu entwickeln hat dieses Buch nicht gelesen, noch nie eine solche Anwendung
entwickelt oder aber ohne es zu bemerken viele Fehler gemacht.

EJB-Anwendungen sind und bleiben eine Herausforderung. Das Buch hilft
diese Herausforderung zu meistern. Nicht umsonst kommen im J2EE-Bereich
in naher Zukunft weitere Bücher über Design Patterns heraus und nicht umsonst
gibt es Frameworks wie Struts und Arch4J.

Das Buch ist für J2EE-Profis ein Must-Read, Einsteiger hingegen sollten
die Finger davon lassen, oder aber sich die Zähne daran ausbeissen.

Übrigens bei Amazon.de ist das Buch heruntergesetzt worden, wir hatten
leider Pech und haben noch zum Ursprungspreis gekauft.


Link des Monats

In dieser Ausgabe des Newsletters gibt' s einen interessanten Link zu dem
Thema Unified Modeling Language (UML).

Wir möchten nicht zu viel über die Seite verraten, schaut selbst und surft zur
ultimativen UML-Seite.


Neue Beiträge bei JSP Develop

JRun goes J2EE
shark

In diesem Beitrag wird die Servlet Engine JRun von Macromedia, die sich
mittlerweile zum Application Server weiterentwickelt hat, beleuchtet.






Anregungen, Kritik oder Vorschlaege an: webmaster@jsp-develop.de.

Wenn Sie unseren Newsletter nicht mehr erhalten möchten, können Sie ihn unter
www.jsp-develop.de/newletter/ abbestellen.

Newsletter (c) 2001 by www.jsp-develop.de  Alle Rechte vorbehalten.