Stateful und Stateless BSP-Anwendungen: HTTP ist stateless!

Größe: px
Ab Seite anzeigen:

Download "Stateful und Stateless BSP-Anwendungen: HTTP ist stateless!"

Transkript

1 Stateful und Stateless BSP-Anwendungen: HTTP ist stateless! (1) Stateful BSP-Programmierung : NWAS: stateful Anwendungskontext über Response hinaus gehalten Bei Weiterführung zur Vfg. NWAS "merkt" sich Daten, die zu Anwendung gehören (Rollbereich), greift bei Fortsetzung wieder darauf zu: Klassisches R/3: Bei jedem SAPGUI-Bildwechsel User 1 Session 1 User 2 Session 2 session session NWAS: Daten auch nach Senden der Response- Seite an Browser für weitere Requests derselben BSP-Anwendung zur Vfg User 3 Session 3 session Zeit Nachteil : Ressource Laufzeit vs. Ressource Speicher - Hohe Last auf dem Server - Kontextdaten vieler User im Speicher halten - Ressourcen unnötig lange gehalten, wenn User BSP-Anwendung abbricht (Timeout) Vorteil : - Einfachere Programmierung - Daten bleiben zur Vfg (keine Cookies etc nötig!) - Keine erneute Datenbeschaffung + wiederholte DB-Zugriffe! (Performanz!!) HTTP ist ein zustandsloses Protokoll: Nach Antwort eines Servers auf die Anfrage eines Clients hält der Server keine Zustandsinformationen über den Client - jede neue Anfrage des Clients erfordert einen neuen Verbindungsaufbau und erneute Datenbeschaffung. Jedoch wird in einer stateful BSP-Anwendung der Anwendungskontext über die Response (Serverroundtrip) und alle Benutzerinteraktionen hinweg gehalten, bis die BSP-Anwendung beendet ist. Der Anwendungs- / Benutzerkontext wird wie bei einer klassischen R/3-Transaktion im Rollbereich zwischengespeichert und wieder in den zuständigen WAS-Workprozess hineingerollt, wenn die Bearbeitung fortgesetzt wird. Der Anwendungskontext wird über alle Request-Response- Zyklen einer BSP-Anwendung gehalten - die Daten stehen auf jeder Seite über die gesamte Session zur Vfg. Konsequenzen: Auf dem Server wird eine große Last erzeugt: Web-Anwendungen werden meist von vielen Benutzern eingesetzt. Für jeden Benutzer wird Kontext auf dem Netweaver Application Server gehalten und belastet somit dessen Speicherkapazität. Ressourcen werden unnötig lange auf dem Server gehalten: Webbrowser melden sich nicht beim Server ab, wenn ein "flüchtiger" Benutzer zu einer anderen Seite navigiert. Eine offene Sitzung kann somit nicht beendet werden - und verbleibt im Speicher des WAS bis der Timeout- Mechanismus den Kontext freigibt. Da dies einige Zeit dauern kann, werden begrenzte Server- Speicherressourcen unnötig lange blockiert. Ist der Server nicht mehr in der Lage, weitere Daten zu speichern, verweigert er die Erstellung zusätzlicher Sessions, so dass kein weiterer Anwender die Applikation nutzen kann. Die Programmierung ist jedoch leichter zu realisieren: Die Daten stehen beim erneuten Zugriff ohne erneute DB-Abfragen für die komplette BSP-Session zur Vfg. Die Zahl der Datenbankzugriffe ist minimal. Es kann auf Cookies oder Hidden Fields verzichtet werden. Man sollte sich jedoch stets fragen, ob es wirklich nötig ist, die komplette Benutzersitzung permanent aufzubewahren.

2 Session- Handling: SAP-Session- ID (2) HTTP arbeitet stateless Kennt nur unabhängige Requests Nach Response wird Verbindung geschlossen Kein Mechanismus zur Sessionkennzeichnung : Zuordnung mehrerer Request zu einer gemeinsamen Sitzung BSP-LZ generiert Session-ID in Session-Cookie: -Im stateful-fall verschickt sap-contextid - Identifikation mehrerer Requests als Teil einer logischen Session (Anwendung) - Gültig bis zum Sitzungs-Ende - Abfrage über autom. instantiiertes Objekt runtime In allen Eventhandlern + Layout Attribut session_id abgreifbar Explizites Beenden einer Session : Funktioniert nicht, wenn in Browser- Einstellungen Sitzungs-Cookies nicht zugelassen sind!! Data: s_id TYPE string. s_id = runtime session_id. navigation exit( ' ). Bewirkt im stateful-fall den Abbau des Session-Kontextes + Freigabe aller Ressourcen Zum Session-Handling dient das globale, automatisch instantiierte Objekt runtime vom Typ IF_BSP_RUNTIME. Über runtime hat man Zugriff auf das Attribut session_id. Dieses enthält einen eindeutigen Sitzungsschlüssel zur Sitzungsidentifikation. (Eine weitere nützliche Methode des runtime-objekts ist get_url(). Diese liefert die URL der aktuellen BSP-Seite zurück.) Allerdings wird nur im stateful-fall dieser Sitzungsschlüssel in Form eines Sitzungs-Cookies an den Client-Browser geschickt (und von diesem mit dem nächsten Request der gleichen Session wieder an den Server). Eine BSP-Session ist der Zeitraum zwischen Start der Applikation durch Aufruf der entsprechenden URL, und Beenden der Applikation. Die Zuordnung von Requests zu einer stateful-bsp-session erfolgt mit Hilfe von Session-Cookies, die von der BSP-Laufzeit erzeugt werden. Sie werden clientseitig als "sap-contextid" im Speicher abgelegt und bestehen auf dem Client nur für den Zeitraum der BSP-Session. Damit ist es der BSP-Laufzeit möglich, den Client-Requests eine eindeutige Session-Nummer anzufügen, um den Request im stateful-fall einer bestimmten Session und dem Applikationskontext zuzuordnen. Bei jedem erstmaligem Aufruf einer neuen BSP-Anwendung wird eine neue session_id vergeben. Eine stateful-bsp-anwendung hält Daten, die der Anwender eingegeben oder angefragt hat (Applikations- / Benutzerkontext), über die komplette BSP-Session hinweg. Der benutzer-spezifische Applikationskontext steht über die einzelnen Request-Response-Zyklen hinaus zur Vfg und wird von Seitenaufruf zu Seitenaufruf aktualisiert. Leider wird die Synchronität zwischen Client und Server durch das Stateful-Zustandsmodell gefährdet und muss vom Entwickler sichergestellt werden: Der Zustand der Anwendung kann sich von der Anzeige im Browser unterscheiden, zb durch Navigieren in der Browser-Historie oder mittels Browser-Back-Button. Ein User kann zu einer Webseite zurück navigieren und diese erneut senden, obwohl die Anwendung mit anderen Anfragen rechnet:

3 Stateless BSP-Anwendungen Nach Absenden jeder Response wird aktueller Benutzerkontext abgebaut und alle Ressourcen freigegeben - Alle Instanzen gelöscht - Alle Seitenattribut-Werte gelöscht - Alle Anwendungsklassen-Attributwerte gelöscht. Werte bei nächstem Request nicht mehr zur Vfg. Server ohne "Gedächtnis" - bedient isolierte Requests. Kompletter Kontextneuaufbau bei jedem Seitenwechsel erforderlich. User 1 WAS : stateless request response (3) User 2 request response User 1 request response Zeit 1. Seitenattribute In OnInitialization oder Layout wird Wert zugewiesen. In OnInputProcessing verwendbar, Wert dort aber wieder initial 2. Attribute des Applikationsklassen-Objekts Attribute (Einzelwerte und ganze interne Tabellen) nach Response in OnInputProcessing wieder initial Das Stateless-Zustandsmodell hält den benutzerspezifischen Applikationskontext nur für die Dauer eines Request-Response-Zyklus. Eine BSP-Anwendung stateless auszuführen bedeutet, daß für jeden Request ein neuer Applikationskontext erzeugt wird und einschließlich sämtlicher Instanzen nach jeder Response wieder verworfen wird (zustandslos = "gedächtnis-frei"). Ist der Request bearbeitet und die Response an der Browser gesendet, werden alle Ressourcen freigegeben. Der WAS verhält sich somit so, als würde sich jeder Benutzer einer BSP-Anwendung bei jedem Seitenwechsel abmelden und anschließend erneut anmelden. Der Kontext (Inhalt Seitenattributen und die Instanz der Anwendungsklasse mit ihren Attribut-Werten) bleibt nicht über einen Request- / Response-Zyklus hinaus auf dem WAS erhalten - und muss somit bei jedem folgenden Request komplett neu aufgebaut werden. Beispiel: Man weist in einer stateless-bsp einem Seitenattribut im Layout einen Wert zu. Dann kann zwar das Seitenattribut im Eventhandler OnInputProcessing verwendet werden, sein Wert ist dort aber wieder initial! Das gleiche gilt für die Attribute der Applikationsklasse. Anmerkung: Mit Ablauf des Benutzerkontextes wird auch das ABAP-Memory abgebaut, so dass die entsprechenden ABAP-Anweisungen: IMPORT... FROM MEMORY ID... und EXPORT... TO MEMORY ID... nicht sinnvoll einsetzbar sind. Das Verwerfen des Kontextes lässt sich auch in der SAP-Benutzerliste SM04 erkennen: Während des Aufrufs einer BSP-Anwendung erscheint kein Eintrag in der Benutzerliste. Erst wenn man zb in einem Eventhandler einen Beakpoint setzt, erscheint die Sitzung in der Benutzliste! Wird die gleiche Anwendung stateful geschaltet, so wird der Benutzkontext gehalten und führt zu einen Eintrag in der Benutzerliste.

4 Stateless BSP-Anwendungen (4) Nachteil : - Daten müssen neu beschafft werden, wenn in mehreren BSPs einer Anwendung benötigt - Erneute Datenbeschaffung und DB-Anfragen - oder: Cookies... Vorteil : - Server Ressourcen nur während der Request-Bearbeitung beansprucht. Kein Blockieren unnötiger Ressourcen - Bessere Skalierung des Servers - gut geeignet für viele Anwender - Browser-Back/Forward-Navigation unproblematisch - Direkter Sprung in beliebige Anwendungsseite unproblematisch Einstellen des Zustandsverhaltens : In Eigenschaften der BSP-Anwendnung kann stateful oder stateless selektiert werden! Selektives Umschalten zur LZ möglich - gemischte BSP-Anwendung : Setzen des Attributs keep_context des Objekts runtime : Umschalten auf stateful : runtime keep_context = 1. Umschalten auf stateless : runtime keep_context = im Eventhandlercode... Konsequenzen: a) Vorteil ist die Ressourcennutzung: Auf dem NWAS werden nur während der Bearbeitung eines Requests Ressourcen beansprucht. Sofortiges Verwerfen des Applikationskontext nach Absenden der Response vermeidet unnötige Speicherbelegung durch zahlreiche "flüchtige" Internetuser. Stateless Programmierung führt somit zu einer guten Skalierung des Servers und ist für Web- Anwendungen (viele "flüchtige" Anwender) gut geeignet. b) Nachteilig ist die hohe Zahl von Datenbankzugriffen. Daten müssen ständig neu beschafft werden: Daten, die mehrere BSPs innerhalb einer BSP-Anwendung benötigen, müssen mehrfach von der DB gelesen werden. Dies führt zu einer höheren Last auf der DB und zu Laufzeitverlängerungen gegenüber dem Stateful-Zustandsmodell. Es bestehen jedoch Lösungen diesen Nachteil zu umgehen (s.u.) Für Applikationen, die keine Statusdaten brauchen, ist stateless (Default) sinnvoller, da nicht unnötig Ressourcen im SAP-System belegt werden. In den Eigenschaften einer BSP-Anwendung läßt sich festlegen, ob die gesamte Anwendung stateful oder stateless gehandhabt wird. Aber es ist auch möglich, zwischen stateful und stateless zur Laufzeit umzuschalten (gemischte BSP-Applikation). Dies wird zur LZ erreicht durch das Setzen des Attributs keep_context des Objekts runtime (Typ if_bsp_runtime). Das Umschalten ist in den Eventhandlern möglich. Typischerweise würde die Anwendung stateful geschaltet, wenn der Anwender Daten eingibt, die im weiteren Verlauf der Anwendung weiterhin benötigt werden.

5 Weitergabe von Seitenattribut-Werten innerhalb BSP 1 Wertübergabe bei impliziter + expliziter Navigation : OnInputProcessing OnInitialization Navigation Bereits behandelt... (5) Identisch für stateless und stateful Unterschiedlich für AUTO und Nicht-AUTO-Seitenattribute 2 Seitenattribut : test type string Seitenattribut test füllbar in : 1. OnInitialization 2. Layout On Initialization Layout On InputProcessing Form req. res. req. Wert in OnInputProcessing noch gefüllt und abgreifbar? Browser Browser Formular Request-Response-Zyklus = Kontextlebensdauer BSP 1... Identisch für AUTO und Nicht- AUTO-Seitenattribute Unterschiedlich für stateless und stateful Anwendungen... Bereits behandelt wurde die Übergabe von Seitenattribut-Werten aus dem Zeitpunkt OnInputProcessing an OnInitialization. Hier wurden verschiedene Arten der Navigation auf die gleiche oder eine andere BSP unterschieden. Es ging um die Wertübergabe: OnInputProcessing ( Navigation ) OnInitialization Das Verhalten hing nicht davon ab, ob die BSP-Anwendung stateful oder stateless lief. Dagegen war entscheidend, ob es sich um ein Auto-Seitenattribut oder Nicht-Auto-Seitenattribut handelte. Nun betrachten wir die Übergabe von Seitenattribut-Werten aus den Zeitpunkt OnInitialization, Layout und Formbearbeitung an OnInputProcessing. Es geht um die Wertübergabe: OnInitialization / Layout / Formular OnInputProcessing Das Verhalten hängt nicht davon ab, ob es sich um ein Auto-Seitenattribut oder Nicht-Auto- Seitenattribut handelt. Dagegen ist es entscheidend, ob die BSP-Anwendung stateful oder stateless läuft.

6 Weitergabe von Seitenattribut-Werten innerhalb BSP (6) Seitenattribut test gefüllt in: 1. OnInitialization 2. Layout 3. Form Zugriff in: OnInputProcessing Identisch für AUTO und Nicht- AUTO-Seitenattribute Unterschiedlich für stateless und stateful Anwendungen Noch gefüllt + abgreifbar in OnInputProcessing : Seitenattribut stateless stateful gefüllt in : OnInitialization nein ja Layout nein ja Form (Benutzereingabe) ja request get_form_field( ) ja Man bewegt sich in ein und derselben BSP-Seite Dennoch Seitenattribut-Werte nicht ständig verfügbar! BSP-Seitengrenzen nicht identisch mit Umfang eines Request-Response-Zyklus! In der Tabelle ist das Verhalten einer stateful- und stateless-bsp-anwendung gegenübergestellt. Wenngleich man sich ständig innerhalb einer BSP-Seite bewegt, stehen die einmal gefüllten Seitenattribut-Werte nicht ständig zur Verfügung - was eventuell der Intuition widerspricht.

7 Halten von Kontextdaten in stateless BSP- Anwendungen : Hidden Fields + Clientseitige Cookies + Serverseitige Cookies (7) HTTP ist stateless, aber : Betriebswirtschaftliche Transaktionen benötigen internen Zustand = Userkontext Abhilfe : Zustand als Parameter versteckt / gespeichert, den Serverprogramm auswertet : Korrekte Fortsetzung der Transaktion Generieren der korrekten Response 1. Unsichtbare Eingabeelemente <input type=hidden...> 2. Clientseitige Cookies 3. Serverseitige SAP-"Cookies" auf DB Ein gutes Beispiel für die Notwendigkeit, den Benutzerkontext (Zustand) aufzubewahren ist der Warenkorb eines OnlineShops: Die Auswahl des Besuchers muss im Warenkorb gespeichert bleiben, selbst wenn zwischendurch die Verbindung unterbrochen wird. Wenn der Kunde, nachdem er einige Waren aufgenommen hat, eine andere Webseite aufsucht und dann zum Onlineshop zurückkehrt, sollen alle Inhalte und Details des Warenkorbes noch vorhanden sein. Dazu müssen diese Informationen als Kontext gespeichert werden. Die Gedächtnisfreiheit von HTTP (und somit das wiederholte Einlesen von Daten) läßt sich auch in einer stateless BSP-Anwendung durch verschiedene Techniken umgehen: a) Unsichtbares Eingabeelement: Ablegen von Daten in einem HTML-Formular durch hidden fields. Diese werden über mehrere Seiten hinweg innerhalb von Forms übertragen. b) Cookies (client- und serverseitig): Das ICF bietet Methoden zum Senden und Empfangen von Cookies. Die Lebensdauer von Cookies kann bestimmt werden.

8 Hidden Fields Für Benutzer unsichtbares Weiterreichen von Formulardaten = Name-Wert-Paare über mehrere Seiten Behandlung analog zu sichtbaren Formularfeldern In BSP mit navigation set_parameter() an Folgeseite Form 13 Form Hidden field 13 (8) Web Server first.htm <form > Layout <input type = "TEXT" name = "NAME" > <input type = "HIDDEN" name = "user" value = "13" > <input type = "SUBMIT" name = "OnInputProcessing(Opt)" value = "Ab!" > </form > 13 Form 13 CASE event_id. OnInputProcessing WHEN 'Opt'. navigation set_parameter( 'user' ). navigation goto_page( 'next.htm' ). ENDCASE. next.htm Seitenattribut Auto user X... In einem HTML-Formular sind für den Anwender nicht sichtbare, versteckte HTML-Input-Felder vom Typ hidden mit zugewiesenen Werten abgelegt. Nach Versand des Formulars mittels Submit kann das versteckte Textfeld auf dem Server ausgelesen und die Information weiterverarbeitet werden. Der Inhalt versteckter Textfelder (hidden fields) wird innerhalb eines HTML-Formulars versteckt mitgesendet. Diese Informationen sind - analog zu sichtbaren INPUT-Feldern - in Name-Wert-Paaren zusammengefasst. Man nutzt dieses Verfahren, um Variablen, die auf mehreren oder allen Seiten der Anwendung benötigt werden, durchzuschleifen, dh von Seite zu Seite zu übergeben. Für eine BSP ist es irrelevant, ob Werte aus einer Form als Typ = "hidden" oder Typ = "text" beim Request mitgesendet werden. Damit die eingegebenen Daten auch in der Folgeseite verarbeitet werden können, muss in allen Fällen mit navigation set_parameter() der Wert weitergeleitet werden. Die Folgeseite muss ein gleichnamiges Auto-Seitenattribut besitzen, um den Wert entgegennehmen zu können. Mit der Technik der versteckten Felder lassen sich somit Informationen über mehrere Seiten in HTML-Formularen übertragen. Dazu muss das Name-Wert-Paar auch in den Folgeseiten wiederum als hidden field an deren Folgeseiten übertragen werden. Es ist nicht möglich, die Werte interner Tabellen auf diese Weise zu übertragen! Zum Weiterreichen derselben hidden fields über mehrere Seiten einer BSP-Anwendung sind Seitenfragmente gut geeignet. Nachteile: Es ist umständlich, die hidden fields in allen relevanten Seiten zu deklarieren. Ferner gibt es browserabhängige Größenbegrenzungen für Formularfelder. Somit eignen sich hidden fields nur für kleine Steuerungs-Kontexte.

9 Client- Cookies HTTP-Client (Browser) Request Response Request HTTP-Server (9) HTTP- Cookie : Bis zu 4 KB pro Cookie, nur Strings Maximal 300 pro Client Maximal 20 pro Server oder Domäne Von Server mit HTTP-Response gesendet Vom Client mit nächsten Request automatisch zur selben Server-URL zurückgeschickt. Lebendauer : - temporär - persisitent (mit Verfallsdatum) Data: booklist type string. OnInputProcessing request get_cookie( exporting name = 'basket' importing value = booklist ). * Cookie-Datenstring booklist in interne Tabelle überführen * Interne Tabelle = Einkaufskorb verwalten * Interne Tabelle wieder in Cookie-Datenstring booklist überführen *... response set_cookie( exporting name = 'basket' value = booklist expires = 'TUE, 30-MARCH-09 23:59:59 GMT ' ). BSP-Objekte und Methoden zum Auslesen und Übergeben von Cookies an HTTP- Strom... Keine internen Tabellen - müssten erst serialisiert werden... SS0-Tickets + SessionIDs werden als nichtpersistente Cookies geführt Lebensdauer + Gültigkeit für eine Session SSO-Cookie = MYSAPSSO2 Eigenschaften eines HTTP-Client-Cookies: Bis zu 4 KByte Textdaten werden vom Server in der angeforderten HTTP-Response eingebettet und mitgesendet. Den Inhalt des Cookies legt der Server fest. Cookies können serverseitig gesetzt und bereits im HTTP-Protokollkopf mitgeschickt werden - oder mittels des JS-Objekts document.cookie clientseitig erst beim Aufbau der HTML-Seite im Browser gesetzt werden. Die Wirkung ist dieselbe: Bei jedem folgenden Request werden die Cookie- Daten im HTTP-Protokollkopf zurück an den Server gesendet. Das Cookie enthält : 1. Die zu sichernde Information - benutzerbezogene Zustandsinformationen, z.b. fortlaufende Nummern für den Zustand einer Transaktion, oder der aktuelle Inhalt eines Warenkorbs. (Name- Wert-Paare). 2. Die Gültigkeitsdauer. 3. Die URL des Ursprungsservers (Domain). Nachteil von Client-Cookies: Da sie Teil des HTTP-Protokolls sind, können sie nur Felder vom Typ String enthalten keine internen Tabellen. Da sie bei jedem Request mitgesendet werden erzeugen Cookies auch Netzlast. Ein Cookie kann von einem Server nicht aktiv angefordert werden. Der Server sendet Cookies zum Browser. Der Client-Browser schickt den Inhalt des Cookies beim nächsten HTTP-Request zum gleichen Server automatisch wieder mit. Die Lebensdauer ist entweder a) temporär - der Browser hält den Cookie nur im Speicher, mit Ende der Browser-Session geht der Cookie verloren. Oder b) persistent - der Browser speichert das Cookie lokal in einem festgelegten Verzeichnis, so dass es in der nächsten Browser-Session wieder ausgelesen werden kann. Der Server gibt dazu dem Cookie ein Verfallsdatum (expiration date) mit, nach dessen Ablauf der Browser den Cookie nicht mehr sendet. Browsereinstellungen legen fest, ob Cookies überhaupt oder erst nach Nachfrage angenommen werden sollen. Sie lassen sich durch den Browseruser abschalten. Somit sind clientseitige Cookies kein sicheres Mittel. Clienseitige Cookies sollten also nicht als "Basisfunktionalität" einer Anwendung eingesetzt werden, sondern allenfalls als Ergänzung. Sicherlich ist es nicht sinnvoll, sensible Daten als Browser-Cookie abzulegen.

10 Client- Cookies Zahlreiche(!) weitere Methoden zur Cookie-Manipulation im Interface IF_HTTP_ENTITY (10) Importparameter von set_cookie() Name Typ Bedeutung name String Name des Cookies value String Wert des Cookies domain String Domäne der aufgerufenen Seite. Wenn nicht gesetzt, dann Hostname des sendenden Servers path String Gültiges Verzeichnis auf Server; Default = Pfad der aktuellen Seite expires String Zeitstempel, legt Ende der Lebensdauer fest. Format: Wdy, DD-Mon-YY HH:MM:SS GMT zb Tue, 30-March-09 23:59:59 GMT secure i Wert : 1 Cookie nur über HTTPS-Verbindung sendbar Wert : 0 Cookie auch über ungesicherte Verbindung sendbar Mögliche Aufrufzeitpunkte von : get_cookie: OnRequest, OnInitialization, OnInputProcessing, OnManipulation set_cookie: OnInitialization, OnManipulation Das ICF bietet in IF_HTTP_ENTITY Methoden zum Versenden und Empfangen clientseitiger Cookies. Diese Methoden stehen über die automatisch instantiierten Objekte request und response zur Vfg. Man kann einen beliebigen String im Cookie ablegen. Die Lebensdauer des Cookies ist durch einen Zeitstempel steuerbar: Wenn man kein Verfallsdatum angibt, wird das Cookie beim Schließen des Browsers (Sessionende) gelöscht. Soll das Cookie auf dem Client abgelegt werden, dann muss dem Cookie in der Methode set_cookie() ein Verfallsdatum mitgegeben werden. Cookies mit abgelaufenem Verfallsdatum werden nicht mehr an den Server gesendet. Vom WAS aus können clientseitige Cookies gelöscht werden. Dazu sendet man das Cookie erneut an den Client, datiert das Verfallsdatum jedoch in die Vergangenheit. Das Pfad-Attribut beschränkt das Cookie auf bestimmte Server-URLs. Der Wert '/' drückt aus, das das Cookie für alle URLs auf dem Server gültig ist. Weitere mögliche Werte sind z.b. runtime- >runtime_url oder runtime->page_url. Die Klasse CL_BSP_UTILITY verfügt über die statsiche Methode data_to_string_http, mit der sich ein Zeitstempel im gewünschten Format erzeugen lässt: Data: ts TYPE bsptimestamp, tss(14) TYPE c. ts-date = sy-datum. ts-time = sy-uzeit. tss = ts. Cl_BSP_UTILITY date_to_string_http( timestamp = tss ). Die Objekte request und response stehen mit ihren Methoden nur zu den angegebenen Zeitpunkten zur Vfg. Zu anderen Zeitpunkten kann man sich die aktuellen Instanz-Referenzen über die Referenz page der aktuellen BSP-Seitenklasse beschaffen: Data: response TYPE REF TO if_http_resonse, request TYPE REF TO if_http_request. response = page get_response( ). request = page get_request( ).

11 Cookies auf Server : Serverseitige SAP-Cookies (11) Request Response Request DB Serverseitiges Cookie : Speichern von Kontext in stateless- Anwendungen HTTP-Client (Browser) WAS Server-Cookie : - Speichern von Zustandsdaten, Kontext in DB-Tabelle sscookie - Beliebige Typen und Mengen Einzelwerte, Strukturen, ganze Tabellen - Lebensdauerkonzept - Zugriff durch statische Methoden der Klasse CL_BSP_SERVER_SIDE_COOKIE Vorteil : Ergebnisse komplexer Selects für direkten Wiederzugriff abgelegt Standardprogramme : BSP_SHOW_SERVER_COOKIES BSP_CLEAN_UP_SERVER_COOKIES : zeigt alle Server-Cookies an : löscht alle abgelaufenen Server-Cookies Serverseitigen SAP-Cookies: Serverseitige Cookies sind persistente Daten (Felder, Strukturen, ganze Tabellen) und werden in der DB des Systems abgelegt. Somit ist das Setzen und Lesen eines Server-Cookies ein DB-Zugriff. Sie werden nicht zwischen Client und Server hin und her transferiert. Es existiert ein Verfallszeitmechanismus. Ihr Vorteil: Man kann beliebig viele anlegen und sie haben unbegrenzte Größe. Anwendungsdaten werden in oft komplexen select-anweisungen aus mehreren DB-Tabellen zusammengestellt. Indem man die einmal in einer internen Tabelle gesammelten Daten in Form eines serverseitigen Cookies auf der DB ablegt... vermeidet man wiederholte komplexe Select-Anweisungen, und greift stattdessen die gewünschten Daten in einem einfacheren Zugriff ab. beschränkt man den DB-Zugriff auf die gewünschte Menge. Somit kann der Einsatz von Server-Cookies die Performanz steigern. Die Klasse CL_BSP_SERVER_SIDE_COOKIE stellt Methoden zum Arbeiten mit serverseitigen Cookies zur Vfg. Folgende Standardprogramme sind hilfreich: BSP_SHOW_SERVER_COOKIES : zeigt alle Server-Cookies an BSP_CLEAN_UP_SERVER_COOKIES : löscht alle abgelaufenen Server-Cookies Sollte als periodischer Batch-Job vom WAS-Admin eingeplant werden, da Server-Cookies, deren Verfallszeit abgelaufen ist, nicht automatisch gelöscht werden. Das Programm besteht nur aus einer Zeile: delete from sscookie where expiryd lt sy-datum. Jedoch wird beim Auslesen ein serverseitiges Cookie automatisch aus DB gelöscht. Soll es erhalten bleiben, muss es sofort im Anschluss an den Lesevorgang wieder auf die DB geschrieben werden. Die Verfallszeit kann in Sekunden oder Tagen angegeben werden.

12 SAP-Server-Cookies : CL_BSP_SERVER_SIDE_COOKIE * Server-Cookie Schreiben : Cl_BSP_SERVER_SIDE_COOKIE set_server_cookie ( exporting name = 'booklist' application_namespace = runtime application_namespace application_name = runtime application_name username = sy-uname session_id = runtime session_id data_name = 'it_book_data' data_value = it_book_data expiry_time_rel = 3600 ). (12) Server-Cookie hier angelegt für : - aktuellen User, - aktuelle Anwendung - aktuelle Session Nur für diese später auch zugreifbar... Server-Cookie auch unabhängig von bestimmter Anwendung, Session, User speicherbar In diesem Fall: application_namespace = 'NONE' application_name = 'NONE' username = 'NONE' session_id = 'NONE' Anwendungsname und Session-ID als Attribute des globalem Objekt runtime in allen Eventhandlern und Layout zur Vfg. Die Methodenparameter von set_server_cookie() und ihre Bedeutung: name Beliebiger Name des Cookies als String username Beleibiger Benutzername als String, muss nicht mit sy-uname übereinstimmen data_name Datenname als String muss identisch mit 'data_value' sein data_value Dateninhalte beliebigen Typs, auch interne Tabellen expiry_time_rel Relative Lebensdauer in Sekunden als Integer expiry_date_rel Relative Lebensdauer in Tagen als Integer expiry_time_abs Absolute Lebensdauer als Zeitfeld vom Typ T expiry_date_abs Absolute Lebensdauer als Datumsfeld vom Typ D Mit den Parametern data_value und data_name werden zu sichernder Datenobjektinhalt und Datenobjektname festgelegt. Dies ist notwending, wel die Cookie-Daten in einer generischen Clustertabelle auf der DB gespeichert werden. Zur endeutigen Identifizierung eines Server-Cookies sind die Session-ID sowie Benutzer- und Anwendungsname geeignet. Diese Werte stehen als Attribute des automatisch instantiierten Objekts runtime zur Vfg. Man kann ein Server-Cookie auch Anwendungs-, Session- und Benutzer-unabhängig ablegen! In diesem Fall würde man den Parametern: application_namespace application_name username session_id einfach zb als Default den String-Wert 'NONE' zuweisen. Auf Server-Cookies deren Vefallszeit abgelaufen ist, kann nicht mehr zugegriffen werden. Sie werden jedoch nicht automatisch aus der DB gelöscht.

13 SAP-Server-Cookies : CL_BSP_SERVER_SIDE_COOKIE (13) * Server-Cookie Lesen Data: ex_d type SYDATE. Data: ex_t type SYTIME. Cl_BSP_SERVER_SIDE_COOKIE get_server_cookie ( exporting name = 'booklist' application_namespace = runtime application_namespace application_name = runtime application_name username = sy-uname session_id = runtime session_id data_name = 'bookshop_data' importing expiry_date = ex_d expiry_time = ex_t changing data_value = it_book_data ). Alle Parameter außer Lebensdauer sind auch beim Auslesen mitzugeben... * Server-Cookie Löschen - unahängig von Lebensdauer Cl_BSP_SERVER_SIDE_COOKIE delete_server_cookie (... ). Alle Parameter (außer der Lebensdauer) müssen auch beim Lesen wieder mitgegeben werden, damit das richtige Cookie gefunden wird. Die Methode get_server_cookie() liefert auserdem die Lebensdauer des Server-Cookies zurück, und zwar als Datums- oder Zeitfeld in Form der SAP-Dictionary-Datentypen SYDATE und SYTIME. Es existiert eine eigene Methode delete_server_cookie(), um das Cookie manuell (unabhängig von seiner Lebensdauer) aus der DB zu löschen: Cl_BSP_SERVER_SIDE_COOKIE delete_server_cookie ( exporting name = 'booklist" application_namespace = runtime application_namespace application_name = runtime application_name username = sy-uname session_id = runtime session_id ). Anmerkung: Der Hauptspeicher des NWAS scheidet zum Zwischenspeichern von Sitzungs-daten aus, da die Session bei jedem Request auf einer anderen Maschine bearbeitet werden kann, falls es sich um ein SAP-System aus mehreren WAS handelt. Die Verteilung des Speicherinhalts auf alle Applikationsserver wäre zu aufwendig.

14 Datenhaltung bei Stateless-Anwendungen Quelle: [WOLF03] (14) via Netzwerk via Datenbank Hidden Field, set_parameter() - Begrenzte Datenmenge - Benötigt keine DB-Zugriffe - Belastet das Netzwerk Client-Cookie - Begrenzte Zahl und Datenmenge - Vom Browser-User abschaltbar - Benötigt keine DB-Zugriffe - Belastet das Netzwerk Server-Cookie + DB-Ablage - Unbegrenzte Datenmenge - Schont das Netzwerk - Belastet die DB-Performanz - Belegt DB-Speicher - Regelmäßiges "Säubern" nötig Stateful oder Stateless : Sehr grosse Zahl gleichzeitiger User stateless Komplexere Anwendung, wenige User, aufwendige DB-Zugriffe stateful Auch - oder gerade - in stateless Applikationen stellt sich die Frage, wie trotz Verlustes des Anwendungskontextes nach jedem Request, z.b. Benutzereingaben über mehrere Requests hinweg gerettet werden können. Hierzu ist entsprechende Funktionalität zu programmieren. Es gibt zwei Verfahrensgruppen - Verwendung des Netzwerks bzw der Datenbank. Je kleiner die zu haltende Datenmenge (bis zu wenigen kb), desto effizienter ist die Netzwerk- Lösung. Wird die bei jeder Benutzeraktion über das Netz zu übertragende Datenmenge größer, resultieren jedoch schnell nicht mehr akzeptable Antwortzeiten. Die Datenbank hat den Vorteil, dass in ihr auch grosse Datenmengen verarbeitet werden können. Allerdings ist die Datenbank der "bottleneck" des SAP-Systems. Daumenregel: stateful oder stateless? Als Daumenregel gilt, daß Internetszenarien, die von einer potenziell sehr großen Anzahl Benutzer gleichzeitig genutzt werden, eher stateless arbeiten sollten. Komplexere Anwendungen, die von einer begrenzten Anzahl Benutzer parallel eingesetzt werden und die über einem teurer zu ermittelnden Datenbestand operieren, bieten sich eher für das stateful Programmieren an. Stateless BSP-Applikation blockieren nur dann Server-Ressourcen, solange ein einzelner Request bearbeitet wird. Nach Abarbeitung des Requests werden alle Ressourcen an das System zurückgegeben und für andere Requests eingesetzt. Stateless Applikation erlauben somit aus Sicht der Ressource "Speicher" eine optimale Skalierung. Andererseits kann das Freigeben des Anwendungskontext nach jedem Request erfordern, dieselben Daten mehrfach aus der Datenbank zu lesen und aufzubereiten. Somit wird die Einsparung an Speicher durch Laufzeit-Einbußen möglicherweise kompensiert. Dies ist von Fall zu Fall genau zu analysieren und zu beurteilen.

15 Zustände BSP-Anwendung 1 stateful 2 Zeit (15) stateless 1 Webbrowser 1 Internet Webbrowser WAS Quelle: Heinemann, Rau 2005 Stateful : Seiten-Objekt bleibt erhalten OnCreate nur einmal durchlaufen! OnDestroy gar nicht! Die Aufrufabfolge der Event-Handler ist abhängig vom Zustandmodell der BSP-Applikation bzw. - Seite, da sich der Aufruf der Events nach der Lebenszeit des BSP-Seitenobjekts richtet. Stateless-Modell: Bei der Bearbeitung eines Request überprüft die BSP-Laufzeit, ob für die angeforderte Seite bereits ein Seitenobjekt existiert. Falls kein Seitenobjekt existiert, wird der OnCreate-Handler aufgerufen und durchlaufen und für die Seite ein Seitenobjekt erzeugt. Auto- Seitenattribute werden übernommen, so dass sie der Seite zur Vfg stehen. Es folgt OnRequest. Falls eine Benutzeraktion voranging, wird OnInputProcessing angestoßen. Dessen Programmcode kann auf eine andere Seite navigieren oder auf der Seite verbleiben. Im ersten Fall wird der OnDestroy-Handler aufgerufen und das Seitenobjekt zerstört. Daraufhin beginnt der Zyklus für die annavigierte Seite von Neuem. Im zweiten Fall würde OnInitialization derselben Seite aufgerufen. Im Anschluss erfolgt das Zusammenführen statischen Layout-HTMLs und dynamischen ABAP-Layout-Codes und die Einbettung in einen HTTP-Datenstrom im OnLayout-Handler. Danach wird OnManipulation aufgerufen; hierin kann der Datenstrom noch verändert werden. Daraufhin wird OnDestroy angestoßen und das Seitenobjekt gelöscht. In OnDestroy bietet es sich im stateless-fall an, Zustandsdaten zu sichern. Abschließend wird der HTTP-Datenstrom an den Client geschickt. Das Statefull-Modell unterscheidet sich im Ablauf der Handler vom Stateless-Modell nur bezüglich des OnCreate- und OnDestroy-Events. Im Statefull-Modell bleiben die Seitenobjekte einer BSP- Applikation für die gesamte Dauer der BSP-Session erhalten. Daher wird OnCreate für jede BSP-Seite nur einmal ausgeführt. Das Event OnDestroy wird im Stateful-Fall überhaupt nicht prozessiert, da während einer Stateful- Session keine Seitenobjekte zerstört werden.

16 Online Text Repository OTR : Internationalisierung (16) Ziel: OTR: Anwendung in mehreren Sprachen (sprachunabhängig) Zentrale paketspezifische Textablage + Dienste zur Texterfassung und Übersetzung OTR-Tags im BSP-Layout verwendbar Textarten : 1. Kurztexte (Aliastexte): Unter Aliasnamen paketweit ansprechbar <%=OTR( Aliasname )%> 2. Langtexte: Direkt in OTR-Tags eingeschlossen <%@page language = "abap" %> <html> <head> <title> OTR-Texte </title> </head> <body> <otr> Dieser Text ist lang und kommt nur einmal vor. Deshalb im OTR als Langtext abgelegt </otr> <center> <%=otr( zbsptest/gruss ) %> </center> </body> </html> Paketname immer Teil des Aliasnamens! <OTR>... </OTR> Alle BSP-Seiten und Seitenfragmente können auf alle OTR-Texte des Pakets zugreifen... Pflege der OTR-Texte : a) Kurztexte aus Layout durch Doppelklick auf OTR-Referenz (Vorwärtsnavigation ins Pflegebild für OTR-Texte) b) durch Menü Springen OTR Browser c) durch Direkteinstieg in TA SOTR_EDIT Übersetzung der OTR-Texte : Springen Übersetzung OTR Kurztexte / Langtexte Weitere Infos in [WOLF03] Das OTR ist die zentrale Textablage. Im BSP-Layout können OTR-Direktiven eingesetzt werden. OTR-Objekte sind einem Paket zugeordnet und werden in Transportaufträge aufgenommen. Damit eine BSP-Anwendung in mehreren Sprachen zur Vfg steht, sollte man im Layout alle übersetzungsrelevanten Teile als OTR-Texte angeben. (Übersetzung in TA SE63). Es werden Langtexte und Kurztexte unterschieden, wobei die absolute Länge des abgelegten Textes nicht wesentliches Untescheidungsmerkmal ist. Wichtiger ist die Häufigkeit des Vorkommens: Kommt ein Text nur einmal in einer BSP-Anwendung vor, dann wird der Text als Langtext im OTR abgelegt. Man legt einen Langtext an, indem man im Layout der BSP den Text selbst zwischen die Tags <OTR>... </OTR> schreibt und die Seite aktiviert. Dadurch wird der Text automatisch ins OTR eingetragen. Langtexte stehen für sich selbst, dh sind nicht über einen Aliasnamen oder Schlüssel erreichbar. Wird dagegen ein Text häufig gebraucht, wird der Text unter einem Aliasnamen als Kurztext im OTR abgelegt. Über diesen Aliasnamen ist dieser Text paketweit ansprechbar und somit wiederverwendbar. Die Übersetzung muss nur einmal erfolgen. Das Anlegen von Kurztexten erfolgt durch Schreiben des Tags <%=OTR(Aliasname)%> und Doppelklick auf den Aliasnamen. Auf einem Bildschirmbild kann man den Aliasnamen, die maximale Textlänge und den Text pflegen. Der Aliasname beginnt immer mit dem Namen des zugeordneten Pakets. Um Texte zu übersetzen, muss durch das Menü Springen Übersetzung OTR Langtext in die Übersetzung verzweigt werden. Man erhält einen Überblick über alle dem Paket zugeordneten OTR-Texte im OTR-Browser, erreichbar durch das BSP-Layout-Menü Springen OTR Browser. Im OTR wird auch ein Kontext zu jedem OTR-Objekt (Ersteller, Datum,...) gespeichert.

17 OTR Notation <%=otr( aliasname )%> nur im Layout-Bereich anwendbar. Jedoch auch in Eventhandlern und Anwendungsklasse Zugriff auf Kurztexte mittels runtime-objekt oder Klasse CL_BSP_GET_TEXT_BY_ALIAS : (17) DATA: alias TYPE STRING, text TYPE STRING. alias = ' zbsptest/gruss '. text = runtime get_otr_text( alias ). CL_BSP_GET_TEXT_BY_ALIAS get_text ( exporting language = 'EN' alias = alias importing alias_text = text ). OTR-Texte können in Übersetzungsvarianten unterschiedliche Länge aufweisen Abschneiden überschüssiger Leerzeichen im Layout durch BSP-Seitendirektive : <%@page language="abap" otrtrim="true" %> Die OTR-Referenz <%=otr( aliasname )%> wird intern in einen Methoden-aufruf der runtime-instanz aufgelöst. Der Methodenaufruf cl_bsp-runtime=>get_otr_text() kann auch in den Eventhandlern und der Anwendungsklasse erfolgen - aber auch in Reports und konventionellen ABAP-Programmen außerhalb der BSP-Programmierung. Vertiefung siehe [WOLF03]. Eine Anwendungsmöglichkeit ist die sprachunabhängige Hinterlegung von Fehlermeldungen, die beim Prozessieren der Eventhandler erzeugt werden - oder die Wiederverwendung von Texten auch innerhalb derselben Sprache. OTR-Texte werden auf dem WAS gepuffert - dies macht den Zugriff schnell. Durch das Systemkommando /$otr kann der OTR-Puffer manuelle zurückgesetzt werden, wenn Textänderungen vorgenommen worden sind. Auch mittels der Klasse CL_BSP_GET_TEXT_BY_ALIAS kann auf OTR-Texte zugegriffen werden. Die Klasse hat nur eine statische Methode get_text(). Hier kann auch die gewünschte Sprache als Parameter übergeben werden. Somit können auch Texte in Sprachen verwendet werden, die nicht der Anmeldesprache des Benutzers entsprechen. Damit eine BSP in der gewünschten Sprache angezeigt wird, muss diese Sprache im benutzten Service hinterlegt sein. Dazu werden in der TA SICF Alias-Services eingerichtet. OTR-Texte können Parameter beinhalten. Hierzu wird der Platzhalter für den Parameter durch das & eingeschlossen. Nur Buchstaben, Ziffern und Unterstrich sind erlaubt. Zur Laufzeit wird dann der benannte Platzhalter durch einen Wert (zb Seitenattribut) ersetzt. Wenn man einen OTR-String anlegt und in verschiedene Sprachen übersetzt, so wird die Länge der übersetzten Strings in der Regel in den verschiedenen Sprachen unterschiedlich sein. Ein langer OTR-String könnte sehr kurze Übersetzungen besitzen. Allerdings wird mit dem String in allen seinen Übersetzungen durch das OTR-System stets nur die Länge des Orginal-Strings gespeichert - und liefert somit eventuell OTR-Strings mit überschüssigen Spaces zurück, so dass HTML-Darstellungen unschön verbreitert sind. Die o.a. BSP-Seitendirektive sorgt dafür, dass aus jedem in die Seite eingefügten OTR-Strings überflüssige Spaces entfernt werden.

18 Timeout-Situationen : 1. Session-Timeout Session-Timeout und Processing-Timeout (18) HTTP Server kann nur passiv auf eingehende Client-Requests reagieren. Server merkt nicht, wenn Client abspringt (Browser schliesst, wegnavigiert, untätig ist) Bindet kritische Ressourcen (Status) auf dem Server Inaktive Sessions nach vorkonfigurierter idle time vom ICM abgeräumt! Rollback, Sperren(!) + Ressourcen freigeben, Session gelöscht Maximum idle time : Konfiguriert in Systemprofil-Parameter rdisp/plugin_auto_logout Default : 30 Minuten Gilt stets für gesamten WAS und alle BSP-Anwendungen, nicht für einzelne BSP- Anwendungen verlängerbar, jedoch in SICF verkürzbar Client-Browser bekommt timeout allerdings nicht mit, nicht vom Server darüber informierbar. Erst bei nächsten Roundtrip tritt Fehler wegen inaktiver Session auf. Benutzer-Info mittels Workaround : Nach idle time Browser-Fenster via Skript löschen: <script> var T = 31 /*min*/ * 60 * 1000; /*ms*/ window.settimeout( "document.url = 'about:blank' ;", T ) ; </script> Der Session-Timeout bezieht sich auf das Browser-Verhalten: Wenn sich Browser nach Ablauf dieser Zeit nicht mehr meldet wird der Kontext verworfen HTTP ist ein striktes Request/Response-Protokoll; der Server kann nur auf einen Browser-Request hin tätig werden. Der Server kann nicht beim Browser "nachfragen": "Bist du noch da". Er kann höchstens für sich einen internen Timeout setzen und nach dessen Ablauf die Verbindung schliessen. Der Server kann dem Browser zu keinen Zeiten "zwischendurch" Informationen zukommen lassen. Somit kann der Browser auch nicht über eingetretene Session-Timeouts informiert werden. Die Session wird einfach beendet, ohne dass im Browser-Fenster etwas darauf hindeutet. Wenn der User später an seinen Arbeitsplatz zurückkehrt, so sieht er im Browser weiterhin die offene scheinbar noch laufende BSP-Anwendung. Erst bei der nächsten Interaktion tritt ein Fehler auf und der User bemerkt die verlorene Session. Als Hilfe für den User dient das clientseitige JavaScript, das in jede Seite der BSP-Anwendung einzubauen wäre. Solange der User mit der BSP-Anwendung interagiert setzt sich jede neu geladene Seite einen neu initialisiereten Timer. Im Skript gehen wir von einer Server-idle time von 30 Minuten aus. Sollte der User den Browser länger als 31 Minuten nicht bedienen (keine neuen Seiten anfordern) so wird der Brower-Screen gelöscht - und der User bemerkt auf diese Weise, dass die Session serverseitig beendet wurde. Es ist möglich, den Server darüber zu informieren, dass der Browser die BSP-Anwendung verlässt (wegnavigiert oder geschlossen wird), indem das onunload-javascript-event der Seiten verwendet wird und eine JavaScript-Funktion appunload() implementiert wird. Diese wird beim Eintreten von onunload augerufen. Für Details der Lösung (Verwendung von Framesets) verweisen wir auf [MCKE06], S.125ff.

19 Timeout-Situationen : Session-Timeout und Processing-Timeout 2. Processing-Timeout Maximale Prozessdauer für Bearbeitung HTTP-Request durch ABAP-Stack auf Server Bei Überschreiten wird ABAP-Session + BSP-Anwendung abgebrochen (19) Fehlermeldung 500 Connection timed out an Browser In ICM-Verwaltung SMICM eingesehbar : Wird pro offenem HTTP-Port eingestellt Konfigurierbar in Systemprofil-Parameter: icm/server_port Ermöglichen längerer Prozessdauern : Neuen HTTP- Port in SMICM definieren mit längerer maximaler Prozessdauer : Springen Services und dort Service Anlegen Verfügbar nach Neustart NWAS Der "Connection Timeout" ist die Folge eines Überschreitens der maximalen Prozessdauer. Er drückt aus, dass die Verbindung zwischen ICM und ABAP-Stack eine Zeitüberschreitung erfahren hat. Die Fehlermeldung hat nichts zu tun mit einem Session-Timeout (idle timeout). Länger als dieses Zeitintervall darf die Request-Bearbeitung durch die WAS-Workprozesse nicht dauern, sonst wird die Bearbeitung abgebrochen und der User erhält eine Fehlerseite. Wenn dieses Zeit zu knapp eingestellt ist, dann kann nicht mehr richtig debuggt werden, da die Dauer des Debugs einfliesst. In Produktivsystemen ist die maximale Prozessdauer meist auf relativ kleine Werte gesetzt, so dass Workprozesse nicht lange blockiert werden können. Nachteilig kann sein, dass Debuggen von BSP- Anwendungen nicht mehr funktioniert, da der Debug-Vorgang in die Prozessdauer eingeht. Abhilfe schafft das Anlegen eines weiteren HTTP-Ports mit längerer maximaler Prozessdauer. Die URL (Port-Nummer) der BSP-Anwendung muss im Browser entsprechend geändert werden, damit sie beim Aufruf über den neuen Port läuft. Anmerkung: Die keep-alive Zeit (sichtbar in TA SMICM) legt gemäß HTTP1.1 die Zeit in Sekunden fest, die der ICM eine untätige TCP-Verbindung offen hält (und auf einen Browser-Request) wartet, ehe er sie schliesst. Die Wiederverwendung von TCP-Verbindungen verbessert das Antwortverhalten bei HTTP-Requests, da keine erneuten Roundtrips zwischen Browser und Server nötig sind, um eine neue TCP-Verbindung aufzusetzen. Allerdings ist die maximale Zahl gleichzeitig offener TCP- Verbindungen des Servers begrenzt. Deshalb werden nicht verwendete TCP-Verbindungen nach einigen Sekunden idle time geschlossen. Die Profil-Parameter des ICM können in der TA SICM eingesehen werden durch Aufruf des Memüpunkts Springen Parameter Anzeigen. Hier finden sich auch die Einstellungen für maximale Zeitdauern

20 LZ- Fehler-Behandlung (20) Historische BSP Error Pages seit 6.40 inaktiv! BSP Runtime setzt TRY / CATCH um jeden Seitenaufruf. Wenn beim Prozessieren der BSP LZ-Exception auftritt wird Kontrolle an Fehlerseite übergeben Problem : Auch die Fehlerseite ist eine BSP! Nicht sinnvoll bei Schiefstand im BSP-Framework! Neues Konzept ab 6.40 : Wenn Exception auftritt, wird BSP-Framework sofort verlassen + ICF übernimmt Kontrolle ICF-Klasse CL_HTTP_EXT_BSP fängt Fehler aus BSP-Anwendungen + erzeugt generische HTML-Fehlerseite mittels Methode REPORT_ERROR_HTML. Ausprobieren in BSP z.b. mit : <% data: result type i. result = 1 / 0. % > Durch das Konzept der BSP Fehlerseiten konnten in jeder BSP-Anwendung eine oder mehrere BSP-Seiten als Fehlerseiten ausgewiesen werden. Dies geschah einfach durch Setzen eines Eintrags auf der Eigenschaftenseite. Problematisch daran ist, dass es sich bei der Fehlerseite selbst auch um eine BSP handelt. Tritt ein Fehler auf, so startet die Fehlerseite in der fehlerbehafteten Umgebung der Orginal-BSP. Die Fehlerseite hat keine Information darüber, was von der Orginal-BSP bereits in das HTTP response-objekt geschrieben wurde und somit Teil der erzeugten Antwort ist, die an den Client geht. Zudem könnte auch der gesamte BSP-Stack selbst in einem fragwürdigen Zustand sein. Schlimmstenfalls könnte die Fehlerseite selbst einen Fehler auslösen, während sie auf den Fehler der Original-BSP eingeht. Aufgrund dieser Problematik hat SAP ab NWAS 6.40 den Support für das Fehlerseiten-Konzept eingestellt: Alle Fehlerseiten-Einträge auf BSP-Eigenschaftsseiten werden seitdem einfach von der BSP-Laufzeit ignoriert. Allerdings wurde sofort ein neues Konzept ausgeliefert, das BSP-Anwender auch customizen können: Wenn eine LZ-Exception auftritt, so wird das BSP-Framework komplett verlassen und das ICF übernimmt die Kontrolle mit eingestellten Fehlerklassen. Die automatisch erzeugten generischen Fehlerseiten decken die meisten LZ-Fehler-Situationen ab und liefern viele Diagnose-Informationen. Konfigurations-Möglichkeiten: In DB-Tabelle BSPERRHANDLER kann eine andere Fehler-Klasse und ihre Methode hinterlegt werden, die im LZ-Fehlerfall gerufen wird. Mittels Wildcards (*) in der angegebenen URL kann eine Fehlerklasse für eine Gesamtheit von BSP-Anwendungen vorgesehen werden. Die Klasse CL_BSP_ERRHANDLER_SAMPLE enthält ein SAP-Beispiel für eine selbstgeschriebene Fehlerklasse und ihre Methode REPORT_ERROR_HTML. Die Klassen CL_BSP_ERRHANDLER und CL_HTTP_EXT_BSP können als Kopiervorlagen für eigene Fehlerklassen dienen. Man befindet sich dabei jedoch nicht mehr innerhalb des BSP-Frameworks. Somit können BSP Extensions und HTMLB nicht eingesetzt werden! Es ist ein HTML-String zusammenzustellen und dem ICF-response-Objekt zu übergeben: response append_cdata( html ).

21 Fehler-Behandlung Fehlermeldungen erzeugen + verwalten (21) ICF-Klasse CL_BSP_MESSAGES erlaubt Speichern + Abfragen von Meldungen Referenz darauf durch message-attribut des page-objekts: page messages Methoden zum Verwalten selbstverfasster Meldungen aufgrund eigener Prüfungen : page messages add_message( condition = ' feldname' message = ' Hier der erläuternde Text ' severity = 1 ). if page messages num_messages( ) is not initial. data: feldname type string. data: msgtext type string. data: sev type i. page messages get_message ( exporting index = 1 importing condition = feldname mesagge = text severity = sev ). endif. page messages delete_message( condition = 'feldname' ). page messages reset( ). Bedeutung der Parameter condition : Feldname, dem der Fehler zuzuordnen ist message : Beschreibender Meldungstext severity (optional) : Fehlerschwere (default = Error) Durch eigene Prüfungen innerhalb der Anwendung können Fehlersituationen unterschied-licher Schwere bemerkt werden. Die zugehörige Information kann mit einem Fehlertext, einer Fehlerstufe und der Nennung eines zugehörigen Feldnamens (dessen Werte für den Fehler verantwortlich sind) übersichtlich verwaltet werden. Dazu werden einem message-objekt Informationen übergeben. Ein message-objekt der Klasse CL_BSP_MESSAGES steht als Attribut messages des automatisch erzeugten page-objekts zur Verfügung. Es ist möglich, dass mehrere Formularfelder auf einer BSP fehlerhaft sind. In diesem Fall sollte (ähnlich wie bei der Dynpro-Verarbeitung) immer nur die erste Fehlermeldung ausgegeben werden. Durch den Aufruf der Methode num_messages() kann überprüft werden, ob überhaupt ein Fehler aufgetreten ist. Eventuell ist es sinnvoll, entsprechende Methoden in der Applikationsklasse zu kapseln. Die Klasse CL_BSP_MESSAGES enthält konstante Attribute, durch die die Fehlerschwere (Fehlersufen / severity) als Integer codiert werden kann. Die Fehlerschwere ist ein Kennzeichen, durch das entschieden werden kann, ob nur eine Warnung ausgegeben werden oder aber die vielleicht die gesamte BSP-Anwendung abgebrochen werden soll: CO_SEVERITY_ERROR Fehlerstufe: Fehler CO_SEVERITY_FATAL_ERROR Fehlerstufe: Fataler Fehler CO_SEVERITY_INFO Fehlerstufe: Nur eine Information CO_SEVERITY_SUCCESS Fehlerstufe: Erfolgsmeldung CO_SEVERITY_WARNING Fehlerstufe: Nur eine Warnung

22 Einstellung Anmeldedialog (22) In SICF ist für einen Service das Anmeldeverhalten der Anwendung einstellbar über: Fehlerseiten Anmeldefehler Systemanmeldung Konfiguration Definition service-spezifischer Einstellungen möglich, die von globalen Einstellungen abweichen Mittels Aliases kann sogar für eine Anwendung eine Vielzahl unterschiedlicher Anmeldes-creens hinterlegt werden dies ist insbesondere dann nützlich, wenn man verschiedene interne und externe Zugänge zu einer Anwendung unterstützen möchte. Insbesondere können Mandant und Anmeldesprache bereits hinterlegt werden. Das Look & Feel der Anmeldeseite kann eingestellt werden, indem man auf SAP-Vorlagen zurückgreift. Es ist jedoch sogar möglich, ein benutzerspezifisches Layout und Ablauf der Anmeldung zu hinterlegen, indem man eine ABAP-OO-Klasse hinterlegt, die von der Klasse CL_ICF_SYSTEM_LOGIN erbt. Als Kopiervorlage oder anpassbares Beispiel liefert SAP dazu die Klasse CL_ICF_EXAMPLE01_LOGIN aus.

Stateful und Stateless BSP-Anwendungen HTTP ist stateless!

Stateful und Stateless BSP-Anwendungen HTTP ist stateless! Stateful und Stateless BSP-Anwendungen HTTP ist stateless! (1) Stateful BSP-Programmierung : NWAS: stateful Anwendungskontext über Response hinaus gehalten Bei Weiterführung zvfg. User 1 Session 1 session

Mehr

Web-Programmierung mit dem Business Server Page Framework des SAP Netweaver Application Servers Abap Teil 2 Prof. Dr. H. Neuendorf

Web-Programmierung mit dem Business Server Page Framework des SAP Netweaver Application Servers Abap Teil 2 Prof. Dr. H. Neuendorf (1) Web-Programmierung mit dem Business Server Page Framework des SAP Netweaver Application Servers Abap Teil 2 Prof. Dr. H. Neuendorf herbert.neuendorf@mosbach.dhbw.de Request Skript : Mosbach WI Kontakt

Mehr

1 mysap.com und der Web Application Server 1

1 mysap.com und der Web Application Server 1 D3kjd3Di38lk323nnm xi 1 mysap.com und der Web Application Server 1 1.1 Das Zeitalter der Portale... 1 1.2 Die mysap-technologie im Detail... 3 1.3 Funktionen des SAP Web Application Server... 5 2 Die Systemarchitektur

Mehr

Grundlagen Internet-Technologien INF3171

Grundlagen Internet-Technologien INF3171 Fachbereich Informatik Informationsdienste Grundlagen Internet-Technologien INF3171 Cookies & Sessions Version 1.0 20.06.2016 aktuelles 2 Erweiterungen wir betrachten zwei Erweiterungen: Personalisierung

Mehr

Eine Untersuchung der Funktionen des Apache Wicket Webframeworks

Eine Untersuchung der Funktionen des Apache Wicket Webframeworks Eine Untersuchung der Funktionen des Apache Wicket Webframeworks Seminararbeit von Olaf Matticzk 1 15.01.2016 (c) by synaix 2016 synaix...your business as a service. Agenda 1. Einleitung 2. Webanwendungen

Mehr

APEX Datenverwaltung Wo sind die Daten gerade?

APEX Datenverwaltung Wo sind die Daten gerade? APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst Trivadis GmbH München Schlüsselworte: APEX, Sessionverwaltung, Dynamic Actions Einleitung Eine APEX-Anwendung wird erst durch zusätzliche

Mehr

10.6 Programmier-Exits für Workitems

10.6 Programmier-Exits für Workitems 10.6 Programmier-Exits für Workitems 279 10.6 Programmier-Exits für Workitems 10.6.1 Das Interface IF_SWF_IFS_WORKITEM_EXIT Am Schritt einer Workflow-Definition im Reiter»Programmier-Exits«können verschiedene

Mehr

Bedienungsanleitung Gebührendaten

Bedienungsanleitung Gebührendaten Bedienungsanleitung Gebührendaten 1 Inhaltsverzeichnis 1 Vorwort 4 2 Einführung 5 3 Webadministration 5 4 Hauptseite 6 4.1 Gespräche 6 4.2 Dashboard 6 4.3 Schnelle Erstellung 7 4.4 Passwort ändern 7 5

Mehr

Gandke & Schubert GS-SHOP : Anpassung bestehender Templates

Gandke & Schubert GS-SHOP : Anpassung bestehender Templates Seite 1 Einleitung Bei dem vorliegenden Dokument handelt es sich lediglich um eine Kurzreferenz, in der sämtliche die HTML- Templates betreffende Änderungen von GS-SHOP 2.00 kurz aufgeführt und erläutert

Mehr

2. WWW-Protokolle und -Formate

2. WWW-Protokolle und -Formate 2. WWW-Protokolle und -Formate Inhalt: HTTP, allgemeiner syntaktischer Aufbau Wichtige Methoden des HTTP-Protokolls Aufbau von Web-Applikationen unter Nutzung von HTTP, HTML, DOM XML, XML-DTD und XML-Schema

Mehr

APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst

APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst Basel Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg München Stuttgart Wien Voraussetzungen Alles hier gezeigte benötigt

Mehr

i-net HelpDesk Erste Schritte

i-net HelpDesk Erste Schritte 1 Erste Schritte... 2 1.1 Wie geht es nach dem i-net HelpDesk Setup weiter?... 2 1.2 Desktop- oder Web-Client?... 2 1.3 Starten des Programms... 2 1.4 Anmelden (Einloggen) ist zwingend notwendig... 3 1.5

Mehr

Trainingsmanagement Gutschein Management. Beschreibung

Trainingsmanagement Gutschein Management. Beschreibung Trainingsmanagement Beschreibung www.dastm.de info@dastm.de 1. Einführung... 2 2. Gutschein Funktionen... 3 2.1. Gutschein Menü... 3 2.2. Gutscheine anlegen... 4 Gutschein Kassenwirksam erfassen... 6 Gutschein

Mehr

Web-basierte Anwendungssysteme PHP Teil 2

Web-basierte Anwendungssysteme PHP Teil 2 Web-basierte Anwendungssysteme PHP Teil 2 Prof. Dr. Armin Lehmann (lehmann@e-technik.org) Fachbereich 2 Informatik und Ingenieurwissenschaften Wissen durch Praxis stärkt Seite 1 Prof. Dr. Armin Lehmann

Mehr

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. 1 In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. Zunächst stellt sich die Frage: Warum soll ich mich mit der Architektur eines DBMS beschäftigen?

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation spezielle Technik aus dem Java-Umfeld Ausführung der Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VM s Aufruf

Mehr

Überblick. Netzprogrammierung 7b. Zustand in Web Anwendungen. Zustand in HTTP HTTP ist zustandslos Zwei Interaktionen sind unabhängig voneinander

Überblick. Netzprogrammierung 7b. Zustand in Web Anwendungen. Zustand in HTTP HTTP ist zustandslos Zwei Interaktionen sind unabhängig voneinander Überblick 1. Zustand in Web Anwendungen Netzprogrammierung 7b. Zustand in Web Anwendungen Prof. Dr.-Ing. Robert Tolksdorf Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme

Mehr

Anleitung zur Fleet & Servicemanagement Evatic Schnittstelle

Anleitung zur Fleet & Servicemanagement Evatic Schnittstelle Anleitung zur Fleet & Servicemanagement Evatic Schnittstelle Seite 1 von 7 Inhaltsverzeichnis 1 Einleitung... 3 2 Hinweise zur Verbindungseinrichtung zum Evatic Server... 3 3 Konfiguration der docuform

Mehr

Session Beans & Servlet Integration. Ralf Gitzel

Session Beans & Servlet Integration. Ralf Gitzel s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Aufbau einer Stateless s Stateful s Web Client Offene Antwort von

Mehr

Unified-E Standard WebHttp Adapter

Unified-E Standard WebHttp Adapter Unified-E Standard WebHttp Adapter Version: 1.5.0.2 und höher Juli 2017 Inhalt 1 Allgemeines... 2 2 Adapter-Parameter in Unified-E... 2 3 Symbolische Adressierung... 3 3.1 ReadValues-Methode... 4 3.2 WriteValues

Mehr

mention SugarCRM Schnittstelle Anleitung

mention SugarCRM Schnittstelle Anleitung Vielen Dank für den Erwerb der mention SugarCRM Schnittstelle. Mit unserer neuen Schnittstelle können Sie kinderleicht Ihre Kunden- und Kontaktdaten aus der mention Warenwirtschaft mit Ihren Daten im Programm

Mehr

Inhaltsverzeichnis. Open-Xchange Authentication & Sessionhandling

Inhaltsverzeichnis. Open-Xchange Authentication & Sessionhandling Open-Xchange Authentication & Sessionhandling Version Date Author Changes 1.0 28.08.2006 Stephan Martin Initiale Version 1.1 29.08.2006 Marcus Klein Details Authentication via JSON 1.2 04.09.2006 Stephan

Mehr

Handy-Synchronisation Inhalt

Handy-Synchronisation Inhalt Handy-Synchronisation Inhalt 1. allgemeine Einstellungen... 2 1.1. Anlegen eines SyncAccounts... 2 1.1.1. Synchronisation über eigenen Exchange-Server... 3 1.1.2. gehostete Synchronisation... 5 1.2. Synchronisations-Einstellungen...

Mehr

Modell Bahn Verwaltung. Tutorial. Links. Min. Programm Version 0.65, März w w w. r f n e t. c h 1 / 11

Modell Bahn Verwaltung. Tutorial. Links. Min. Programm Version 0.65, März w w w. r f n e t. c h 1 / 11 Modell Bahn Verwaltung Tutorial Links Min. Programm Version 0.65, März 2015 Tutorial Version 04.01.2017 rfnet Software w w w. r f n e t. c h 1 / 11 Vorwort... 3 1 Links... 4 1.1 Einführung... 4 1.2 Link

Mehr

Geschäftsprozesse Benutzerschnittstelle

Geschäftsprozesse Benutzerschnittstelle Geschäftsprozesse Benutzerschnittstelle Prof. Dr. Volker Klingspor AW 01-30 Homepage: http://www.fh-bochum.de/fbw/personen/klingspor.html Downloads: http://www.fh-bochum.de/fbw/personen/klingspor/downloads.html

Mehr

S.M. Hartmann GmbH IT Solutions

S.M. Hartmann GmbH IT Solutions S.M. Hartmann GmbH 82008 Unterhaching Prager Straße 7 www.smhsoftware.de S.M. Hartmann GmbH IT Solutions Software für den modernen Handel SMH-Connect/400 Version V6.0 Beschreibung SMH-Connect: iseries

Mehr

Bestellsoftware ASSA ABLOY Matrix II

Bestellsoftware ASSA ABLOY Matrix II Bestellsoftware ASSA ABLOY Matrix II Installationsanleitung Inhalt Einleitung... 2 Erstinstallation... 2 Weitere Installation / Installation im Netzwerk... 3 Fehlerbehandlung... 5 Webserver nicht erreichbar...

Mehr

Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel

Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel Einführung Servlets JEE Vorlesung Teil 2 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Wiederholung Hello World Blick in die Details Servlet Programmierung Potentielle Fehler Lernziele Gruppenübung 2

Mehr

PHP und MySQL. Sicherheit und Session-Handling mit PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424

PHP und MySQL. Sicherheit und Session-Handling mit PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424 Zentrum für Informationsdienste und Hochleistungsrechnen PHP und MySQL Sicherheit und Session-Handling mit PHP Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424 (michael.kluge@tu-dresden.de)

Mehr

Outlook-Synchronisation

Outlook-Synchronisation Outlook-Synchronisation Inhalt Inhalt 2 1.Voreinstellungen 3 2. Erstabgleich 6 3.Kontaktabgleich / Ansprechpartner 9 4. Terminabgleich 13 5. E-Mail 16 6. Allgemeine Einschränkungen 17 1. Voreinstellungen

Mehr

datenlink-schnittstelle Version 1.0

datenlink-schnittstelle Version 1.0 www.datenlink.info datenlink-schnittstelle Version 1.0 Inhalt 1 Allgemeines 2 1.1 Datenaustausch... 2 1.2 Zugriffstypen... 2 2 Format der Rückgabewerte 3 2.1 HTTP-Statuscodes... 3 2.2 Rückgabewerte...

Mehr

aibrowser Ausgabe

aibrowser Ausgabe aibrowser Ausgabe 17.01.2018 Inhalt 1 Start und Menü-Balken...2 Einstellungen...3 General...3 Autologin...4 Info...5 Übergabe der Scan-Daten an den aibrowser...6 Methode 1: JavaScript Function Call...6

Mehr

2010 Ing. Punzenberger COPA-DATA GmbH. Alle Rechte vorbehalten.

2010 Ing. Punzenberger COPA-DATA GmbH. Alle Rechte vorbehalten. 2010 Ing. Punzenberger COPA-DATA GmbH Alle Rechte vorbehalten. Die Weitergabe und Vervielfältigung dieses Dokuments ist - gleich in welcher Art und Weise nur mit schriftlicher Genehmigung der Firma COPA-DATA

Mehr

2012 Windows-Client. A.1 Verbesserungen in Bezug auf Termine

2012 Windows-Client. A.1 Verbesserungen in Bezug auf Termine ANeue Funktionen im GroupWise 2012 Windows-Client A Willkommen beim GroupWise 2012 Windows-Client. Sie finden neue Funktionen, wichtige Aktualisierungen und eine verbesserte Integration in andere Collaboration-Produkte.

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

FINISS Support Team Konfiguration des Datafeed Zugriffs auf Markt Daten via FINISS

FINISS Support Team Konfiguration des Datafeed Zugriffs auf Markt Daten via FINISS FINISS Support Team support@finiss.com Konfiguration des Datafeed Zugriffs auf Markt Daten via FINISS 14. Februar 2014 Inhaltsverzeichnis: 1 InternetAnbindung... 3 2 Konfiguration... 3 2.1 Technische Konfiguration

Mehr

Programmieren 2 12 Netzwerke

Programmieren 2 12 Netzwerke Programmieren 2 12 Netzwerke Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Motivation Datenaustausch zwischen Programmen Spielstand Chat

Mehr

Script-Upgrade. Vorraussetzungen. Folgende Meldungstypen werden dabei verwendet: Vom Fahrzeug zur Zentrale. Quittungstexte vom Fahrzeug (Type 11.

Script-Upgrade. Vorraussetzungen. Folgende Meldungstypen werden dabei verwendet: Vom Fahrzeug zur Zentrale. Quittungstexte vom Fahrzeug (Type 11. Script-Upgrade An Fahrzeuge können Update-Befehle gesendet werden, die diese dazu veranlassen, Scripte und Dateien von einem Server im Internet zu laden. Diese Script-Dateien stellen normalerweise die

Mehr

Connection Pooling. Was ist das?? Unter Connection Pooling versteht man generell die Wiederverwendung physischer Datenbankverbindungen.

Connection Pooling. Was ist das?? Unter Connection Pooling versteht man generell die Wiederverwendung physischer Datenbankverbindungen. Connection Pooling Was ist das?? Unter Connection Pooling versteht man generell die Wiederverwendung physischer Datenbankverbindungen. Wo wird es eingesetzt?? Connection Pooling wird vor allem in Verbindung

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9d: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

Benutzerhandbuch (Lehrer)

Benutzerhandbuch (Lehrer) (Lehrer) Internetportal Berufsfelder erkunden Version: 2.0 Datum: 26. Februar 2015 2.2015 Seite 1 von 12 Inhaltsverzeichnis Inhaltsverzeichnis 2 Lehrer 3 Anmeldung 3 Erstmalige Anmeldung 4 Abmelden 4 Aufgaben

Mehr

SAP Open Catalog Interface WyRu Online-Shop

SAP Open Catalog Interface WyRu Online-Shop SAP Open Catalog Interface WyRu Online-Shop Team WyRu Christian Wyk / Günter Rubik SCS Bürocenter B1, A-2334 Vösendorf Internet http://www.wyru.at Copyright Dieses Dokument und die darin beschriebene Software

Mehr

Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel

Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel Einführung Servlets JEE Vorlesung Teil 2 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Wiederholung Hello World Blick in die Details Servlet Programmierung Potentielle Fehler Lernziele Gruppenübung 2

Mehr

Wie erreiche ich was?

Wie erreiche ich was? Wie erreiche ich was? Projekt: Bezeichnung: CRM Customer Relationship Management Konfiguration E-Mail Version: 4.11. Datum: 31. Juli 2014 Kurzbeschreibung: E-Mail Konten: Damit Sie die E-Mail-Funktionen

Mehr

1 Allgemein. 2 1st und 3rd Party Cookies. 2.1 Nutzung einer eigenen Track Domain

1 Allgemein. 2 1st und 3rd Party Cookies. 2.1 Nutzung einer eigenen Track Domain 1 Webtrekk Cookies Inhalt 2 1 Allgemein Cookies sind Textinformationen, die beim Besuch einer Webseite gesetzt werden können und daraufhin auf dem Gerät/Rechner des Besuchers gespeichert werden. Jedes

Mehr

Effiziente Administration Ihrer Netzwerkumgebung

Effiziente Administration Ihrer Netzwerkumgebung n ne atio n orm tione f n n ri tze onve nu Be nd K u Effiziente Administration Ihrer Netzwerkumgebung XML-WebService Schnittstelle Inhaltsverzeichnis Allgemeines 3 Web Service 3 Starten und Kontrollieren

Mehr

Zentralen -Dienst konfigurieren (AdvoluxMailService)

Zentralen  -Dienst konfigurieren (AdvoluxMailService) E-Mail in Advolux (Stand Oktober 2018 ab Version 4.1) Update von früheren Versionen von Advolux Vor dem Update auf die Version 4.1 beachten Sie bitte Folgendes: Abweichend von früheren Versionen wird der

Mehr

Gruppen Di-T14 / Mi-T25

Gruppen Di-T14 / Mi-T25 Gruppen Di-T14 / Mi-T25 Tutorübung zu Grundlagen: echnernetze und Verteilte Systeme (SS 16) Michael Schwarz Institut für Informatik Technische Universität München 27.06 / 28.06.2016 1/1 In Kapitel 3 haben

Mehr

Mit CAR4KMU zum estandard auto-gration in der Automobilindustrie

Mit CAR4KMU zum estandard auto-gration in der Automobilindustrie Mit CAR4KMU zum estandard auto-gration in der Automobilindustrie Konfiguration der Verbindungen für ein- und ausgehende Nachrichten am auto-gration Konnektor Agenda auto-gration Erfolgreich einführen auto-gration

Mehr

Betriebswirtschaftliche Standardsoftware - Made for the WEB. ESS Enterprise Solution Server. Dokumentenablage. Release 6.0 Dokumentenablage 1

Betriebswirtschaftliche Standardsoftware - Made for the WEB. ESS Enterprise Solution Server. Dokumentenablage. Release 6.0 Dokumentenablage 1 ESS Enterprise Solution Server Dokumentenablage Release 6.0 Dokumentenablage 1 Inhaltsangabe 1. Allgemeines... 3 2. Ablegen der Dokumente im ESS... 4 2.1. Voraussetzung... 4 2.1.1. Konfiguration des Browsers...

Mehr

Anleitung zur Benutzung des Admin Control Panel

Anleitung zur Benutzung des Admin Control Panel Anleitung zur Benutzung des Admin Control Panel Homepageversion 0.3.2 vom 04.10.2015 Dokumentenversion 1.0 vom 08.10.2015 1. Globale Einstellungen 2. Eine Seite bearbeiten Wie bearbeite ich eine Seite?

Mehr

Online-News Ausgabe 12, Juli 2000 Seite 56

Online-News Ausgabe 12, Juli 2000 Seite 56 5 Cookies Was ist eigentlich ein COOKIE? Man traut ihnen nicht so recht über den Weg. Angeblich können damit alle persönlichen Daten eines Internetbenutzers heimlich erkundet werden, Hacker erhalten gar

Mehr

Unterrichtseinheit 10

Unterrichtseinheit 10 Unterrichtseinheit 10 Begriffe zum Drucken unter Windows 2000 Druckgerät Das Hardwaregerät, an dem die gedruckten Dokumente entnommen werden können. Windows 2000 unterstützt folgende Druckgeräte: Lokale

Mehr

Konfiguration Agenda Anywhere

Konfiguration Agenda Anywhere Konfiguration Agenda Anywhere Bereich: IT-Lösungen - Inhaltsverzeichnis 1. Ziel 2 2. Agenda Anywhere-USB-Stick 2 2.1. Passwort ändern 2 2.2. Zugang sperren (USB-Stick verloren) 4 2.3. Benutzer-Ersatz-USB-Stick

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

Konfiguration Agenda Anywhere

Konfiguration Agenda Anywhere Konfiguration Agenda Anywhere Bereich: IT-Lösungen - Inhaltsverzeichnis 1. Ziel 2 2. Agenda Anywhere-USB-Stick 2 2.1. Passwort ändern 2 2.2. Zugang sperren (USB-Stick verloren) 4 2.3. Benutzer-Ersatz-USB-Stick

Mehr

Installationsanleitung E-Newsletter

Installationsanleitung E-Newsletter Installationsanleitung E-Newsletter Einleitung...2 Installation WebService...2 Vorbereitung Windows Server 2003, 2008, 2008 R2...2 Vorbereitung Windows Server 2012...6 PROFFIX E-Newsletter WebService installieren...

Mehr

Benutzerhandbuch. Neukirchen

Benutzerhandbuch. Neukirchen Benutzerhandbuch Neukirchen August 2015 Kontakt: Kai Hübl Lambertsberg 17 D-34626 Neukirchen kai.huebl@asneg.de 3 Contents 1 Einleitung... 5 1.1 Inhalt... 5 1.2 OpcUaWebServer... 5 1.3 Web Panel... 6 2

Mehr

JSP Direktiven. Präprozessor-Anweisungen, die in die JSP-Datei eingebettet sind und vor dem eigentlichen Übersetzungsvorgang ausgeführt JSP

JSP Direktiven. Präprozessor-Anweisungen, die in die JSP-Datei eingebettet sind und vor dem eigentlichen Übersetzungsvorgang ausgeführt JSP JSP Direktiven Präprozessor-Anweisungen, die in die JSP-Datei eingebettet sind und vor dem eigentlichen Übersetzungsvorgang ausgeführt werden JSP Vorverarbeitung JSP* entfernt / ersetzt Direktiven sammelt

Mehr

Empfang & Versand. Integrierte Funktionen

Empfang & Versand. Integrierte  Funktionen E-Mail Empfang & Versand Integrierte E-Mail Funktionen Inhalt 1. Persönliche E-Mail-Adresse... 3 1.1 Was ist die Persönliche E-Mail-Adresse?...3 1.2 Mailagent - Einstellungen...3 2. E-Mails übertragen...

Mehr

C# - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue

C# - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue C# - Einführung in die Programmiersprache Fehler abfangen Leibniz Universität IT Services Anja Aue Fehler in einem Programm Warnungen sind Hinweise auf eventuelle Fehler während der Laufzeit des Programms.

Mehr

Vivendi TEST-Datenbanken erstellen

Vivendi TEST-Datenbanken erstellen Vivendi TEST-Datenbanken erstellen Produkt(e): Kategorie: Vivendi NG, Vivendi PD, Vivendi PEP Datenbanken Version: ab 6.77 Erstellt am: 18.07.2018 Frage: Besteht die Möglichkeit TEST-Datenbanken als Kopie

Mehr

Inhalt. Nero - Verbindung zu Remote Adressen Seite 1 von 10

Inhalt. Nero - Verbindung zu Remote Adressen Seite 1 von 10 Nero - Verbindung zu Remote Adressen Seite 1 von 10 Inhalt 1. Einleitung... 2 2. Benützung... 3 2.1. Neue Adressen... 3 2.2. Adressen updaten... 5 3. Konfiguration... 7 3.1. Einstellungen in Nero... 7

Mehr

Grundlagen Internet-Technologien INF3171

Grundlagen Internet-Technologien INF3171 Grundlagen Internet-Technologien INF3171 ekaay AJAX Version 1.0 01.07.2013 aktuelles 2 Ajax: zunächst Abkürzung für Asynchronous JavaScript And XML Jesse J. Garrett (AdaptivePath) http://www.adaptivepath.com/publications/essays/archives/

Mehr

Handbuch. Aufzeichnung aller ein- und ausgehenden Dokumente in einem fortlaufenden Postbuch für Dokumentation und Recherche.

Handbuch. Aufzeichnung aller ein- und ausgehenden Dokumente in einem fortlaufenden Postbuch für Dokumentation und Recherche. Handbuch Aufzeichnung aller ein- und ausgehenden Dokumente in einem fortlaufenden Postbuch für Dokumentation und Recherche Version 1 2000-2014, Fischer Software Berlin 1. BESCHREIBUNG... 3 2. KONFIGURATION...

Mehr

Dokumente per Mail versenden V 6.6

Dokumente per Mail versenden V 6.6 Dokumente per Mail versenden V 6.6 Futura Retail Solutions AG Harburger Schloßstraße 28 D-21079 Hamburg Phone: +49 (0) 40 / 570 103-0 Fax: +49 (0) 40 / 570 103-90 info@futura4retail.com Inhaltsverzeichnis

Mehr

Benutzer-Dokumentation V

Benutzer-Dokumentation V IRM@ Benutzer-Dokumentation V 6.05.0 02.05.2008 Inhaltsverzeichnis: 1 EINLEITUNG... 3 2 ÄNDERUNGEN... 4 2.1 DURCHSETZUNG DES 4-AUGEN-PRINZIPS BEIM SIGNIEREN (LB PUNKT 14)... 4 2.2 EXPORT UND IMPORT ÜBER

Mehr

Persistente Daten verwalten mit PHP

Persistente Daten verwalten mit PHP 1 / 7 Doing Web Apps Persistente Daten verwalten mit PHP Autor: Rüdiger Marwein Letzte Änderung: 2009-04-03 Version: 0.7 Dieses Dokument darf mit Nennung des Autoren - frei vervielfältigt, verändert und

Mehr

Operator Guide. Operator-Guide 1 / 5 V0.92 / 16.jan.08

Operator Guide. Operator-Guide 1 / 5 V0.92 / 16.jan.08 Operator Guide Einleitung Diese Guide vermittelt ihnen das Operator Know How für die Gästbox. Was müssen Sie wissen bevor Sie sich an die Arbeit machen. Von welchem PC aus kann ich die Gästbox bedienen.

Mehr

T:\Dokumentationen\Asseco_BERIT\Schulung\BERIT_LIDS7_Basiskurs\Impo rt_export\beritde_lt_do_20120918_lids7.basisschulung_import_export.

T:\Dokumentationen\Asseco_BERIT\Schulung\BERIT_LIDS7_Basiskurs\Impo rt_export\beritde_lt_do_20120918_lids7.basisschulung_import_export. LIDS 7 Import/Export Mannheim, 11.02.2013 Autor: Anschrift: Version: Status: Modifiziert von: Ablage: Christine Sickenberger - Asseco BERIT GmbH Asseco BERIT GmbH Mundenheimer Straße 55 68219 Mannheim

Mehr

Mehr FAQ Dokumente auf www.unicodata.ch

Mehr FAQ Dokumente auf www.unicodata.ch Mehr FAQ Dokumente auf www.unicodata.ch Aktualisierte Version vom 14. April 2015 Erstelldatum 14. April 2015 1 Quelle: http://www.unicodata.ch Secure Login Handbuch für Anwenderinnen und Anwender Inhaltsverzeichnis

Mehr

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans Projekt Entwicklung verteilter Softwaresysteme mit Web Services SoSe 2008 - Java Server Pages und Servlets - 7. April 2008 Verteilte Systeme und Informationssysteme (VSIS) Department Informatik Universität

Mehr

Enterprise JavaBeans (mit JBoss)

Enterprise JavaBeans (mit JBoss) Enterprise JavaBeans (mit JBoss) Christian Hülsmeier 30.10.2004 Überblick Rekapitulation des vorhandenen Wissen Entity-Beans Session-Beans Deployment-Deskriptor Sichten / Client-Anwendungen Applikationsserver

Mehr

1. Access Sicherheitssystem ('Security')

1. Access Sicherheitssystem ('Security') 1. Access Sicherheitssystem ('Security') 1.1. Gründe für das Sicherheitssystem Microsoft zählt drei Gründe für das Sicherheitssystem auf: Schutz der Besitzrechte des Programm-Codes des Entwicklers Schutz

Mehr

baumberger-karneval.de

baumberger-karneval.de baumberger-karneval.de Bedienungsanleitung zur WEB-Seite: Vermittlung von Karnevalskostüme 1) Aufbau: Die WEB-Applikation besteht aus folgenden Ansichten: a) Grundansicht, Übersicht über angebotene Kostüme.

Mehr

MC-Hx 005. IP-Symcon Einbindung des MC-Hx Modul. MB DataTec GmbH. Stand:

MC-Hx 005. IP-Symcon Einbindung des MC-Hx Modul. MB DataTec GmbH. Stand: MB DataTec GmbH Stand: 04.2013 Kontakt: MB DataTec GmbH Friedrich Ebert Str. 217a 58666 Kierspe Tel.: 02359 2973-22, Fax 23 Web : www.mb-datatec.de e-mail: info@mb-datatec.de IP-Symcon ist eine Automatisierungs-Software

Mehr

Router für BT-Professional MOBILE konfigurieren

Router für BT-Professional MOBILE konfigurieren Router für BT-Professional MOBILE konfigurieren - Dieses Dokument beschreibt, welche Einstellungen Sie an Ihrem Router vornehmen müssen, damit Sie von Ihrem externen Gerät auf den BT-Professional MOBILE

Mehr

Typo3 & QFQ. Carsten Rose, I-MATH, University of Zurich, 2017

Typo3 & QFQ. Carsten Rose, I-MATH, University of Zurich, 2017 Typo3 & QFQ Carsten Rose, I-MATH, University of Zurich, 2017 Praktisches Beispiel Formulareditor Report 2 QFQ Offiziell noch 'Alpha' weil wir noch nicht alle Konzepte implementiert haben (Aenderungen moeglich).

Mehr

SSL-Inspection mit Content-Filter. ZyXEL USG Firewall-Serie ab Firmware Version 4.10. Knowledge Base KB-3506 Juni 2014.

SSL-Inspection mit Content-Filter. ZyXEL USG Firewall-Serie ab Firmware Version 4.10. Knowledge Base KB-3506 Juni 2014. SSL-Inspection mit Content-Filter ZyXEL USG Firewall-Serie ab Firmware Version 4.10 Knowledge Base KB-3506 Juni 2014 Studerus AG SSL-INSPECTION MIT CONTENT-FILTER Content-Filter und HTTPS-Websites Der

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Spezielle Technik aus dem Java-Umfeld Ausführung von Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VMs Aufruf

Mehr

Formulare & Zähler. Erstellen von Formularen & Zählern mit FrontPage- oder ASP-Erweiterungen ZUGEHÖRIGE INFORMATIONEN

Formulare & Zähler. Erstellen von Formularen & Zählern mit FrontPage- oder ASP-Erweiterungen ZUGEHÖRIGE INFORMATIONEN Formulare & Zähler Erstellen von Formularen & Zählern mit FrontPage- oder ASP-Erweiterungen ZUGEHÖRIGE INFORMATIONEN Ziel des vorliegenden Dokumentes ist es, einer mit Internet vertrauten Person zu ermöglichen,

Mehr

11.3 Transaktionen und LUWs in SAP R/3

11.3 Transaktionen und LUWs in SAP R/3 11.3 Transaktionen und LUWs in SAP R/3 G Transaktionen heissen in SAP/R3 Logical Unit of Work (LUW). Eine LUW besteht in der Regel aus zwei Teilen: SAP-Transaktion: Folge von vorbereiteten Dialogschritten

Mehr

Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf:

Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf: JavaScript - Inhalt 1. Objekte 2. Arrays 3. Callbacks 1)JavaScript Objekte Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf: Eine Methode wird immer mit dem Namen des Objekts, einem Punkt

Mehr

Installation SelectLine API

Installation SelectLine API Copyright 2018, SelectLine Software GmbH Alle Rechte vorbehalten! Inhaltsverzeichnis 1 Installation... 2 1.1 SSL-Zertifikat für HTTPS... 3 1.1.1 Innerhalb eines Domänennetzwerkes... 3 1.1.2 Zugriff über

Mehr

ProMaSoft.de WordPDFFormular Version (1.083) Seite 1 von 7

ProMaSoft.de WordPDFFormular Version (1.083) Seite 1 von 7 ProMaSoft.de WordPDFFormular Version (1.083) Seite 1 von 7 Beschreibung Mit dem Modul WordPDFFormular können Sie Ihre eigenen PDF-Formulare in Word erstellen. Nutzen Sie alle Funktionen und Möglichkeiten

Mehr

IDEAL ALERTER 2.0. POINTDEV Espace REVA 2 allee Josime MARTIN CHATEAURENARD FRANCE

IDEAL ALERTER 2.0. POINTDEV Espace REVA 2 allee Josime MARTIN CHATEAURENARD FRANCE Kompatibel mit: Windows NT, Windows XP, Windows Vista, Windows 2000, Windows 2003, Windows 2008, Windows 7, Windows 8, Windows 10, Windows 2012, Windows 2016. Erhältlich in: Präsentation IDEAL Alerter

Mehr

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST 2. Interaktive Web Seiten GET und POST Die Übertragungsmethoden GET und POST sind im http Protokoll definiert: POST: gibt an, dass sich weitere Daten im Körper der übertragenen Nachricht befinden: z.b.

Mehr

Sicherheit in Webanwendungen CrossSite, Session und SQL

Sicherheit in Webanwendungen CrossSite, Session und SQL Sicherheit in Webanwendungen CrossSite, Session und SQL Angriffstechniken und Abwehrmaßnahmen Mario Klump Die Cross-Site -Familie Die Cross-Site-Arten Cross-Site-Scripting (CSS/XSS) Cross-Site-Request-Forgery

Mehr

AutiSta 9.6 AE 10.08.2012 Technische Informationen zur Auslieferung oh 1 / 8. AutiSta 9.6 Technische Informationen zur Auslieferung (T-IzA)

AutiSta 9.6 AE 10.08.2012 Technische Informationen zur Auslieferung oh 1 / 8. AutiSta 9.6 Technische Informationen zur Auslieferung (T-IzA) Technische Informationen zur Auslieferung oh 1 / 8 AutiSta 9.6 Technische Informationen zur Auslieferung (T-IzA) Vorbemerkung Dieses Dokument beschreibt die mit AutiSta 9.6 vorgenommenen technischen Änderungen

Mehr

2.16 Trusted-RFC-Verbindungen

2.16 Trusted-RFC-Verbindungen 2 Die Systemsicherheit 2.16 Trusted-RFC-Verbindungen 2.16.1 Einsatzmöglichkeiten einer Trusted-Verbindung Für einige Anwendungen ist es erforderlich, Kommunikationsverbindungen über RFC (Remote Function

Mehr

7. OSI-Modell als Rollenspiel

7. OSI-Modell als Rollenspiel 7.1 Rollen Mit Hilfe eines Rollenspiels soll der gesamte Ablauf der Anfrage einer Webseite bei einem Web-Server dargestellt werden. An einer Web-Anfrage sind folgende Rollen beteiligt: 1. User 2. Browser

Mehr

Grundlagen Internet-Technologien. Ajax und Cookies&Sessions Version 1.00

Grundlagen Internet-Technologien. Ajax und Cookies&Sessions Version 1.00 Ajax und Cookies&Sessions Version 1.00 28.6.2010 1 aktuelles 2 Erweiterungen wir betrachten zwei Erweiterungen: Personalisierung der Web-Verbindung durch Cookies & Sessions AJAX: Kombination von Client-

Mehr

Java zur Realisierung von Internetanwendungen

Java zur Realisierung von Internetanwendungen Java zur Realisierung von Internetanwendungen Elementare Web-Programmierung Prof. Dr. Bernhard Schiefer HTTP Web-Browser Web-Browser GET http://www.zw.fh-kl.de/beispiel.htm beispiel

Mehr

Inhaltsverzeichnis. Einleitung

Inhaltsverzeichnis. Einleitung Einleitung 1 Rapid Web Development 1.1 Alle reden von Web 2.0 1.2 Was ist ein Web-Development-Framework? 1.3 Die zentralen Komponenten von TurboGears Python Kid-Templating CherryPy SQLObject Weitere Komponenten

Mehr

SCRUM [BugFix] Sprint August 2017

SCRUM [BugFix] Sprint August 2017 SCRUM [BugFix] Sprint August 2017 BugFixes und kleinere Anpassungen 01. September 2017 8843 - BAM - Absolutwerte PutParaRow Jahreswertverdichtung letzte End Periode 1 Tag zu früh Im PutParaRow bei der

Mehr

11.3 Transaktionen und LUWs in SAP R/3

11.3 Transaktionen und LUWs in SAP R/3 11.3 Transaktionen und LUWs in SAP R/3 G Transaktionen heissen in SAP/R3 Logical Unit of Work (LUW). Eine LUW besteht in der Regel aus zwei Teilen: SAP-Transaktion: Folge von vorbereiteten Dialogschritten

Mehr

Anleitung zum Umgang:

Anleitung zum Umgang: Hier finden Sie ein von mir empfohlenes Programm. Es heißt: Alle meine Passworte (AmP) Sie finden hierzu nähere Information im Internet unter: http://www.alle-meine-passworte.de/ Funktion des Programmes:

Mehr

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette.

Netzwerk-Programmierung. Netzwerke. Alexander Sczyrba Michael Beckstette. Netzwerk-Programmierung Netzwerke Alexander Sczyrba Michael Beckstette {asczyrba,mbeckste}@techfak.uni-bielefeld.de 1 Übersicht Netzwerk-Protokolle Protkollfamilie TCP/IP Transmission Control Protocol

Mehr

Single Sign-On Iveco Portal Dienst zum eigenständigen zurücksetzen und zur Passwortänderung Handbuch 1. Inhaltsverzeichnis

Single Sign-On Iveco Portal Dienst zum eigenständigen zurücksetzen und zur Passwortänderung Handbuch 1. Inhaltsverzeichnis Single Sign-On Iveco Portal Dienst zum eigenständigen zurücksetzen und zur Passwortänderung Handbuch 1. Inhaltsverzeichnis 1. Inhaltsverzeichnis... 2. Zugang zum Portal... 3. Besonderheiten... 4. Abmeldung

Mehr