Technische Projektdokumentation

Größe: px
Ab Seite anzeigen:

Download "Technische Projektdokumentation"

Transkript

1 Technische Projektdokumentation von Alexis Reigel und Marco Schmid Projektname Projektabkürzung Projektleiter Auftraggeber Betreuer Experte Autor Büro Bearbeitende Projekthomepage Versionskontrolle Generic Java Client for Web Services JCows Marco Schmid Prof. Dr. Stephan Fischli Prof. Dr. Stephan Fischli Dr. Thomas Siegrist Marco Schmid Alexis Reigel Büro N522 Höheweg Biel Marco Schmid, Alexis Reigel https://www.sf.net/projects/jcows Änderungskontrolle, Prüfung, Genehmigung Version Datum Beschreibung, Bemerkung Name oder Rolle Erstellung des Dokuments Marco Schmid Abgabe des Dokuments Marco Schmid, Alexis Reigel Definitionen, Akronyme and Abkürzungen Wort JCows fhs1 exp Bedeutung Generic Java Client for Web Services Stephan Fischli Experte Projektdokumentation.doc Druckdatum :32 1/48

2 Inhaltsverzeichnis 1 Projektverwaltung Sourceforge Versionskontrolle bei Sourceforge Lizenzen Quelltext Kommentierung Formatierung Applikationsübersicht Bezug der Applikation Binäre Dateien Quelltext Starten der Applikation Installation Windows Linux Bedienung der Applikation Entwicklung Klassenübersicht Paketbeschreibung Klassendiagramme Systemstart Bootstrap-Klasse Überwachung des neuen Prozesses Applikationslogik JCows Logik GUI Logik Soap Logik Hilfskomponenten ParamListItem JCowsHelper Controller Grafische Benutzeroberfläche Hauptfenster Dialogfenster Generische Visuelle Komponenten Hinzufügen von Validatoren Mapping von Datentypen zu visuellen Komponenten Layout Validatoren Standard-Validatoren Zuweisung Funktionsweise RegexValidator Sichere Verbindungen Truststore Logging Installationsroutine Starten der Applikation Erstellen einer Exe-Datei Applikationseinstellungen Ressourcen Grafiken Verwendete externe Komponenten Kompilation und Deployment JUnit Testing der Applikation Logik Testen von JCowsLogic Konkretes Testen anhand eines Test Web Services Validatoren XMethodsTest Projektdokumentation.doc Druckdatum :32 2/48

3 4.3.1 Fehlerklassifizierung Testergebnisse Xmethods.org Netzwerkfehler Ungültiger Web Service WSDL2Java-Parser Fehler Java Compiler Fehler Restliche Fehler Zusätzlich getestete Web Services Amazon Web Service Distsys Payment Service Konkretes Testen anhand eines Test Web Service Weiterentwicklung Ideen für die Zukunft Installationsroutine für Linux Unterstützung von OS X Einstellungen Anzeige von weiteren Informationen Debug-Konsole in der grafischen Benutzeroberfläche Bekannte Probleme Axis.jws Web Services Primitive Datentypen Klassen- und Bibliothekenpfad Header-Unterstützung Offene Punkte GUI Core Projektdokumentation.doc Druckdatum :32 3/48

4 Abbildungsverzeichnis Abbildung 1: Kommentar innerhalb Quelltext... 6 Abbildung 2: SVN Checkout des Quelltextes... 7 Abbildung 3: Beziehen der Bibliotheken über die Projekthomepage... 7 Abbildung 4: Installationsprogramm unter Windows... 8 Abbildung 5: Starten von JCows unter Linux... 8 Abbildung 6: Klassendiagramm, Applikationsübersicht Abbildung 7: Klassendiagramm, MainWindowController und MainWindow Abbildung 8: Sequenzdiagramm, JCows Start Abbildung 9: Schleife über den Kindprozess Abbildung 10: Klassendiagramm, Logik-Klassen Abbildung 11: Sequenzdiagramm, Laden der Parameterliste für das GUI Abbildung 12: Workaround für das Laden der Quelltext-Datei Abbildung 13: Sequenzdiagramm, Aufruf einer Operation des Web Service Abbildung 14: Klassendiagramm, ParamListItem Abbildung 15: Zuweisung eines Standardwertes Abbildung 16: Klassendiagramm, JCowsHelper Abbildung 17: Klassendiagramm, Controller Abbildung 18: JCows Hauptfenster Abbildung 19: URL History im Hauptfenster Abbildung 20: Java SDK Path Dialog Abbildung 21: SSL Warning Dialog Abbildung 22: Klassendiagramm, Visuelle Komponenten Abbildung 23: Request-Register mit drei visuellen Komponenten in einem Array dargestellt Abbildung 24: Response-Register mit drei visuellen Komponenten in einem Array dargestellt Abbildung 25: Auszug aus der Datei vcmapper.xml Abbildung 26: Darstellung des XML-Schemas Abbildung 27: Instanzierung mit Standardwerten Abbildung 28: Instanzierung mit effektiven Daten Abbildung 29: Klassendiagramm, Standard-Validatoren Abbildung 30: Sequenzdiagramm, Validierung Abbildung 31: Fehlermeldung Validator Dialog Abbildung 32: Beispielausdruck der Datei trustedcerts Abbildung 33: Xenoage Java Exe Starter Abbildung 34: Ant dist Task Abbildung 35: Aufruf von ant in der Windows Kommandozeile Abbildung 36: Starten einer Testsuite Abbildung 37: Sequenzdiagramm, Testablauf Abbildung 38: Templateklasse erzeugt die Testklasse Abbildung 39: Abarbeitung der Testklasse TestSoapLogicDynamic in Eclipse Abbildung 40: Klassendiagramm, JUnitTestWebService Abbildung 41: Klassendiagramm, Validatoren im Test Projektdokumentation.doc Druckdatum :32 4/48

5 Zweck des Dokuments Die technische Projektdokumentation enthält detaillierte Informationen über die Implementierung von JCows Version 0.2. Dementsprechend werden Änderungen gegenüber der Vorgängerversion erwähnt. Die Dokumentation zur Vorgängerversion befindet sich auf der Projekthomepage. 1 Projektverwaltung Dieses Kapitel beschreibt die Verwaltung des Projektes. Der Inhalt beschränkt sich eher auf die organisatorische und administrative als auf die technische Seite. 1.1 Sourceforge Für den Vertrieb von JCows werden die ausführbaren Dateien, der Quelltext und die Dokumentation auf dem Open-Source-Portal SourceForge 1 veröffentlicht. Dies ermöglicht den öffentlichen Zugang zu der und gibt anderen Entwicklern die Möglichkeit einen eigenen Betrag dazu zu leisten. Wir erhoffen uns damit, dass die einen Beitrag für die Entwicklergemeinde leistet und damit auch einen Bekanntheitsgrad erreicht Versionskontrolle bei Sourceforge Unter Versionskontrolle oder Versionsverwaltung versteht man ein System, welches typischerweise in der Softwareentwicklung zur Versionierung und um den gemeinsamen Zugriff auf Quelltexte zu kontrollieren, eingesetzt wird. Hierzu werden alle laufenden Änderungen erfasst und alle Versionsstände der Dateien in einem Archiv mit Zeitstempel und Benutzerkennung gesichert. Die Versionsverwaltung für JCows wird von dem Open-Source-Portal SourceForge geführt und ist für jedermann zugänglich. Provider URL Benutzername Passwort SourceForge.net, Open Source Development Network, Inc. https://www.sf.net/projects/jcows Nicht benötigt für den Lesezugriff. Nicht benötigt für den Lesezugriff. Die dafür verwendete Software ist SVN 2. Subversion SVN ist eine Open-Source-Software zur Versionsverwaltung. Es wurde als erweiterte Ablösung für das mit einigen Schwächen behaftete, in Entwicklerkreisen trotzdem noch sehr verbreitete System CVS 3 entwickelt. 1.2 Lizenzen JCows verwendet die Fremdkomponenten Ant und Axis welche unter der Apache-Lizenz 4 Version 2.0 stehen. Daher können diese Fremdkomponenten und die eigene Entwicklung unter Berücksichtigung der Lizenzbestimmungen wiederum unter der Apache-Lizenz vertreiben werden. Apache License Version 2.0 JCows Apache License Version 2.0 Apache License Version 2.0 Ant Axis Die Apache-Lizenz ist die Open-Source-Lizenz der Apache Software Foundation. Die aktuelle Version 2.0 wurde im Januar 2004 veröffentlicht. Sie ist gegenüber der vorherigen Version 1.1 stark erweitert. Aufgrund ihres Umfangs wird in den Quelltexten der einzelnen Apache-Projekte nicht mehr der komplette Text, sondern bloss ein Verweis auf die Originallizenz eingefügt. Zurzeit wird geprüft, ob diese Version der 1 Das Webportal SourceForge dient zur Entwicklung von Open-Source-Programmen und wird von vielen Software- Entwicklern zur Verwaltung ihrer Projekte genutzt. Die Homepage wird von VA Software gehostet und nutzt die SourceForge-Software Projektdokumentation.doc Druckdatum :32 5/48

6 Apache-Lizenz kompatibel zur GNU General Public Licence (GPL) ist. Die Apache-Lizenz wird von allen Apache-Projekten benutzt. Grundsätzlich beinhaltet sie: Man darf Software unter dieser Lizenz frei in jedem Umfeld benutzen, modifizieren und verteilen. Wenn man sie verteilt, muss eindeutig darauf hingewiesen werden, welche Software unter der Apache- Lizenz benutzt wurde und dass diese von Apache Software Foundation stammt. Eine Kopie der Lizenz muss dem Paket beiliegen. Man muss einem Paket nicht den Quelltext der Apache Software beilegen. Änderungen am Quelltext der Apache Software müssen nicht zu Apache zurückgeschickt werden. Die eigene Software, die Apache Software benutzt, muss nicht unter der Apache Lizenz stehen. 1.3 Quelltext Der Quelltext wurde nach Absprache einheitlich gestaltet. Einzig die Kommentare weisen einen anderen Stil und eine andere Häufigkeit auf Kommentierung Für dieses Projekt wurde Javadoc 5 verwendet. Javadoc ist ein Software-Dokumentationswerkzeug, das aus Java-Quelltexten automatisch HTML-Dokumentationsdateien erstellt. Für zusätzliche Informationen können spezielle Kommentare im Quelltext eingefügt werden. Abbildung 1: Kommentar innerhalb Quelltext Formatierung Das Einrücken des Quelltextes wurde wie die Kommentierung genau definiert. Da der Quelltext plattformunabhängig sein muss, wurde auf Tabulatoren verzichtet. Diese werden je nach Umgebung oft anders interpretiert. Die Formatierungsrichtlinien wurden in unserem Fall in einer XML-Datei für Eclipse festgehalten. 2 Applikationsübersicht Die Applikation ist in die vier Bereiche Core, Model, Controller und View unterteilt. Der Core-Bereich ist zuständig für das Starten der Applikation und das Bereitstellen der nötigen Ressourcen. Das Model enthält die nötige Logik um mit einem Web Service Daten auszutauschen und diese für die View bereitzustellen. Die View besteht aus der grafischen Benutzeroberfläche und den generischen visuellen Komponenten. Um Model und View zu verbinden, bedarf es einem Controller. 2.1 Bezug der Applikation Die Applikation kann auf drei verschiedene Arten bezogen werden. Entweder in einem Installationsprogramm für Windows, als Jar-Datei oder als Quelltext um die Applikation selbst zu kompilieren. Die Selbstkompilation hat den Vorteil, dass die Applikation aus dem neusten Quelltext kompiliert wird. 5 Projektdokumentation.doc Druckdatum :32 6/48

7 2.1.1 Binäre Dateien Ein Installationsprogramm für Windows und die Jar-Dateien können direkt von der Projekthomepage bezogen werden. Die zu Verfügung gestellten Versionen sind jedoch nur stabile und entsprechen unter Umständen nicht dem Stand des SVN Repositories Quelltext Der Quelltext kann über die Projekthomepage bezogen werden. Um auf das SVN Repository (Ordner) zuzugreifen, bedarf es einer Installation eines SVN Klienten. Für Eclipse gibt es auch das Plugin Subclipse 6. Abbildung 2: SVN Checkout des Quelltextes Nach dem Checkout steht eine build.xml-datei für Ant zu Verfügung. Diese ermöglicht den Bezug von benötigten fremden Bibliotheken (Jar-Dateien) über die Projekthomepage. Abbildung 3: Beziehen der Bibliotheken über die Projekthomepage Provider URL Benutzername Passwort SourceForge.net, Open Source Development Network, Inc. https://www.sf.net/projects/jcows Nicht benötigt für den Lesezugriff Nicht benötigt für den Lesezugriff 2.2 Starten der Applikation Die Applikation lässt sich entweder aus der Konsole starten oder über einen Shortcut im Startmenü oder dem Dekstop falls zuvor eine Installation durchgeführt wurde. 6 Projektdokumentation.doc Druckdatum :32 7/48

8 2.2.1 Installation Die Applikation kann durch das Ausführen der Datei jcows_setup.exe installiert werden. Das Installationsprogramm führt den Benutzer in englischer oder deutscher Sprache durch die Installation. Abbildung 4: Installationsprogramm unter Windows Nach der Installation steht auf dem Desktop und im Startmenü ein Shortcut für die Ausführung bereit Windows In der Kommandozeile lässt sich JCows mit dem Befehl java jar jcows_win32.jar starten. Wurde zuvor eine Installation durchgeführt, genügt ein Klick auf den Shortcut im Startmenü oder dem Desktop Linux Unter Linux muss zusätzlich zum Befehl in Windows noch das Java-Property java.library.path gesetzt werden. Abbildung 5: Starten von JCows unter Linux Projektdokumentation.doc Druckdatum :32 8/48

9 2.3 Bedienung der Applikation Eine Bedienungsanleitung ist in einem separaten Dokument auf der Projekthomepage verfügbar. 3 Entwicklung Dieses Kapitel beschreibt detailliert wie die wichtigsten Applikationsfunktionen implementiert wurden. Oft findet man zusätzliche Hinweise direkt in den Klassen in Form von Kommentaren. Jede Klasse mit Ausnahme der Testklassen wurde mit Javadoc kommentiert und gibt Auskunft über Ihre Funktion. 3.1 Klassenübersicht Die Applikation umfasst ungefähr 90 Klassen. Davon sind rund 30 Testklassen. Testklassen werden nicht in ein Build übernommen und sind für die Ausführung nicht notwendig Paketbeschreibung Paket org.jcows.controller org.jcows.format org.jcows.model.core org.jcows.model.vc org.jcows.system org.jcows.test.model org.jcows.test.system org.jcows.test.view org.jcows.view.core org.jcows.view.vc Beschreibung Enthält die Klassen, die gemäss dem MVC-Pattern das Model und die View verbinden. Enthält Klassen für den SOAP-Editor, welche die Formatierung des Textes übernehmen. Enthält Klassen, die für die effektive Programmlogik zuständig sind. Enthält Klassen, die von generischen visuellen Komponenten benötigt werden. Enthält Systemklassen. Enthält Testklassen für die Modelklassen. Enthält Testklassen für die Systemklassen. Enthält Testklassen für die Viewklassen. Enthält die Klassen, die die grafische Benutzeroberfläche bilden. Enthält die Klassen der generischen visuellen Komponenten. Projektdokumentation.doc Druckdatum :32 9/48

10 3.1.2 Klassendiagramme Abbildung 6: Klassendiagramm, Applikationsübersicht Das folgende Klassendiagramm zeigt die Anwendung des MVC-Pattern anhand des Hauptfensters. Abbildung 7: Klassendiagramm, MainWindowController und MainWindow 3.2 Systemstart JCows kann direkt aus einem Jar-Paket gestartet werden. Alle benötigten fremden Bibliotheken und Dateien befinden sich in diesem Jar und müssen nicht separat als Parameter (Klassen- und Bibliothekenpfad) angegeben werden. Das einzige Problem hierbei ist, dass JCows in den wenigsten Fällen auf den Java Compiler zugreifen kann. Dieser befindet sich in der Datei tools.jar die sich in den wenigsten Fällen im Klassenpfad befindet. Leider ist es nicht möglich, zur Laufzeit Klassen- wie Bibliothekspfade zu erweitern. Dazu bedarf es einer Bootstrap-Klasse, die eine neue virtuelle Maschine (als einen neuen Prozess) mit den korrekten Pfaden startet. Projektdokumentation.doc Druckdatum :32 10/48

11 3.2.1 Bootstrap-Klasse Das Bootstrap-Prinzip wird von der Klasse JCows implementiert. Sie startet einen neuen Prozess, der die eigentliche Applikation startet. Die Hauptapplikation, repräsentiert durch die Klasse JCowsApp, hat nun Zugriff auf alle benötigten Bibliotheken. Während der Entwicklungsphase ist es aber sinnvoll, auf die Kreation eines neuen Prozesses zu verzichten. Der Debugger verfügt nicht über die Möglichkeit, auf einen neuen Prozess zuzugreifen. Das Startargument -dev verhindert, dass ein neuer Prozess kreiert wird. Abbildung 8: Sequenzdiagramm, JCows Start Überwachung des neuen Prozesses Sobald ein neuer Prozess kreiert wurde, müssen dessen Ausgaben (Output- und Errorstream) abgefangen werden und der Status des Prozesses überwacht werden. Die Ausgaben werden an den Vaterprozess übertragen und von diesem ausgegeben. Sollte der Kindprozess nicht mit einem normalen Exitstatus beendet werden, wird nochmals ein neuer Prozess gestartet. Ein spezieller Exitstaus signalisiert, dass der Pfad zu der Datei tools.jar neu gesetzt wurde. Dies benötigt einen Neustart damit der angepasste Klassenpfad dem Klassenlader zur Verfügung steht. Abbildung 9: Schleife über den Kindprozess 3.3 Applikationslogik Bisher war die gesamte Hauptlogik der Applikation in der Klasse SoapLogic untergebracht. Um in der Version 0.2 ebenfalls den GUI-Modus zu unterstützen wurde die Businesslogik der Applikation restrukturiert. Die Logik wurde in drei Komponenten aufgeteilt: JCowsLogic, GuiLogic und SoapLogic. Jede dieser drei Klassen implementiert das entsprechende Interface. Die Klassen SoapLogic und GuiLogic erben zusätzlich von der Klasse JCowsLogic. JCowsLogic enthält alle Operationen welche den beiden Projektdokumentation.doc Druckdatum :32 11/48

12 gemeinsam sind. Alle Operationen welche nur für den Editor-Modus gelten sind in der Klasse SoapLogic enthalten, dementsprechend befindet sich die Funktionalität für den GUI-Modus in der Klasse GuiLogic. Abbildung 10: Klassendiagramm, Logik-Klassen JCows Logik Die Klasse JCowsLogic ist verantwortlich für das Initialisieren einer JCows-Sitzung, also das Einlesen des WSDL-Dokuments, die Generierung der Klassen und die anschliessende Kompilation und die Klassifizierung der generierten Klassen. Zusätzlich enthält sie die Funktionalität für das Setzen und Zurückgeben der Services, der Ports und der Operationen welche von einem Web Service angeboten werden. Sie übernimmt ebenfalls die Funktionalität für das Öffnen und Speichern einer alten Sitzung. Einen Grossteil der Funktionalität der früheren SoapLogic-Klasse wurde ausgelagert in die Klassen ClassHelper und JCowsFile. ClassHelper übernimmt alle Funktionen welche mit Class-Objekten interagieren. Sie übernimmt das Instanzieren von Klassen und das Generieren der Parameterlisten welche für das GUI benötigt werden. Die Klasse JCowsFile übernimmt alle Operationen welche mit Dateien arbeiten. Projektdokumentation.doc Druckdatum :32 12/48

13 Anpassungen gegenüber der Vorgängerversion Im Folgenden werden grundlegende Anpassungen gegenüber der Vorgängerversion beschrieben. Behobene Fehler und Probleme werden ebenfalls hier beschrieben. Erhöhen der Ansprechrate Um die Ansprechrate der Vorgängerversion von rund 80% zu erhöhen wurden einige Fehler behoben und zusätzliche Implementationsdetails vorgenommen. Testen von anderen Frameworks Bisher wurde in der Applikation der WSDL2Java-Parser des Axis 1.4 Frameworks benutzt um aus dem WSDL-Dokument die entsprechenden Javaklassen zu generieren. Um die Ansprechrate zu optimieren wurden zwei weitere Parser getestet: Der WSDL2Java-Parser des Axis 2 Frameworks und der wsimport- Parser des jaxws-ri von Suns Web Service Framework. Die Resultate dieser Testserie waren eher ernüchternd. Beide Parser produzierten mehr Fehler als der Parser von Axis 1.4. Der Parser von Axis 2 produzierte teilweise ungültige Zeichen in den Quelltext-Dateien. Beispielsweise wurden in einigen Fällen HTML-Entities in den Quelltext eingefügt, was das anschliessende Kompilieren fehlschlagen liess. Der Parser von Sun hatte Probleme im Umgang mit SOAP:Encoded-Typen und scheiterte so in vielen Fällen an der Generierung der Quelldateien. Die Resultate führten zum Entscheid weiterhin den Parser von Axis 1.4 zu benutzen. Auch falls die Resultate günstiger ausgefallen wären wäre der Entscheid zum Wechsel zu überdenken gewesen, da mit dem Wechsel des Parsers auch die API des Frameworks geändert hätte. Dies hätte dazu geführt, dass unsere Applikation daran angepasst hätte werden müssen, was zu nicht unwesentlichen Anpassungen in unserem Quelltext geführt hätte. Fehler beim Generieren der SOAP-Nachricht Um eine Standard-SOAP-Nachricht zu generieren sendet unsere Applikation eine Request-Nachricht mit Standardwerten der Parameter an den Web Service. Diese Nachricht wird vor dem Erreichen des Services aber im Handler abgefangen. Die Axis-Engine jedoch erwartet aber trotzdem eine Response Nachricht, welche in diesem Fall stets NULL ist. Falls der Rückgabewert der Operation ein Objekt ist, funktioniert dies auch, jedoch stürzt die Applikation im Falle eines primitiven Datentyps ab. Im Stub wird nämlich versucht, den Rückgabewert NULL im Beispiel eines int mittels der Methode intvalue()in einen primitiven Datentyp zu verwandeln. Dabei wird eine Exception aufgeworfen. Fangen wir nun diese Exception ab und fahren im Programmlauf weiter, ist das Problem behoben. Dies funktioniert, weil uns zu diesem Zeitpunkt, nämlich beim Kreieren der Request-SOAP-Nachricht, die Response-Nachricht noch nicht interessiert, sondern lediglich die generierte Request-Nachricht, welche wir aus dem Handler erhalten. Mit dem Beheben dieses Problems erhöhte sich die Erfolgsquote von 80% auf 95%. Falscher primitiver Datentyp Bei der Rückgabe von primitiven Datentypen wurde in ClassHelper.getNewInstance stets der Wert 0 zurückgegeben, was in Java standardmässig als int gilt. Falls als Argument beispielsweise ein short verlangt war gab dies einen Fehler. Nun werden alle primitiven Datentypen einzeln behandelt und der entsprechend typisierte Wert zurückgegeben. Beispielsweise wird im Falle eines short der Wert 0 in einen short gecastet und zurückgegeben. Standardwert 1 statt 0 für numerische Datentypen Als Standardwert für die numerischen Datentypen wurde bisher der Wert 0 zurückgegeben. Bei den Konstruktoren von einigen speziellen Klassen ist jedoch ein Wert 0 nicht gültig. Im Falle der Klasse org.apache.axis.types.positiveinteger wird ein Wert grösser als 0 verlangt. Da wir keine Klassen ausfindig machen konnten, welche bei einem Wert ungleich 0 nicht erfolgreich konstruiert werden können änderten wir den Standardwert für numerische Datentypen auf 1. Diese Änderung wirkte sich nicht überdeutlich auf das Resultat aus, aber immerhin erhöhte es die Erfolgsquote um einige Web Services. Es ist eine Änderung welche jedenfalls keine Einbussen mit sich bringt. Methode getconstructorindex Diese Methode gibt den Index des zu verwendenden Konstruktors zurück. Dies wird gebraucht um für eine bestimmte Klasse den Konstruktor zu erhalten mit welchem sie initialisiert werden soll. Zum Ersten erhalten Projektdokumentation.doc Druckdatum :32 13/48

14 wir so den Konstruktor welcher wahrscheinlich der einfachste ist um ein gültiges Objekt von der Klasse zu konstruieren, und zum Zweiten benutzen wir so stets den gleichen Konstruktor für die selbe Klasse. Die Methode extrahiert mittels Reflection alle Konstruktoren aus der Klasse. Falls der erste Konstruktor im Konstruktor-Array der Default-Konstruktor ist, wird der zweite Konstruktor (erster Nondefault-Konstruktor) verwendet, andernfalls der erste. In jedem Fall wollen wir einen Nondefault-Konstruktor erhalten, da der Default-Konstruktor kein Argument erfordert und somit einige Klassen mit ungesetzten und somit ungültigen Instanzvariablen initialisiert werden. Zusätzlich überprüft die Methode ob der gewünschte Konstruktor nicht die Klasse selbst als Argument enthält, da dies zu einer Endlosschlaufe führen würde. Axis Datentypen gesondert behandeln Das Paket org.apache.axis.types des Axis-Frameworks enthält 32 zusätzliche Klassen, welche durch unsere Applikation unterstützt werden sollen, zusätzlich zu den standardmässigen Java Datentypen welche für Web Services benutzt werden dürfen. Von diesen 32 können lediglich die folgenden fünf nicht korrekt instanziert werden, da sie mit den Standardwerten der Argumenttypen nicht korrekt konstruiert werden. org.apache.axis.types.negativeinteger org.apache.axis.types.notation org.apache.axis.types.positiveinteger org.apache.axis.types.unsignedlong org.apache.axis.types.uri Von diesen fünf müssen wiederum nur vier gesondert behandelt werden, da die Klasse Notation als Argument die Klasse URI erhält. Wenn URI korrekt instanziert wird, wird auch die Klasse Notation korrekt instanziert werden können. Die übrigen vier Klassen werden nun in der Methode ClassHelper.getNewInstance abgefangen und eine entsprechende gültige Instanz zurückgegeben. Theoretisch wäre es nötig, alle anderen Klassen des Axis-Frameworks welche für das Implementieren von Web Services benutzt werden können ebenfalls gesondert zu behandeln. Ein Beispiel dafür wären alle Klassen des Pakets org.apache.axis.message. Da aber in den Tests diese Klassen kaum vorkamen (siehe Testresultate in Kapitel 5.1.5) wurde auf die Unterstützung dieser Klassen verzichtet. Connection Timeout Um zu verhindern, dass unerreichbare Hosts oder WSDL-Dokumente die Applikation aufhängen, wurde ein Timeout für den Verbindungsaufbau und das Einlesen des Dokuments hinzugefügt. Dazu musste die Methode JCowsLogic.getWsdl angepasst werden. Prüfsummen-Fehler Bisher wurde in der JCows-Datei die Prüfsumme ersetzt falls sie geändert hatte. Durch einen Fehler im Code wurde dabei manchmal die erste Zeile ebenfalls ersetzt, was bei einem späteren Auslesen dazu führte, dass eine Exception auftrat. Nun wird die gesamte Datei neu geschrieben. Dies macht tatsächlich auch mehr Sinn, da davon ausgegangen werden kann, dass falls die Prüfsumme geändert hat auch Operationen geändert haben, was schliesslich eine neue JCows-Datei erfordert GUI Logik JCows erhält in der Version 0.2 einen zusätzlichen GUI-Modus zum SOAP-Editor. Im GUI-Modus wird im Gegensatz zum Editor nicht die SOAP-Nachricht ausgegeben, sondern die Parameter zum Aufrufen des Web Service werden abstrahiert grafisch dargestellt. Dabei verhält sich dieses GUI generisch, das heisst es passt sich dem Web Service an und sieht somit bei jedem einzelnen anders aus. Jeder Parameter, den der Web Service für eine bestimmte Operation verlangt wird entsprechend seinem Datentyp grafisch dargestellt. Beispielsweise wird für einen String-Parameter ein Textfeld und für einen Boolean-Wert eine Checkbox ausgegeben. Entsprechend zur Darstellung geschieht die Operationalität der Klasse GUILogic nicht auf der Ebene von SOAP-Nachrichten sondern auf der Ebene von Klassen und Methoden, also auf Objekt-Ebene. Projektdokumentation.doc Druckdatum :32 14/48

15 Laden des Web Service Im Editor-Modus wird die Methode der Portklasse aufgerufen, was dazu führt, dass Axis eine SOAP- Nachricht generiert und diese an den Web Service sendet. In einem Handler wird dann diese Nachricht abgefangen und im Editor angezeigt. Diese kann danach vom Benutzer editiert werden. Im GUI-Modus kann der Umweg über die SOAP-Nachricht weggelassen werden. Um eine grafische Darstellung des Web Service zu erhalten ist es lediglich nötig, die Argumente der Methode der Portklasse zu extrahieren, die der Operation des Web Service entspricht. Die einzige Schwierigkeit hierbei besteht darin, dass die Argumente nicht einfache Java Datentypen sein müssen, sondern beliebige Klassen sein können. Demzufolge muss jedes Argument rekursiv in seine Komponenten aufgeteilt werden bis wir auf Datentypen stossen welche im Mapping der visuellen Komponenten definiert sind. Konkret bedeutet dies, dass die Methode GuiLogic.createParamList aus der aufzurufenden Methode die Parameterliste extrahiert und mittels der Methode ClassHelper.getParamListFromConstructor eine Liste von ParamListItem- Objekte erhält. GuiLogic.createParamList wird bei der Initialisierung des GuiLogic-Objekts und beim ändern des Service, des Ports und der Operation des Web Service aufgerufen. Die Methode ClassHelper.getParamListFromConstructor übernimmt hier die Aufgabe, eine Parameterliste zu erstellen, welche im GUI dargestellt werden kann. Sie ruft für jedes Argument der aufzurufenden Methode die Methode ClassHelper.getParamListItemFromConstructor auf, welche rekursiv die Argumente bearbeitet und als Resultat eine Liste zurückgibt. Sie prüft für jedes Argument ob seine Klasse im Mapping der visuellen Komponenten definiert ist. Falls der Datentyp gefunden wird, wird ein ParamListItem entsprechend den Mappinginformationen kreiert und zurückgegeben. Falls der Datentyp nicht gefunden wird, wird die Methode wiederum aufgerufen mit den Komponenten dieser Klasse. Die Komponenten der Klasse werden aus dem Konstruktor der Klasse ermittelt. Mittels Reflection wird der geeignete Konstruktor gesucht und deren Parameterliste extrahiert. Das Resultat dieser Prozedur ist eine Liste von ParamListItem-Objekten. Diese Liste wird mittels der Methode GuiLogic.getParamList an die GUI-Komponente übergeben, welche die Informationen darin dazu benutzt um die generische Benutzeroberfläche aufzubauen. Abbildung 11: Sequenzdiagramm, Laden der Parameterliste für das GUI Labels Um die Labels, also die Namen der Parameter für die Anzeige in der grafischen Benutzeroberfläche, zu erhalten wird die Methode ClassHelper.getParamNames aufgerufen. Sie liefert einen String-Array zurück mit den Namen der Argumente. Diese Methode ist nur notwendig für komplexe Argumenttypen, für die einfachen Datentypen sind die Labels im Mapping der visuellen Komponenten definiert. Ebenfalls wird diese Methode nur für die Anfrage benötigt, da bei der Antwort die Namen der Parameter mittels Reflection ermittelt werden können (siehe Kapitel ). Projektdokumentation.doc Druckdatum :32 15/48

16 Um an die Namen der Parameter einer Methode zu gelangen, müssen wir auf den Quelltext der entsprechenden Klassen zugreifen, da diese Information in der Reflection-Umgebung nicht enthalten ist. Um nun die Namen zu erhalten, wird die Quelltext-Datei der gewünschten Klasse eingelesen und mittels Regular Expression derjenige Teil extrahiert, welcher die Methoden-Definition enthält. Daraus können die einzelnen Argumente gelesen werden und wir erhalten schliesslich deren Namen. Bei Klassen, deren Quelltext-Datei wir nicht verfügbar haben, wird als Namen der Datentyp des Parameters zurückgegeben. Bei einem String wäre dies beispielsweise String. Sun Bug betreffend URLClassLoader In der Methode ClassHelper.getParamNames stiessen wir auf einen Bug in der Java-Implementation von Sun. Beim Laden einer Quelltext-Datei aus der Jar-Datei tritt unter Umständen ein Fehler auf, da der URLClassLoader Ressourcen aus einer Jar-Datei zwischenspeichert, und somit bei einer dynamisch veränderten Jar-Datei die Ressource nicht korrekt öffnen kann. Unter der URL ist der Bug abgelegt. Um diesem Fehler aus dem Weg zu gehen musste der direkte Zugriff auf den InputStream der Ressource InputStream in = m_jarloader.getresourceasstream(javafile); Umgangen werden. Abbildung 12: Workaround für das Laden der Quelltext-Datei Aufrufen des Web Service Beim Aufrufen eines Web Service im GUI-Modus werden andere Schritte durchlaufen als beim Aufrufen im Editor-Modus, in welchem die SOAP-Nachricht direkt an den Web Service ausgeliefert wird. Im GUI-Modus wird keine SOAP-Nachricht mehr direkt gesendet, sondern es wird die Methode der von WSDL2Java generierten Portklasse aufgerufen, welche der Operation des Web Service entspricht. Die SOAP-Nachricht wird von Axis generiert und an den Web Service ausgeliefert. Vom Controller wird die Methode GuiLogic.invoke aufgerufen welche als Argument eine Liste von ParamListItem-Objekten verlangt. Diese Liste enthält die gesamte Information über die Argumente für die aufzurufende Methode. Wesentlich hierbei ist die Information über den Datentyp und den Wert der einzelnen Argumente. Die Methode ClassHelper.constructArguments erzeugt aus der Liste einen Object- Array. Mittels Reflection wird die gewünschte Methode aufgerufen mit dem Object-Array als Argument. Das Resultat dieses Aufrufs ist eine Instanz der Klasse Object, welche wiederum in eine Liste aus ParamListItem-Objekten konvertiert werden muss, damit sie von der grafischen Komponente dargestellt werden kann. Die Methode ClassHelper.getParamListFromFields ruft hierzu für jede Komponente der Klassen-Instanz des Resultat-Objekts die Methode ClassHelper.getParamListItemFromFields auf. Das Resultat ist in den meisten Fällen entweder ein einfacher Java Datentypen oder eine Beanklasse. In der Methode ClassHelper.getParamListItemFromFields wird im Mapping der visuellen Komponenten nach der Klasse gesucht und falls gefunden als ParamListItem zurückgegeben. Falls die Klasse nicht gefunden werden kann werden mittels Reflection alle Instanzvariablen im Resultat-Objekt extrahiert. Diese liefern sowohl die Werte des Resultats als auch deren Name. Die Objekte der Instanzvariablen werden wiederum der Methode ClassHelper.constructArguments übergeben. Als Resultat der Methode wird eine Liste aus ParamListItem-Objekten zurückgegeben. In der Regel ist für das Resultat die Rekursion auf ein bis zwei Durchgänge begrenzt. Projektdokumentation.doc Druckdatum :32 16/48

17 Abbildung 13: Sequenzdiagramm, Aufruf einer Operation des Web Service Soap Logik Diese Klasse übernimmt die Funktionalität welche im Editor-Modus gebraucht wird. Sie operiert auf der Ebene von SOAP-Nachrichten Anpassungen gegenüber der Vorgängerversion Einfügen eines XML-Dokuments Im Editor-Modus besteht nun die Möglichkeit, ein XML-Dokument in den SOAP-Body einzufügen. Dies ist dann sinnvoll wenn man grössere Dokumente an einen Web Service senden und die Daten nicht manuell eingeben will. Hauptsächlich trifft dies auf dokumentbasierte Web Services zu welche in der Regel grössere XML-Dokumente mit einem grösseren Datengehalt erfordern als Prozedurorientierte, welche normalerweise nur einige Parameterwerte erfordern. In der Applikation selbst wird diese Unterscheidung jedoch nicht gemacht. Erstens ist es dem Benutzer überlassen wie er seine Daten einfügen will und zweitens kann nicht davon ausgegangen werden, dass als dokumentbasiert spezifizierte Web Services auch wirklich dokumentbasiert und prozedurorientierte auch tatsächlich prozedurorientiert arbeiten. Da dies nirgends genau spezifiziert ist und diese Konformität der beiden Datentypen auch nicht strikt eingehalten wird behalten wir uns diese Unterscheidung ebenfalls vor. 3.4 Hilfskomponenten ParamListItem ParamListItem ist eine Datenstrukturklasse die Daten für eine Web Service Anfrage oder Antwort enthält. Im Grunde genommen ist sie das Protokoll zwischen der Klasse GuiLogic und der entsprechenden visuellen Komponente. Jede visuelle Komponente enthält ein ParamListItem-Objekt als Speichercontainer. Ein eingegebener Wert in einer visuellen Komponente und dessen Antwort vom Web Service wird in einem solchen Objekt gespeichert. Weiters beinhaltet sie nach der Objekt-Konstruktion einer visuellen Komponente einen Standardwert als String und die Informationen, ob sie einen primitiven Datentyp oder ein Array repräsentiert. Dabei kann ein ParamListItem wiederum eine Liste von ParamListItem- Objekten enthalten. Dies ist der Fall wenn die visuelle Komponente nur einen Container repräsentiert und in sich eine visuelle Komponente enthält. Projektdokumentation.doc Druckdatum :32 17/48

18 Die effektiven Daten werden in einem Vector gespeichert. Dies hat den Vorteil, dass ein einzelner Wert wie auch ein Array von Werten abgespeichert werden kann. Abbildung 14: Klassendiagramm, ParamListItem ParamListItem-Typ Das ParamListItem-Objekt kann für die Speicherung eines einzelnen Wertes oder eines Arrays von Werten verwendet werden. Die Werte werden dabei in einem unparametrisierten Vector abgelegt. Über die Methode getvalue werden sie korrekt typisiert wieder ausgegeben. Der Rückgabewert entspricht dem Datentyp Object und kann auf ein einzelnes Objekt, ein Object-Array oder auf ein Array von primitiven Werten zeigen. Die privaten Methoden toxxxprimitive konvertieren die abgelegten Werte wieder in primitive Werte. Dieser Vorgang ist nötig, da primitive Werte beim Speichern in einen Vector automatisch in die entsprechende Wrapper-Klasse gepackt werden (so genanntes autoboxing). Bei der Rückgabe von Arrays von primitiven Werten ist es jedoch wichtig, dass sie wieder korrekt zurückverwandelt werden. Projektdokumentation.doc Druckdatum :32 18/48

19 Standardwert Einem ParamListItem-Objekt wird durch die Methode setdefaultvalue einer visuellen Klasse einen Standardwert zugewiesen. Dieser Wert stammt aus der XML Datei vcmapper.xml und ist vom Datentyp String. Die visuelle Komponente zeigt diesen Wert bei einer Web Service Anfrage auch an. Umgekehrt, bei einer Antwort, wird nicht der Standardwert sondern das Resultat angezeigt. Abbildung 15: Zuweisung eines Standardwertes Zurzeit sind folgende Standardwerte festgelegt: für Datentyp (Java) Standardwert Boolean / boolean False Byte / byte 0 Short / short 0 Integer / int 0 Long / long 0 Float / float 0.0 Double / Double 0.0 Char / char Space String String Konstruktion ParamListItem-Objekte werden erstellt, wenn eine Web Service Anfrage erfolgen soll und bei der Antwort einer Anfrage. Der Unterschied liegt darin, dass bei einer Antwort ein ParamListItem-Objekt erstellt wird, das einen konkreten anstatt einen Standardwert enthält Vergleich von ParamListItem-Objekten Die Methode equals wurde für Testzwecke überschrieben. Sie vergleicht, ob das zu vergleichende Objekt vom selben Datentyp ist und ob der Vector die gleichen Daten enthält. Projektdokumentation.doc Druckdatum :32 19/48

20 3.4.2 JCowsHelper Die Klasse JCowsHelper stellt einige Hilfs -Methoden zur Verfügung. Diese Methoden sind statisch und können somit von überall her verwendet werden. Abbildung 16: Klassendiagramm, JCowsHelper Die Methode getfile extrahiert aus der eigenen Jar-Datei oder auch aus einer anderen eine gewünschte Datei. Dabei kann bestimmt werden, ob eine bereits vorhandene Datei überschrieben werden soll oder nicht. Die Methode preloadclasslist retourniert eine Liste aller Klassen, die in der eigenen Jar-Datei vorhanden sind. Dabei wird nach sämtlichen Dateien gesucht, die die Endung.class aufweisen und kein Dollarzeichen innerhalb des Dateinamens haben. Ein Dollarzeichen wird für Inner-Klassen verwendet und diese werden implizit beim Laden der Outer-Klasse geladen. Die Liste wird von der Klasse JCowsApp für das Vorladen benötigt. Projektdokumentation.doc Druckdatum :32 20/48

21 3.5 Controller In der Version 0.1 bestand unsere Applikation aus nur einem Controller, welche alle GUI-Klassen mit dem Model, in der Version 0.1 also die Klasse SoapLogic, interagieren liess. Da aber mit der Weiterentwicklung der Applikation der Umfang der Controller-Klasse unwartbare Dimensionen annahm, musste dieser auf mehrere Klassen verteilt werden. Zudem war die Instanzierung nicht sehr glücklich ausgefallen. In der main- Methode der Applikation wurde der Controller initialisiert, und der Konstruktor erwartete für jede GUI-Klasse ein Argument. Bei jeder zusätzlichen GUI-Komponente musste somit der Konstruktor und die main-methode angepasst werden. Jede GUI-Klasse hat nun einen eigenen Controller. Zusätzlich gibt es die Klasse JCowsController. Diese Klasse ist im Prinzip kein Controller im eigentlichen Sinn, da sie lediglich alle weiteren Controller initialisiert und verwaltet. Bei einem Hinzufügen einer GUI-Komponente muss nun lediglich eine neue zugehörige Controller-Klasse implementiert werden und dem JCowsController hinzugefügt werden. Die main-methode der Applikation instanziert nur die Klasse JCowsController mit nur einem Argument, nämlich der Shell-Klasse des Hauptfensters. Alles Weitere übernimmt die Klasse JCowsController. Somit liegt die Verwaltung der Controller nicht mehr in der main-methode, sondern wird an einem geeigneten Ort übernommen. Abbildung 17: Klassendiagramm, Controller 3.6 Grafische Benutzeroberfläche Die grafische Benutzeroberfläche ermöglicht dem Benutzer die Steuerung der Applikation mit Maus und Tastatur. Sie ist programmiertechnisch in Dialoge und Fenster unterteilt. Jedes Fenster und jeder Dialog ist in einer eigenen Klasse implementiert. Projektdokumentation.doc Druckdatum :32 21/48

22 3.6.1 Hauptfenster Das Hauptfenster repräsentiert die Applikation und ermöglicht die Interaktion mit einem Web Service. Es ist in verschiedene Bereiche unterteilt. Im ersten Bereich befindet sich das Menü und eine so genannte Toolbar. Die Toolbar enthält die wichtigsten Knöpfe die auch im Menü vorhanden sind. Sie erlaubt ein schnelleres Arbeiten. Im zweiten Bereich befindet sich die Auswahl des Web Service und dessen Funktionen. Die Anfrage und Antwort wird im nächsten Bereich dargestellt, entweder im GUI- oder im Editor-Modus. Statusinformationen werden im untersten Bereich dargestellt. Abbildung 18: JCows Hauptfenster Projektdokumentation.doc Druckdatum :32 22/48

23 URL History Die in der WSDL-Adresszeile eingegebenen URLs werden beim Beenden der Applikation gespeichert und stehen beim nächsten Start wieder zur Verfügung. Somit muss eine zuvor verwendete Adresse nicht erneut eingegeben werden. Abbildung 19: URL History im Hauptfenster Dialogfenster Dialogfenster erscheinen wenn ein zusätzliches unabhängiges Fenster nötig ist, etwa um Einstellungen vorzunehmen oder eine Fehlermeldung anzuzeigen. Dialogfenster wirken blockierend. Das heisst, der Zugriff auf das Hauptfenster ist erst wieder möglich, wenn das Dialogfenster geschlossen wurde. Projektdokumentation.doc Druckdatum :32 23/48

24 Java SDK Pfad Der Java SDK Path Dialog ermöglich die Eingabe des SDK Pfades damit der Java Compiler gefunden werden kann. Dieser Dialog wird immer dann angezeigt, wenn zur Laufzeit festgestellt wird, dass sich die Datei tools.jar nicht im Klassenpfad befindet. Abbildung 20: Java SDK Path Dialog Der eingetragene Pfad wird abgespeichert und nach dem nächsten Programmneustart wieder verwendet SSL Dialog Der SSL Dialog ist ein Dialog der gezeigt wird, wenn eine Verbindung mit HTTPS hergestellt wird und das Zertifikat nicht durch eine autorisierte Stelle als vertrauenswürdig eingestuft ist. Abbildung 21: SSL Warning Dialog Der Dialog erscheint beim nächsten Verbindungsaufbau für die gleiche Adresse nochmals, falls das Zertifikat nur temporär akzeptiert wurde. 3.7 Generische Visuelle Komponenten Generische visuelle Komponenten stellen Datentypen dar und ermöglichen die Eingabe des entsprechenden Wertes. Eine visuelle Komponente kann mit nur einem Textlabel und einem Textfeld ausgerüstet sein oder auch etwas komplizierter. Sie weisen jedoch alle eine ähnliche Struktur auf und können deshalb leicht vererbt werden. Zum jetzigen Zeitpunkt sind visuelle Komponenten für alle primitiven Datentypen und deren Wrapper-Klassen implementiert. Arrays und Objekte die wiederum Datentypen enthalten werden ebenfalls visualisiert. Projektdokumentation.doc Druckdatum :32 24/48

25 Java Datentyp boolean byte double float int long short char java.lang.boolean java.lang.byte java.lang.double java.lang.float java.lang.integer java.lang.long java.lang.short java.lang.string java.lang.character Arrays Objekte / Beans Visuelle Klasse org.jcows.view.vcboolean org.jcows.view.vcbyte org.jcows.view.vcdouble org.jcows.view.vcfloat org.jcows.view.vcint org.jcows.view.vclong org.jcows.view.vcshort org.jcows.view.vcchar org.jcows.view.vcboolean org.jcows.view.vcbyte org.jcows.view.vcdouble org.jcows.view.vcfloat org.jcows.view.vcint org.jcows.view.vclong org.jcows.view.vcshort org.jcows.view.vcstring org.jcows.view.vcchar org.jcows.view.vcarray org.jcows.view.vccontainer Alle visuellen Komponenten (VC-Klassen) erben von der Superklasse org.jcows.view.vc. Diese definiert die Rahmenbedingungen. Abbildung 22: Klassendiagramm, Visuelle Komponenten Projektdokumentation.doc Druckdatum :32 25/48

26 Einbinden in die grafische Benutzeroberfläche Die visuellen Komponenten müssen in zwei Registern angezeigt werden, eines für die Web Service Anfrage und das andere für die Antwort. Dabei wird über einen horizontalen und vertikalen Balken das Register erweitert wenn die Komponenten mehr Platz einnehmen als das Register bietet. Abbildung 23: Request-Register mit drei visuellen Komponenten in einem Array dargestellt Projektdokumentation.doc Druckdatum :32 26/48

27 Abbildung 24: Response-Register mit drei visuellen Komponenten in einem Array dargestellt Ausrichtung der Kindelemente Eine visuelle Komponente umschliesst grafische SWT Elemente wie Labels und Textfelder. Weil der Aufbau dynamisch ist und die Ausrichtung dieser Kindelemente erst zur Laufzeit bekannt ist, bedarf es einem Layout-Manager. Der Layout-Manager richtet Kindelemente innerhalb des Vaterelementes (in unserem Fall eine visuelle Komponente) nach jeder Änderung aus. Die Ausrichtung ist abhängig von den davor bestimmten Abständen. Visuelle Komponente Label Textfeld Layout-Manager richtet Komponenten aus Hinzufügen von Validatoren Validatoren prüfen eine Texteingabe auf deren syntaktische Richtigkeit. Jeder visuellen Komponente können keine oder mehrere Validatoren angehängt werden. Wird zum Beispiel in einem Textfeld anstatt einer Zahl ein Buchstabe eingegeben kann vor dem Senden eine Meldung ausgegeben werden, dass die Eingabe ungültig ist. Projektdokumentation.doc Druckdatum :32 27/48

28 3.7.3 Mapping von Datentypen zu visuellen Komponenten Damit Java Datentypen visuell dargestellt werden können, bedarf es eines Mechanismus, der eine korrekte Zuweisung vornimmt. Diese Aufgabe übernimmt der VCMapper. Er weist Datentyp und Wert einer visuellen Komponente zu. Die Information, welcher Datentyp zu welcher Komponente gehört, entnimmt er einer XML- Datei Instanzierung Der VCMapper wird in mehreren Klassen verwendet. Damit nicht jedes Mal unnötig das XML-Dokument neu gelesen werden muss, wurde das Singleton-Pattern angewendet. Das Singleton-Pattern erlaubt nur eine Instanz des VCMappers XML- und XSD-Dokument Die Information, welcher Datentyp zu welcher Komponente gehört, entnimmt der VCMapper der XML-Datei vcmapper.xml. Für die Validerung wird dem XML-Parser zusätzlich die Schema-Datei vcschema.xsd bereitgestellt. Abbildung 25: Auszug aus der Datei vcmapper.xml In den einzelnen Elementen ist definiert, welche visuelle Komponente und deren Einstellungen zu welchem Datentyp passt. Element / Kindelement <mapping></mapping> <visualclass></visualclass> <javatype></javatype> <itemtype></itemtype> <defaultvalue></defaultvalue> <defaultvalidatorclass></defaultvalidatorclass> Attribute datatype Bedeutung Wurzelelement. Visuelle Komponente, die den Datentyp repräsentiert. Name des Datentyps innerhalb von Java. Zu jedem primitiven Datentyp gibt es noch die zugehörige Wrapper-Klasse. Der Itemtype definiert, was die visuelle Komponente implementieren soll. Standardwert, der im ParamListItem-Objekt gespeichert ist und in der visuellen Komponente angezeigt wird. Standard-Validator für die visuelle Komponente. Bedeutung Das Attribut datatype in <mapping datatype=" "> identifiziert das Mapping eindeutig. Projektdokumentation.doc Druckdatum :32 28/48

29 <?xml version="1.0"?> <!-- vcmapping.xsd --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:ab="http://www.jcows.org/vcschema" targetnamespace="http://www.jcows.org/vcschema" elementformdefault="qualified" attributeformdefault="unqualified"> <xsd:element name="visualcomponents"> <xsd:complextype> <xsd:sequence> <xsd:element name="mapping" type="ab:mapping" minoccurs="0" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:complextype name="mapping"> <xsd:sequence> <xsd:element name="visualclass"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <!-- <xsd:pattern value="[a-z\$_][a-za-z0-9\$_]*"/> --> </xsd:restriction> </xsd:simpletype> </xsd:element> <xsd:element name="javatype" type="xsd:string" minoccurs="0" maxoccurs="unbounded"/> <xsd:element name="itemtype" type="xsd:string"/> <xsd:element name="defaultvalue" type="xsd:string" minoccurs="0" maxoccurs="1"/> <xsd:element name="defaultvalidatorclass" minoccurs="0" maxoccurs="1"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <!-- <xsd:pattern value="[a-z\$_][a-za-z0-9\$_]*"/> --> </xsd:restriction> </xsd:simpletype> </xsd:element> </xsd:sequence> <xsd:attribute name="datatype" type="xsd:string" use="required"/> </xsd:complextype> </xsd:schema> Schema für die Validierung der XML-Datei Abbildung 26: Darstellung des XML-Schemas Für das Parsen und Validieren des XML-Dokuments wurde JDOM verwendet. DOM und JDOM sind eine Schnittstelle für die Arbeit mit XML-Dokumenten. Eine der grossen Nachteile von DOM gegenüber JDOM ist sein enormer Speicherbedarf und seine geringe Performance. Um bei JDOM zu einer besseren Lösung zu gelangen, wird zum Beispiel versucht, Teile des Dokuments erst bei Bedarf zu interpretieren. Im Hinblick auf die Laufzeiteffizienz scheint JDOM im Vergleich zu DOM deutliche Vorteile zu haben Zuweisung einer visuellen Komponente zu einem Datentyp Beim Parsen des XML-Dokuments wird eine Karte erstellt, die für jeden Datentyp die passende visuelle Komponente und den Standard-Validator enthält. Projektdokumentation.doc Druckdatum :32 29/48

30 Instanzierung einer visuellen Komponente Die effektive Instanzierung der visuellen Komponente und des Standard-Validators erfolgt auf zwei verschiedene Arten: mit einer bisher ungenutzten Datenstruktur (enthält Standardwerte) oder mit einer bestehenden. Eine ungenutzte Datenstruktur wird zur Verfügung gestellt, wenn eine Anfrage an einen Web Service gestellt werden möchte und noch keine Nutzdaten eingegeben wurden. Der Benutzer trägt seine Daten über die visuelle Komponente ein und sendet sie an den Web Service. Kann der Web Service die Anfrage beantworten, sendet er eine Antwort mit einer neuen Datenstruktur zurück. Die Antwort muss wiederum mit visuellen Komponenten dargestellt werden, mit dem Unterschied, dass nun effektive Daten angezeigt werden müssen und keine Standardwerte. Die Datenstruktur wird im ParamListItem-Objekt implementiert. Abbildung 27: Instanzierung mit Standardwerten Abbildung 28: Instanzierung mit effektiven Daten Layout Für die Ausrichtung der Kindelemente wird ein GridLayout-Manager verwendet, der jeweils ein Label und ein Textfeld in einer Reihe ausrichtet. Ein GridLayout-Manager ist im Prinzip wie eine Tabelle, die beliebig viele Zeilen und Spalten enthalten kann. Bei der Klasse VCArray hat die Tabelle nur eine Spalte, dafür aber eine unbeschränkte Anzahl Zeilen. Die visuellen Komponenten werden wiederum von einem Layout-Manager ausgerichtet. Überschreitet die Anzahl der Komponenten die Grösse des Request- oder Response- Composite, wird eine Scrollbar aktiviert. Projektdokumentation.doc Druckdatum :32 30/48

31 3.8 Validatoren Validatoren prüfen eine Texteingabe auf deren syntaktische Richtigkeit. Dies ist wichtig, da zum Beispiel ein Buchstabe nicht in eine Zahl umgewandelt werden kann. Jede visuelle Komponente mit Ausnahme von VCstring bekommt einen Standard-Validator bei der Konstruktion des Objekts zugewiesen. VCstring benötigt keinen Validator, da der Wert immer als Zeichenkette (String) interpretiert werden kann Standard-Validatoren Validator BooleanValidator ByteValidator CharValidator DoubleValidator FloatValidator IntValidator LongValidator ShortValidator Beschreibung Prüft, ob die Eingabe als wahr oder falsch interpretiert werden kann. Prüft, ob die Eingabe als Byte interpretiert werden kann. Prüft, ob die Eingabe einem einzelnen Zeichen entspricht. Prüft, ob die Eingabe als Fliesskommazahl mit doppelter Genauigkeit interpretiert werden kann. Prüft, ob die Eingabe als Fliesskommazahl interpretiert werden kann. Prüft, ob die Eingabe als Ganzzahl interpretiert werden kann. Prüft, ob die Eingabe als Ganzzahl interpretiert werden kann. Prüft, ob die Eingabe als Ganzzahl interpretiert werden kann. Abbildung 29: Klassendiagramm, Standard-Validatoren Zuweisung Einer visuellen Komponente können beliebig viele Validatoren angehängt werden. Standardmässig wird der in der Datei vcmapping.xml angegebene zugewiesen. Sind mehrere an eine visuelle Komponente angehängt, gilt die Texteingabe nur als korrekt, wenn alle Validatoren die Eingabe als gültig erklären. Abbildung 30: Sequenzdiagramm, Validierung Projektdokumentation.doc Druckdatum :32 31/48

32 3.8.3 Funktionsweise Ein Validator verwendet die in Java vorhandenen Parse-Funktionen. Kann eine Texteingabe nicht in einen bestimmten Wert geparst werden, tritt ein Fehler auf. Die Validierung ist somit fehlgeschlagen. Der Benutzer wird im Falle einer Nichtvalidierung durch eine Nachricht und eine Markierung des Texteingabefeldes informiert. Abbildung 31: Fehlermeldung Validator Dialog RegexValidator Der RegexValidator verwendet keine Parse-Funktionen. Er ermöglicht eine Validierung anhand von regulären Ausdrücken und lässt somit eine Texteingabe auf bestimmte Vor- oder Nichtvorkommnisse von Zeichen überprüfen. Beispiel eines regulären Ausdruckes, der eine adresse auf einfache Art prüft. Dem RegexValidator wird der reguläre Ausdruck bei der Objekt-Konstruktion mitgegeben. 3.9 Sichere Verbindungen Zusätzlich zu herkömmlichen HTTP-Verbindungen werden nun auch verschlüsselte Verbindungen zum Web Service über HTTPS unterstützt. Dafür wurde die Klasse JCowsX509TrustManager implementiert, welche den standardmässigen Trustmanager von Java erweitert. Dies ist nötig da wir zusätzlich zu Zertifikaten, welche von so genannten Trusted Authorities ausgestellt wurden, auch nichtvertrauenswürdige Zertifikate unterstützen wollen. Diese sollen jedoch nicht zu den global vertrauenswürdigen Zertifikaten von Java hinzugefügt werden sondern sollen lediglich im Rahmen unserer Applikation gültig sein. Falls das Zertifikat vertrauenswürdig ist erfolgt keine Benutzerinteraktion und der Web Service wird geladen. In diesem Falle übernimmt der Java-eigene Trustmanager die Validierung des Zertifikats. Hierzu bedient sich Java der Datei lib/security/cacerts im JAVA_HOME Verzeichnis. In dieser Datei sind vertrauenswürdige Autoritäten eingetragen welche gültige Zertifikate ausstellen. Im Falle eines nichtvertrauenswürdigen Zertifikats wird ein Dialog geöffnet mit Einzelheiten über das Zertifikat, welches der Benutzer dann akzeptieren oder verwerfen kann. Falls der Benutzer es wünscht, werden die neuen Zertifikate gespeichert, damit in Zukunft keine erneute Abfrage erfolgt. Hierzu wird eine neue truststore-datei angelegt. Diese wird beim nächsten Mal eingelesen und zusätzlich zu den vertrauenswürdigen Zertifikaten von Java überprüft Truststore Alle vertrauenswürdigen Zertifikate werden in einer so genannten truststore-datei abgespeichert. Es handelt sich dabei um eine binäre Datenbank-Datei welche optional mit einem Passwort geschützt werden kann. Diese Datei enthält alle Zertifikate von vertrauenswürdigen Servern. Bei einem Verbindungsaufbau über SSL wird in dieser Datei das Zertifikat des zu verbindenden Servers verifiziert. Die Java-Umgebung besitzt bereits eine solche Datei, namentlich die Datei lib/security/cacerts im JAVA_HOME Verzeichnis. Standardmässig enthält sie Zertifikate von vertrauenswürdigen Root Certification Authorities, also den Zertifizierungsstellen für digitale Zertifikate. Die bekanntesten unter diesen Zertifizierungsstellen sind VeriSign und Cybertrust. Zusätzlich zu diesen Einträgen sollen auch nichtvertrauenswürdige Zertifikate abgespeichert werden können. Ein Zertifikat kann entweder temporär oder permanent akzeptiert werden. Beim permanenten Akzeptieren wird das Zertifikat in eine truststore-datei gespeichert, welche alle zusätzlichen vertrauenswürdigen Zertifikate enthält. Diese Datei wird bei jedem gesicherten Verbindungsversuch eingelesen und das Zertifikat Projektdokumentation.doc Druckdatum :32 32/48

33 des Servers damit überprüft. Falls das Zertifikat das nächste Mal überprüft wird muss der Benutzer keine erneute Bestätigung abgeben. Beim temporären Akzeptieren wird das Zertifikat in eine temporäre truststore-datei abgelegt. Dieses Zertifikat ist lediglich für die aktuelle Sitzung gültig. Nach einem Neustart der Applikation muss das Zertifikat erneut bestätigt werden. Abbildung 32: Beispielausdruck der Datei trustedcerts 3.10 Logging Das Logging der Applikation wird vom Framework log4j übernommen. Dieses Framework ermöglicht es auf einfachste Weise Ziele der Logging-Ausgabe und den Level des Loggings zu definieren. In unserer Applikation wird die Ausgabe sowohl auf die Standardausgabe, also die Konsole, als auch in eine Datei namens jcows.log geschrieben. Der Level der Ausgabe macht in unserer Applikation nur Sinn als Debug und Info, alle weiteren Levels werden nicht benutzt. Im Debug-Level wird sehr viel Information ausgegeben. Vor allem das Axis-Framework erzeugt eine grosse Menge an Ausgabedaten. Durch Setzen des Levels auf Info verschwinden jedoch auch diese, sodass für den normalen Gebrauch der Applikation nur die wichtigsten Informationen ausgegeben werden. Die Einstellungen werden in der Datei config.properties gespeichert. Projektdokumentation.doc Druckdatum :32 33/48

34 3.11 Installationsroutine Nebst der lauffähigen Jar-Datei gibt es unter Windows auch die Möglichkeit, die Applikation zu installieren. Das Installationsprogramm richtet dabei ein Programmverzeichnis ein und erstellt Links zum Ausführen und Deinstallieren. Für das Erstellen des Installationsprogramms wurde NSIS 7 eingesetzt. NSIS oder auch Nullsoft Scriptable Install System ist ein Programm zur Erstellung von Installationsprogrammen unter Linux und Windows. NSIS verwendet für die Erstellung eines Installationsprogramms eine Skript-Datei. Die Skript-Datei wird durch einen Kommandozeilen-Compiler zu einer ausführbaren Datei kompiliert, die sämtliche Dateien und das Installationsprogramm enthält und damit sehr einfach verbreitet werden kann. Für Eclipse gibt es ein Plugin, welches das Editieren einer Skript-Datei und das Kompilieren ermöglicht. Skript-Editor in Eclipse Starten der Applikation Die Applikation wird durch Klicken des Links im Startmenü oder auf dem Desktop gestartet. Dabei zeigt der Link nicht direkt auf die Jar-Datei der Applikation sondern auf eine Exe-Datei. Die Exe-Datei ist eine Art Wrapper-Datei. Beim Aufruf prüft sie, ob die entsprechende Version von Java vorhanden ist und startet dann die Virtual Machine mit der Jar-Datei als Parameter. 7 Projektdokumentation.doc Druckdatum :32 34/48

35 Erstellen einer Exe-Datei Die ausführbare Datei wurde mit dem Programm Xenoage 8 erstellt. Xenoage ermöglicht die Angabe der Jar- Datei und der Java Version. Ist die erforderliche Java Version nicht installiert, wird eine Fehlermeldung beim Ausführen ausgegeben. Abbildung 33: Xenoage Java Exe Starter 3.12 Applikationseinstellungen Die Konfiguration der Applikation wird von zwei Komponenten übernommen: Der Konfigurationskomponente und der Nachrichtenkomponente. Die Daten für die beiden sind entsprechend in der Datei config.properties und messages.properties enthalten. Erstere enthält alle Konfigurationen für die Applikation, welche vom Benutzer verändert werden können, Letztere alle Nachrichten beziehungsweise textuellen Ausgaben welche die Applikation verwendet. Über die Klasse Properties können Konfigurations- und Nachrichtendaten gelesen und geschrieben werden. Die Nachrichten sind im Gegensatz zu der Konfiguration internationalisierbar, was bedeutet dass es für verschiedene Sprachen verschiedene Versionen davon haben kann. Dabei wird von der Javaklasse ResourceBundle gebrauch gemacht, welche diese Internationalisierung übernimmt. Dabei geht sie so vor, dass bei der Initialisierung zuerst eine Datei gesucht wird, welche den lokalisierten Einstellungen des Systems entspricht. Läuft die Applikation beispielsweise auf einem englischen System, wird zuerst nach der Datei messages.en.properties gesucht. Wird die Datei gefunden werden die darin enthaltenen lokalisierten Nachrichten verwendet. Kann keine entsprechende Datei gefunden werden, wird die Standarddatei messages.properties verwendet. Die Labels der grafischen Oberfläche sind zum jetzigen Zeitpunkt noch nicht ausgelagert. Für eine zukünftige Version sollen aber auch diese Meldungen in eine externe internationalisierbare Datei abgelegt werden. Somit ist zum Einen eine saubere Trennung von Meldungen und Quelltext gewährleistet und zum Anderen wird dadurch ebenfalls ermöglicht, dass die Übersetzung der Applikation von Drittpersonen übernommen werden kann, ohne dass der Quelltext selbst verändert werden muss Ressourcen Als Ressourcen werden zusätzliche Dateien bezeichnet. Eine Ressource kann zum Beispiel ein Bild oder eine Jar-Datei sein. Alle Ressourcen befinden sind im Programmordner /resources Grafiken Für die grafische Benutzeroberfläche wird das Silk Icon Set 9 von Mark James verwendet. Das Set kann frei verwendet werden Projektdokumentation.doc Druckdatum :32 35/48

36 3.14 Verwendete externe Komponenten Kompilation und Deployment Für die Kompilation und die Erstellung einer Jar-Datei der Anwendung wurde Ant eingesetzt. Da JCows unter Linux und Windows laufen muss, bedarf es pro Betriebssystem einer Kompilation und einer Jar-Datei. Es wird jeweils eine Kompilation benötigt, da SWT plattformabhängig ist. Zusätzlich bietet sich mit Ant die Möglichkeit, über FTP Bibliotheken von unserer Projekthomepage zu beziehen Ant Tasks Task init compile clean dist run docs libs all uploads libs Beschreibung Erstellt die Verzeichnisse für die kompilierten Klassen und die Jar-Dateien. Kompiliert die Applikation. Löscht die Verzeichnisse in welchem sich die kompilierten Klassen und Jar-Dateien befinden. Erstellt aus den kompilierten Klassen pro Betriebssystem jeweils eine Jar-Datei. Startet JCows. Erstellt die Java Dokumentation mittels javadoc. Bezieht alle benötigten externen Bibliotheken für die Kompilation über die Projekthomepage Führt clean, compile, docs und dist aus. Kopiert alle benötigten externen Bibliotheken für die Kompilation auf die Projekthomepage Dieser Task benötigt Benutzername und Passwort Einbinden von Bibliotheken Das Einbinden von externen Bibliotheken stellt sich immer wieder als Mühsam dar. Das Problem ist, dass der Standardklassenlader nicht auf Klassen in einer Jar-Datei, die wiederum in einer Jar-Datei ist, zugreifen kann. Beinhaltet also ein Jar-Datei A.jar wiederum eine Jar-Datei B.jar, dann sind die Klassen in B.jar dem Klassenlader nicht bekannt und er kann sie nicht initialisieren. Um dieses Problem zu lösen, bedarf es eines eigenen Klassenladers, eines Tools wie Fatjar 10 oder man entpackt alle externen Bibliotheken und kopiert sie in die Jar-Datei der eigenen Applikation. Der Vorteil vom Letzteren ist die Einfachheit, da auf spezielle Klassenlader oder andere Tools verzichtet werden kann. Mit Ant lassen sich alle Bibliotheken zuerst entpacken und dann zum JCows Applikations-Jar hinzufügen. Abbildung 34: Ant dist Task 10 Projektdokumentation.doc Druckdatum :32 36/48

37 Ausführen von Ant Ant lässt sich in der Kommandozeile mit dem Befehl ant aufrufen. Abbildung 35: Aufruf von ant in der Windows Kommandozeile Um JCows selber zu kompilieren oder um mitzuentwickeln bedarf es einer Kopie der Quelltexte und der externen Bibliotheken. Die externen Bibliotheken können über die Projekthomepage oder über den Hersteller bezogen werden. Werden Sie über den Hersteller bezogen, müssen sie im Verzeichnis lib abgespeichert werden. Sie werden nicht im SVN Repository abgespeichert, da sie nicht direkt zum Quelltext gehören und schnell wechseln können Eingebundene fremde Bibliotheken Bibliothek ant-launcher.jar ant.jar axis.jar commons-discovery.jar commons-logging.jar jaxrpc.jar jdom.jar junit.jar log4j.jar saaj.jar wsdl4j.jar Beschreibung Wird für die Kompilation der Stellvertreterobjekte verwendet die durch Axis generiert werden. Wird für die Kompilation der Stellvertreterobjekte verwendet die durch Axis generiert werden. Enthält die Axis-Engine. Wird für das Logging (log4j) benötigt. Wird für das Logging (log4j) benötigt. Ermöglicht das Ansprechen von Web Services mittels Objekten. Wird für das Parsen der XML-Dateien vcmapper.xml und vcschema.xsd verwendet. Wird für das Testen der Klassen verwendet. Wird für das Logging (log4j) benötigt. Wird von Axis verwendet. Wird von WSDL2Java-Parser benötigt. Projektdokumentation.doc Druckdatum :32 37/48

38 4 JUnit Testing der Applikation JUnit 11 ist ein Framework zum Testen von Java-Programmen, das besonders für automatisierte Tests einzelner so genannter Units (meist Klassen oder Methoden) geeignet ist. Ein JUnit-Test kennt nur zwei Ergebnisse: Entweder der Test gelingt oder nicht. Das Misslingen kann als Ursache einen Fehler (Error) oder ein falsches Ergebnis (Failure) haben, die beide per Exception signalisiert werden. Der Unterschied zwischen den beiden Begriffen liegt darin, dass Failures erwartet werden, während Errors eher unerwartet auftreten. Technisch werden Failures mittels einer speziellen Exception namens AssertionFailedError signalisiert, während alle übrigen Exceptions vom JUnit- Framework als Error interpretiert werden. JUnit ist ein integrierter Bestandteil von Eclipse. Dieses bietet hervorragende Möglichkeiten um darin Tests durchzuführen. JUnit 4.x bietet zu dem die Möglichkeit, sämtliche Testklassen innerhalb eines Pakets abzuarbeiten ohne explizit eine Testsuite zu erstellen. Alle Testklassen befinden sich im Paket org.jcows.test. Die Tests können gestartet werden, indem ein Paket ausgewählt wird und über Run As Junit Test ausgewählt wird. Die Testklassen innerhalb des Pakets werden danach sequenziell abgearbeitet. Abbildung 36: Starten einer Testsuite 11 Projektdokumentation.doc Druckdatum :32 38/48

39 4.1 Logik Testen von JCowsLogic Schwierig ist das Testen der Klasse JCowsLogic. Um zu testen, ob die Klasse JCowsLogic überhaupt einen Web Service aufrufen und die Stellvertreterobjekte davon kompilieren kann, bedarf es unter anderem der Hilfsklasse XMethods welche URLs von der gleichnamigen Homepage liefert und der Templateklasse TestSoapLogicTemplate übergibt. Die Templateklasse ist selbst eine Testklasse und erstellt dynamisch die Testklasse TestSoapLogicDynamic, die Methoden enthält um jeden Web Service testen. Dieses Vorgehen ist nötig, da erst zur Laufzeit bekannt ist, welche Web Services getestet werden können, da die XMethods-Klasse URLs direkt von der Homepage liefert. Wurde die Klasse TestSoapLogicDynamic erstellt, kann sie im JUnit-Kontrollfenster von Eclipse abgearbeitet werden. Ziel dieses Tests ist zu erkennen, wie viele Web Services mit JCows angesprochen werden können. Dieser Test sagt jedoch nichts darüber aus, wie später die Interaktion (aufrufen von Methoden etc.) funktioniert. Es kann auch nicht unterschieden, welche Fehler auftreten. Tritt ein Socket- Timeout auf, gilt der Test als nicht bestanden, obwohl nicht darüber ausgesagt werden kann, ob dieser Web Service bei bestehender Netzwerkverbindung ansprechbar wäre. Abbildung 37: Sequenzdiagramm, Testablauf Hier wird durch die Templateklasse TestSoapLogicTemplate die effektive Klasse TestSoapLogicDynamic erstellt. Sie bezieht URLs zum Testen und erstellt damit Testmethoden. Projektdokumentation.doc Druckdatum :32 39/48

40 Abbildung 38: Templateklasse erzeugt die Testklasse Projektdokumentation.doc Druckdatum :32 40/48

41 Abbildung 39: Abarbeitung der Testklasse TestSoapLogicDynamic in Eclipse Für einen ausführlicheren Test, jedoch ohne das JUnit Framework zu verwenden, kann die Klasse XMethodsTest (siehe Kapitel 4.3) verwendet werden. Sie gibt auf der Kommandozeile den genauen Fehler aus. Der Nachteil dieser Klasse ist, dass sie sich nicht in eine JUnit-Testsuite einbinden lässt Konkretes Testen anhand eines Test Web Services Um zu testen, ob Werte korrekt übermittelt und empfangen werden, wurde ein Test Web Service entwickelt, der den gleichen Wert retourniert wie übermittelt wird. Dieser Service bietet für jeden primitiven Datentyp, dessen Wrapper-Klasse und Arrays davon eine Methode an. In der Testklasse wird jeweils ein ParamListItem-Objekt mit Werten erstellt, übermittelt und verglichen, ob das retournierte mit dem gesendeten übereinstimmt. Zu diesem Zweck wurde die Methode equals in ParamListItem überschrieben. Projektdokumentation.doc Druckdatum :32 41/48

Technische Beschreibung: EPOD Server

Technische Beschreibung: EPOD Server EPOD Encrypted Private Online Disc Technische Beschreibung: EPOD Server Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee JKU Linz Institut für

Mehr

Einrichtung einer Projektzeitenmanager Datenbank auf einem Firebird Datenbankserver. Mit Hilfe des Programmes pzmadmin v1.6.x

Einrichtung einer Projektzeitenmanager Datenbank auf einem Firebird Datenbankserver. Mit Hilfe des Programmes pzmadmin v1.6.x Einrichtung einer Projektzeitenmanager Datenbank auf einem Firebird Datenbankserver Mit Hilfe des Programmes pzmadmin v1.6.x Inhaltsverzeichnis Inhaltsverzeichnis...2 Voraussetzungen...3 Schritt 1: Verbindungsdaten

Mehr

Technische Dokumentation IPCalculator

Technische Dokumentation IPCalculator Technische Dokumentation IPCalculator Version 1.0 Daut Musolli und Alexander Rieke Inhalt Einleitung... 1 Technische Details... 1 Konsolenanwendung... 1 Klassendiagramm... 1 Methoden... 1 Grafische Benutzeroberfläche...

Mehr

Situationsanalyse.doc

Situationsanalyse.doc Hochschule für Technik und Architektur Biel Projekt Polyphemus II Dateiname: Revisionsstatus: Autor:.doc Genehmigt Matthias Germann Änderungskontrolle Version Datum Name Bemerkungen 1 23.04.2002 Matthias

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

Dokumentation. juris Autologon-Tool. Version 3.1

Dokumentation. juris Autologon-Tool. Version 3.1 Dokumentation juris Autologon-Tool Version 3.1 Inhaltsverzeichnis: 1. Allgemeines... 3 2. Installation Einzelplatz... 3 3. Installation Netzwerk... 3 4. Konfiguration Netzwerk... 3 4.1 Die Autologon.ini...

Mehr

Inhaltsverzeichnis. 2.2 Grundlagen der UML... 41. 2.3 Zusammenfassung... 53

Inhaltsverzeichnis. 2.2 Grundlagen der UML... 41. 2.3 Zusammenfassung... 53 Vorwort......................................................... 13 1 Vorbereitungen.................................................. 17 1.1 JDK-Installation unter Windows................................

Mehr

TYPO3 Redaktoren-Handbuch

TYPO3 Redaktoren-Handbuch TYPO3 Redaktoren-Handbuch Kontakt & Support: rdv interactive ag Arbonerstrasse 6 9300 Wittenbach Tel. 071 / 577 55 55 www.rdvi.ch Seite 1 von 38 Login http://213.196.148.40/typo3 Username: siehe Liste

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Das Handbuch zu KSnapshot

Das Handbuch zu KSnapshot Richard J. Moore Robert L. McCormick Brad Hards Korrektur: Lauri Watts Entwickler: Richard J Moore Entwickler: Matthias Ettrich Übersetzung des Handbuchs: Robert Gogolok Übersetzung des Handbuchs: Kilian

Mehr

Updateseite_BuV-PlugIn-NERZ-Gesamt

Updateseite_BuV-PlugIn-NERZ-Gesamt Autoren Dipl.-Ing. H. C. Kniß Dipl.-Math. L. Givorgizova Ersteller Geschäftsstelle NERZ e. V. Kölner Straße 30 D-50859 Köln Version: 5.0 Stand: 15.02.2013 Status: akzeptiert 1 Allgemeines 1.1 Änderungsübersicht

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Zuweiserportal - Zertifikatsinstallation

Zuweiserportal - Zertifikatsinstallation Zuweiserportal - Zertifikatsinstallation Inhaltsverzeichnis 1. Installation des Clientzertifikats... 1 1.1 Windows Vista / 7 mit Internet Explorer 8... 1 1.1.1 Zertifikatsabruf vorbereiten... 1 1.1.2 Sicherheitseinstellungen

Mehr

E-Mail Verschlüsselung

E-Mail Verschlüsselung E-Mail Verschlüsselung S/MIME Standard Disclaimer: In der Regel lässt sich die Verschlüsselungsfunktion störungsfrei in den E-Mail-Programmen einrichten. Es wird aber darauf hingewiesen, dass in einigen

Mehr

Dokumentation Projekt Virtuelles Tagebuch

Dokumentation Projekt Virtuelles Tagebuch Priv.Doz. Dr. Michael Hahsler Institut für Informationswirtschaft Dokumentation Projekt (Matr. Nr. 9806106) - 1 - 1 Problembeschreibung Das Ziel dieses Projektes ist es, ein Tagebuch in elektronischer

Mehr

PDF-OVER INSTALLATION UND BEDIENUNG

PDF-OVER INSTALLATION UND BEDIENUNG PDF-OVER INSTALLATION UND BEDIENUNG Es werden auf allen Plattformen die gleichen JAVA Basisprogramme verwendet. Zur einfacheren Handhabung sind an die Plattform angepasste Installationsprogramme, Startprogramme

Mehr

RÖK Typo3 Dokumentation

RÖK Typo3 Dokumentation 2012 RÖK Typo3 Dokumentation Redakteur Sparten Eine Hilfe für den Einstieg in Typo3. Innpuls Werbeagentur GmbH 01.01.2012 2 RÖK Typo3 Dokumentation Inhalt 1) Was ist Typo3... 3 2) Typo3 aufrufen und Anmelden...

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

Mehr

bnsyncservice Installation und Konfiguration bnnetserverdienst Voraussetzungen: KWP Informationssysteme GmbH Technische Dokumentation

bnsyncservice Installation und Konfiguration bnnetserverdienst Voraussetzungen: KWP Informationssysteme GmbH Technische Dokumentation bnsyncservice Voraussetzungen: Tobit DAVID Version 12, DVWIN32: 12.00a.4147, DVAPI: 12.00a.0363 Exchange Server (Microsoft Online Services) Grundsätzlich wird von Seiten KWP ausschließlich die CLOUD-Lösung

Mehr

CGM JESAJANET Zuweiserportal - Zertifikatsinstallation

CGM JESAJANET Zuweiserportal - Zertifikatsinstallation CGM JESAJANET Zuweiserportal - Zertifikatsinstallation CGM JESAJANET Zuweiserportal - Zertifikatsinstallation Revision Nr. 5 Erstellt: BAR Geprüft: AG Freigegeben: CF Datum: 10.10.2012 Inhaltsverzeichnis

Mehr

NetMan Desktop Manager Quick-Start-Guide

NetMan Desktop Manager Quick-Start-Guide NetMan Desktop Manager Quick-Start-Guide In diesem Dokument wird die Installation von NetMan Desktop Manager beschrieben. Beachten Sie, dass hier nur ein Standard-Installationsszenario beschrieben wird.

Mehr

Auszug aus Axis2 Übungen

Auszug aus Axis2 Übungen Auszug aus Axis2 Schulung -1- Auszug aus Axis2 Übungen Version 1.1 Dieses Dokument ist ein Auszug aus unserem Übungsskript zur Axis2-Schulung. Es dient lediglich als Beispiel für unsere Kursunterlagen.

Mehr

VPN-System Benutzerhandbuch

VPN-System Benutzerhandbuch VPN-System Benutzerhandbuch Inhalt Einleitung Antiviren-Software 5 Einsatzgebiete 6 Web Connect Navigationsleiste 8 Sitzungsdauer 9 Weblesezeichen 9 Junos Pulse VPN-Client Download Bereich 9 Navigationshilfe

Mehr

Das Handbuch zu Blogilo. Mehrdad Momeny Übersetzung: Burkhard Lück

Das Handbuch zu Blogilo. Mehrdad Momeny Übersetzung: Burkhard Lück Mehrdad Momeny Übersetzung: Burkhard Lück 2 Inhaltsverzeichnis 1 Einführung 5 2 Blogilo benutzen 6 2.1 Erste Schritte......................................... 6 2.2 Einen Blog einrichten....................................

Mehr

09.10.2015. 02.10.2015 + 07.10.2015 Seite 1. 02.10.2015 + 07.10.2015 Seite 2

09.10.2015. 02.10.2015 + 07.10.2015 Seite 1. 02.10.2015 + 07.10.2015 Seite 2 02.10.2015 + 07.10.2015 Seite 1 02.10.2015 + 07.10.2015 Seite 2 1 Anzahl der Klassenarbeiten: Mindestens zwei Klassenarbeiten pro Halbjahr (= 4 KA pro Jahr) Im ersten Ausbildungsjahr gibt es jedoch kein

Mehr

ANT. Kurzvortrag von Manuel Schulze. mschulze@inf.fu-berlin.de

ANT. Kurzvortrag von Manuel Schulze. mschulze@inf.fu-berlin.de ANT Kurzvortrag von Manuel Schulze mschulze@inf.fu-berlin.de ANT Überblick Teilprojekt der Apache Software Foundation [1] ANT ist Opensource Build-Tool ähnlich wie make (?) jedoch voll auf Java zugeschnitten

Mehr

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 6 Abgabe: Montag, 05.12.2011, 12.00 Uhr, Informatik

Mehr

Bedienungsanleitung für den SecureCourier

Bedienungsanleitung für den SecureCourier Bedienungsanleitung für den SecureCourier Wo kann ich den SecureCourier nach der Installation auf meinem Computer finden? Den SecureCourier finden Sie dort, wo Sie mit Dateien umgehen und arbeiten. Bei

Mehr

Programmierung eines NewsTickers in Java

Programmierung eines NewsTickers in Java Programmierung eines NewsTickers in Java ( & ) Projektarbeit Programmiertechnik:Java NTA FH Isny 12. Info David Mayr / Andreas Krug Seite 1 von 7 ::: David Mayr / Andreas Krug [ 12. Info NTA FH Isny ]

Mehr

1. Einführung. 2. Vorbereitung zur Installation. 1.1 Eclipse

1. Einführung. 2. Vorbereitung zur Installation. 1.1 Eclipse 1. Einführung 1.1 Eclipse Die Eclipse ist eine kostenlose integrierte Entwicklungsumgebung oder auch IDE genannt, (Abkürzung IDE, engl. Integrated development enviroment). Sie ist eine grafische Benutzeroberfläche

Mehr

Tutorial. Bibliothek AutoGUITest V1.0. Windows-Benutzeroberflächen automatisiert testen. Ausgabe: 6.6.02. 06.06.02 / 13:51 Seite 1

Tutorial. Bibliothek AutoGUITest V1.0. Windows-Benutzeroberflächen automatisiert testen. Ausgabe: 6.6.02. 06.06.02 / 13:51 Seite 1 Bibliothek AutoGUITest V1.0 Windows-Benutzeroberflächen automatisiert testen Tutorial Ausgabe: 6.6.02 06.06.02 / 13:51 Seite 1 Inhalt 1 Übersicht...3 2 Funktionsweise...3 3 Funktionsumfang...3 4 Einsatz

Mehr

RIWA NetUpdater Tool für automatische Daten- und Softwareupdates

RIWA NetUpdater Tool für automatische Daten- und Softwareupdates RIWA NetUpdater Tool für automatische Daten- und Softwareupdates Grundlegendes... 1 Ausführbare Dateien und Betriebsmodi... 2 netupdater.exe... 2 netstart.exe... 2 netconfig.exe... 2 nethash.exe... 2 Verzeichnisse...

Mehr

PADS 3.0 Viewer - Konfigurationen

PADS 3.0 Viewer - Konfigurationen PADS 3.0 Viewer - Konfigurationen Net Display Systems (Deutschland) GmbH - Am Neuenhof 4-40629 Düsseldorf Telefon: +49 211 9293915 - Telefax: +49 211 9293916 www.fids.de - email: info@fids.de Übersicht

Mehr

Installation TAPI + Konfiguration Outlook

Installation TAPI + Konfiguration Outlook Installation TAPI + Konfiguration Outlook von Lukas Ziaja lz@metasec.de Stand: 15. September 2007 Inhaltsverzeichnis Historie und Änderungsverlauf...3 Copyright und gesetzliche Anmerkungen...3 Installation

Mehr

Installation TKGS Hundesportprogramm unter Windows 8

Installation TKGS Hundesportprogramm unter Windows 8 Kunde: Projekt: Bereich: Auftrag: TKGS der SKG Hundesportprogramm Dokumentation PL: Installation TKGS Hundesportprogramm unter Windows 8 Das TKGS Hundesportprogramm läuft grundsätzlich auch unter Windows

Mehr

Bedienungsanleitung GOZ-Handbuch der Landeszahnärztekammer Baden-Württemberg

Bedienungsanleitung GOZ-Handbuch der Landeszahnärztekammer Baden-Württemberg Bedienungsanleitung GOZ-Handbuch der Landeszahnärztekammer Baden-Württemberg LZK BW 12/2009 Bedienungsanleitung GOZ-Handbuch Seite 1 Lieferumfang Zum Lieferumfang gehören: Eine CD-Rom GOZ-Handbuch Diese

Mehr

CINEMA 4D RELEASE 10. Installationsanleitung 3D FOR THE REAL WORLD

CINEMA 4D RELEASE 10. Installationsanleitung 3D FOR THE REAL WORLD CINEMA 4D RELEASE 10 3D FOR THE REAL WORLD Installationsanleitung 1 Die Installation von CINEMA 4D Release 10 1. Vor der Installation Bevor Sie das Programm installieren, beachten Sie bitte folgendes:

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

LDAP-Server. Jederzeit und überall auf Adressen von CAS genesisworld zugreifen

LDAP-Server. Jederzeit und überall auf Adressen von CAS genesisworld zugreifen LDAP-Server Jederzeit und überall auf Adressen von CAS genesisworld zugreifen Copyright Die hier enthaltenen Angaben und Daten können ohne vorherige Ankündigung geändert werden. Die in den Beispielen verwendeten

Mehr

Zeiterfassung-Konnektor Handbuch

Zeiterfassung-Konnektor Handbuch Zeiterfassung-Konnektor Handbuch Inhalt In diesem Handbuch werden Sie den Konnektor kennen sowie verstehen lernen. Es wird beschrieben wie Sie den Konnektor einstellen und wie das System funktioniert,

Mehr

AccountPlus Systemkonfiguration

AccountPlus Systemkonfiguration Anwenderhandbuch AccountPlus Systemkonfiguration Version 1.10 Inhalt: 1 ANWENDUNG... 3 2 DAS PROGRAMM... 3 2.1 Startparameter...5 2.2 Die Karteikarte ACCTPLUS.INI...5 2.3 Die Karteikarte Datenbanken...5

Mehr

Lenze OPC UA Kommunikation V1.0

Lenze OPC UA Kommunikation V1.0 Verwendete Komponenten: Lenze: 94xx: Highline FW 12 Easy Starter: 1.6 OPC UA Client: Softing OPC UA Client V1.2 Unified Automation UAexpert V1.2.2 175 Der Easy Starter verfügt ab der Version 1.6 über eine

Mehr

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger Informatik II Hinweise: Die Bearbeitungszeit beträgt 90

Mehr

LEGO-Mindstorms-Roboter im Informatikunterricht 1 - mit Java-

LEGO-Mindstorms-Roboter im Informatikunterricht 1 - mit Java- Eckart Modrow LEGO-Mindstorms-Roboter S. 1 LEGO-Mindstorms-Roboter im Informatikunterricht 1 - mit Java- Benutzung in einer Programmierumgebung Für die LEGO-Roboter stehen unter allen gängigen Betriebssystemen

Mehr

Erstellung eines SharkNet Installers für Windows mit Inno Setup Compiler 5.4.2

Erstellung eines SharkNet Installers für Windows mit Inno Setup Compiler 5.4.2 Erstellung eines SharkNet Installers für Windows mit Inno Setup Compiler 5.4.2 1. Benötigte Software Zur Erstellung des Installers wird folgende Software benötigt. Es wird sich in dieser Dokumentation

Mehr

WufooConnector Handbuch für Daylite 4

WufooConnector Handbuch für Daylite 4 WufooConnector Handbuch für Daylite 4 WufooConnector Handbuch für Daylite 4 1 Allgemeines 1.1 Das WufooConnector Plugin für Daylite 4 4 2 Einrichtung 2.1 2.2 2.3 Installation 6 Lizensierung 8 API Key einrichten

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Anleitung - Mass E-Mailer 2.6. 2003 by Patrick Biegel 25.06.2005

Anleitung - Mass E-Mailer 2.6. 2003 by Patrick Biegel 25.06.2005 Anleitung - Mass E-Mailer 2.6 2003 by Patrick Biegel 25.06.2005 Inhalt Einleitung...3 Neu in der Version 2.6...3 Installation...4 Links...4 E-Mail Form...5 Send E-Mails...7 Edit List...8 Save List...9

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Byte-Taxi. Bedienungsanleitung. Seite 1 von 8

Byte-Taxi. Bedienungsanleitung. Seite 1 von 8 Byte-Taxi Bedienungsanleitung Seite 1 von 8 Inhaltsverzeichnis 1. Beschreibung 3 2. Systemvoraussetzungen 4 3. Installationsanleitung 5 4. Bedienung 6 5. Infos & Kontakt 8 Seite 2 von 8 1. Beschreibung

Mehr

Scripting Framework PowerShell Toolkit Quick-Install a Workplace for Packaging and Test

Scripting Framework PowerShell Toolkit Quick-Install a Workplace for Packaging and Test Scripting Framework PowerShell Toolkit Quick-Install a Workplace for Packaging and Test Windows Client Management AG Alte Haslenstrasse 5 CH-9053 Teufen wincm.ch 1 Quick Install - Scripting Framework Workplace...3

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Java-Vorkurs 2015. Wintersemester 15/16

Java-Vorkurs 2015. Wintersemester 15/16 Java-Vorkurs 2015 Wintersemester 15/16 Herzlich Willkommen! package de.unistuttgart.47.01.javavorkurs; public class WelcomeErstis { public static void main(string[] args){ System.out.println( Herzlich

Mehr

Merkblatt: HSM. Version 1.01. Systemvoraussetzungen, Setup und Trouble Shooting. pdfsupport@pdf-tools.com

Merkblatt: HSM. Version 1.01. Systemvoraussetzungen, Setup und Trouble Shooting. pdfsupport@pdf-tools.com Merkblatt: HSM Version 1.01 Systemvoraussetzungen, Setup und Trouble Shooting Kontakt: pdfsupport@pdf-tools.com Besitzer: PDF Tools AG Kasernenstrasse 1 8184 Bachenbülach Schweiz www.pdf-tools.com Copyright

Mehr

Anwenderdokumentation PersoSim

Anwenderdokumentation PersoSim Anwenderdokumentation PersoSim Die nachfolgende Anwenderdokumentation soll dem Anwender bei der Installation und den ersten Schritten im Umgang mit PersoSim helfen. Installation Grundvoraussetzung für

Mehr

MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29)

MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29) MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29) Dieses Dokument beschreibt das Herunterladen der Serversoftware, die Installation und Konfiguration der Software. Bevor mit der Migration der

Mehr

Das Handbuch zu KSystemLog. Nicolas Ternisien

Das Handbuch zu KSystemLog. Nicolas Ternisien Nicolas Ternisien 2 Inhaltsverzeichnis 1 KSystemLog verwenden 5 1.1 Einführung.......................................... 5 1.1.1 Was ist KSystemLog?................................ 5 1.1.2 Funktionen.....................................

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Technische Dokumentation SilentStatistikTool

Technische Dokumentation SilentStatistikTool Technische Dokumentation SilentStatistikTool Version 1.0 Marko Schröder 1115063 Inhalt Einleitung... 3 Klasse Program... 3 Klasse ArgumentHandler... 3 Bereitgestellte Variablen... 3 Bereitgestellte Methoden...

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Benutzerdokumentation Web-Portal

Benutzerdokumentation Web-Portal GRUPP: SWT0822 Benutzerdokumentation Web-Portal Yet Another Reversi Game Martin Gielow, Stephan Mennicke, Daniel Moos, Christine Schröder, Christine Stüve, Christian Sura 05. Mai 2009 Inhalt 1. Einleitung...3

Mehr

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.cpp 1.2

Mehr

CARM-Server. Users Guide. Version 4.65. APIS Informationstechnologien GmbH

CARM-Server. Users Guide. Version 4.65. APIS Informationstechnologien GmbH CARM-Server Version 4.65 Users Guide APIS Informationstechnologien GmbH Einleitung... 1 Zugriff mit APIS IQ-Software... 1 Zugang konfigurieren... 1 Das CARM-Server-Menü... 1 Administration... 1 Remote-Konfiguration...

Mehr

Es gibt situationsabhängig verschiedene Varianten zum Speichern der Dokumente. Word bietet im Menü DATEI unterschiedliche Optionen an.

Es gibt situationsabhängig verschiedene Varianten zum Speichern der Dokumente. Word bietet im Menü DATEI unterschiedliche Optionen an. 3. SPEICHERN DATEIEN SPEICHERN Dateien werden in Word Dokumente genannt. Jede Art von Datei, die Sie auf Ihrem Computer neu erstellen, befindet sich zuerst im Arbeitsspeicher des Rechners. Der Arbeitsspeicher

Mehr

SmarTeam MS Outlook Integration Version 3.1 Beschreibung des Funktionsumfangs

SmarTeam MS Outlook Integration Version 3.1 Beschreibung des Funktionsumfangs SmarTeam MS Outlook Integration Version 3.1 Beschreibung des Funktionsumfangs Der Aufbau der MS Outlook Integration orientiert sich stark an den SmarTeam Integrationen zu den MS Office Produkten, wobei

Mehr

Software Engineering I

Software Engineering I Software I Übungsblatt 1 + 2 Claas Pinkernell Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 Welche Werkzeuge? Programmiersprache Java Integrierte Entwicklungsumgebung Eclipse

Mehr

VisiScan 2011 für cobra 2011 www.papyrus-gmbh.de

VisiScan 2011 für cobra 2011 www.papyrus-gmbh.de Überblick Mit VisiScan für cobra scannen Sie Adressen von Visitenkarten direkt in Ihre Adress PLUS- bzw. CRM-Datenbank. Unterstützte Programmversionen cobra Adress PLUS cobra Adress PLUS/CRM 2011 Ältere

Mehr

SIHLNET E-Mail-Konfiguration

SIHLNET E-Mail-Konfiguration SIHLNET E-Mail-Konfiguration Inhaltsverzeichnis 1. Allgemeines...2 2. OWA...2 2.1. Anmeldung... 2 2.2. Arbeiten mit OWA... 3 2.2.1. Neue E-Mail versenden... 3 2.2.2. E-Mail beantworten / weiterleiten...

Mehr

ARAkoll 2013 Dokumentation. Datum: 21.11.2012

ARAkoll 2013 Dokumentation. Datum: 21.11.2012 ARAkoll 2013 Dokumentation Datum: 21.11.2012 INHALT Allgemeines... 3 Funktionsübersicht... 3 Allgemeine Funktionen... 3 ARAmatic Symbolleiste... 3 Monatsprotokoll erzeugen... 4 Jahresprotokoll erzeugen

Mehr

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken Virtueller Campus Virtueller Campus Horw mit interaktiver Steuerung Bachelor Diplomarbeit FS 2013 Inhaltsverzeichnis 1. EINLEITUNG... 1 2. VORBEDINGUNGEN... 1 3. ORDNERSTRUKTUR ERWEITERN... 1 4. PROJEKT

Mehr

SX3 PC Software rev. 0.99c

SX3 PC Software rev. 0.99c SX3 PC Software rev. 0.99c SX3 ist ein Programm zur Steuerung einer Selectrix Digitalzentrale unter Linux bzw. Windows. Mit SX3 haben Sie die Möglichkeit Selectrix -Loks zu fahren, Weichen zu Schalten

Mehr

Installationsanleitung für Internet Security. Inhalt

Installationsanleitung für Internet Security. Inhalt Installationsanleitung für Internet Security Inhalt 1 Systemanforderungen für Internet Security...2 2 Installationsanleitung: Internet Security für einen Test auf einem Computer installieren...3 3 Installationsanleitung

Mehr

Wurm-Lizenzserver Internetverbindung über Port 80 (http) Bei aktiver Firewall muss die Ausnahme für die URL http://ls.wurm.de eingerichtet werden

Wurm-Lizenzserver Internetverbindung über Port 80 (http) Bei aktiver Firewall muss die Ausnahme für die URL http://ls.wurm.de eingerichtet werden Der Wurm Lizenzmanager Der Wurm Lizenzmanager dient als Lizenzserver für Software der Firma Wurm. Die Installation erfolgt auf einem Rechner innerhalb des jeweiligen Intranets. Dadurch kann auf separate

Mehr

ULDA-BH11E. Excel-Anwendung-Buchhaltung

ULDA-BH11E. Excel-Anwendung-Buchhaltung Excel-Anwendung-Buchhaltung ULDA-BH11E 1. Eigenschaften 2. Installation 3. Makros in Excel 2010 aktivieren 4. Hinweise zur Eingabe der Daten 5. Dateneingabe im Blatt Eingabe 6. das Blatt Kunden 7. das

Mehr

ekey TOCAhome pc Software Inhaltsverzeichnis 1. ZWECK DIESES DOKUMENTS... 3 2. VERWENDUNGSHINWEIS ZUR SOFTWARE... 3

ekey TOCAhome pc Software Inhaltsverzeichnis 1. ZWECK DIESES DOKUMENTS... 3 2. VERWENDUNGSHINWEIS ZUR SOFTWARE... 3 Inhaltsverzeichnis Software ekey TOCAhome pc 1. ZWECK DIESES DOKUMENTS... 3 2. VERWENDUNGSHINWEIS ZUR SOFTWARE... 3 3. MONTAGE, INSTALLATION UND ERSTINBETRIEBNAHME... 3 4. VERSION... 3 Version 1.5 5. BENUTZEROBERFLÄCHE...

Mehr

Ausarbeitung zum Vortrag Java Web Start von Adrian Fülöp Fach: Komponentenbasierte Softwareentwicklung WS 06/07 Fachhochschule Osnabrück

Ausarbeitung zum Vortrag Java Web Start von Adrian Fülöp Fach: Komponentenbasierte Softwareentwicklung WS 06/07 Fachhochschule Osnabrück Ausarbeitung zum Vortrag Java Web Start von Adrian Fülöp Fach: Komponentenbasierte Softwareentwicklung WS 06/07 Fachhochschule Osnabrück Adrian Fülöp (297545) - 1 - Inhaltsverzeichnis: 1. Einführung 2.

Mehr

Anleitung zur Webservice Entwicklung unter Eclipse

Anleitung zur Webservice Entwicklung unter Eclipse Entwicklungsumgebung installieren Sofern Sie nicht an einem Praktikumsrechner arbeiten, müssen Sie ihre Eclipse-Umgebung Webservice-fähig machen. Dazu benötigen Sie die Entwicklungsumgebung Eclipse for

Mehr

Einfu hrung in Subversion mit TortoiseSVN

Einfu hrung in Subversion mit TortoiseSVN Einfu hrung in Subversion mit TortoiseSVN Inhalt Konzept... 1 Begriffe... 1 Werkzeuge... 2 Arbeiten mit TortoiseSVN... 2 Vorbereitung... 2 Erster Checkout... 2 Hinzufügen eines neuen Verzeichnisses...

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Einführung in git. Ben Oswald. 27. April 2014. Im Rahmen der Vorlesung Entwicklung mobiler Anwendungen

Einführung in git. Ben Oswald. 27. April 2014. Im Rahmen der Vorlesung Entwicklung mobiler Anwendungen Einführung in git Im Rahmen der Vorlesung Entwicklung mobiler Anwendungen Ben Oswald 27. April 2014 Inhaltsverzeichnis 1 Einleitung 1 1.1 Was ist git?..................................... 1 1.2 Warum sollten

Mehr

ABB i-bus KNX. Software-Information. Melde- und Bedientableau. Typ: MT 701.2

ABB i-bus KNX. Software-Information. Melde- und Bedientableau. Typ: MT 701.2 Produkt: Melde- und Bedientableau Typ: MT 701.2 Aktuelles Anwendungsprogramm Plug-In für ETS 2 MT_701_2_ETS2_SOW_xx_V1-12a_de_en.exe Plug-In für ETS 3 MT_701_2_ETS3_SOW_xx_V1-12a_de_en.exe EIBTAB: MT_701_2_EIBTAB_SOW_de_V2-08-00A_EibTab+Firmware.EXE

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

FlowFact Alle Versionen

FlowFact Alle Versionen Training FlowFact Alle Versionen Stand: 29.09.2005 Brief schreiben, ablegen, ändern Die FlowFact Word-Einbindung macht es möglich, direkt von FlowFact heraus Dokumente zu erzeugen, die automatisch über

Mehr

Installation/Update und Konfiguration des Renderservice (v1.7.0)

Installation/Update und Konfiguration des Renderservice (v1.7.0) Installation/Update und Konfiguration des Renderservice (v1.7.0) [edu- sharing Team] [Dieses Dokument beschreibt die Installation und Konfiguration des Renderservice.] edu- sharing / metaventis GmbH Postfach

Mehr

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme.

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme. Informatik I 05. November 2013 6. Python-, kommentieren, starten und entwickeln Informatik I 6. Python-, kommentieren, starten und entwickeln Bernhard Nebel Albert-Ludwigs-Universität Freiburg 05. November

Mehr

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen

Mehr

Serie 3: Designbeschreibung Verantwortlich für Rose-Projekt und Designbeschreibungen Dang, Quoc Anh / Phan, Ngoc Diep / Xiongjie Ding

Serie 3: Designbeschreibung Verantwortlich für Rose-Projekt und Designbeschreibungen Dang, Quoc Anh / Phan, Ngoc Diep / Xiongjie Ding DESIGNBESCHREIBUNG. 1. Allgemeines.? GeoViewer ist eine menügesteuerte graphische Java-Applikation. VonGEO-Record wird die vordefinierte geometrische Konfiguration geladen, im GeoProver-Paket berechnet

Mehr

Draexlmaier Group. Schulungsunterlage für Lieferanten DRÄXLMAIER Supplier Portal

Draexlmaier Group. Schulungsunterlage für Lieferanten DRÄXLMAIER Supplier Portal Draexlmaier Group Schulungsunterlage für Lieferanten DRÄXLMAIER Supplier Portal Version Juli 2015 Inhalt Registrierung als neuer Lieferant... 3 Lieferantenregistrierung... 3 Benutzerregistrierung... 4

Mehr

Anleitung für TYPO3... 1. Bevor Sie beginnen... 2. Newsletter anlegen... 2. Inhalt platzieren und bearbeiten... 3. Neuen Inhalt anlegen...

Anleitung für TYPO3... 1. Bevor Sie beginnen... 2. Newsletter anlegen... 2. Inhalt platzieren und bearbeiten... 3. Neuen Inhalt anlegen... Seite 1 von 11 Anleitung für TYPO3 Inhalt Anleitung für TYPO3... 1 Bevor Sie beginnen... 2 Newsletter anlegen... 2 Inhalt platzieren und bearbeiten... 3 Neuen Inhalt anlegen... 3 Bestehenden Inhalt bearbeiten...

Mehr

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013 1 Vorwort OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013 Folgende Beschreibung wurde mit einem Ubuntu 7.10 mit Kernel 2.6.22-14, OpenVPN 2.0.9 und KVpnc 0.9.1-rc1 getestet. Ein weiterer erfolgreicher

Mehr

H A E S S L E R. DoRIS Office Add-In. DoRIS Baustein für die Integration von MS Office in DoRIS. Installation & Anleitung

H A E S S L E R. DoRIS Office Add-In. DoRIS Baustein für die Integration von MS Office in DoRIS. Installation & Anleitung H A E S S L E R DoRIS Office Add-In DoRIS Baustein für die Integration von MS Office in DoRIS Installation & Anleitung DoRIS Office Add-In. DoRIS Baustein für die Integration von MS Office in DoRIS Installation

Mehr

Das Handbuch zu Desktop Sharing. Brad Hards Übersetzung: Frank Schütte

Das Handbuch zu Desktop Sharing. Brad Hards Übersetzung: Frank Schütte Brad Hards Übersetzung: Frank Schütte 2 Inhaltsverzeichnis 1 Einleitung 5 2 Das Remote Frame Buffer -Protokoll 6 3 Verwendung von Desktop Sharing 7 3.1 Verwaltung von Desktop Sharing-Einladungen.....................

Mehr

Hinweis: Der Zugriff ist von intern per Browser über die gleiche URL möglich.

Hinweis: Der Zugriff ist von intern per Browser über die gleiche URL möglich. Was ist das DDX Portal Das DDX Portal stellt zwei Funktionen zur Verfügung: Zum Ersten stellt es für den externen Partner Daten bereit, die über einen Internetzugang ähnlich wie von einem FTP-Server abgerufen

Mehr

Neue Steuererklärung 2013 erstellen

Neue Steuererklärung 2013 erstellen Neue Steuererklärung 2013 erstellen Bitte klicken Sie im Startmenü auf die Schaltfläche Steuererklärung 2013 NEU Anschliessend wird der folgende Dialog angezeigt. Wenn Sie die letztjährige Steuererklärung

Mehr

Computeria Solothurn

Computeria Solothurn Computeria Solothurn Seniorinnen und Senioren entdecken den Computer und das Internet Sich mit «TeamViewer» von einem Supporter helfen lassen Diese Anleitung und die Illustrationen wurden unter Mac OS

Mehr

DaKirsche Desktop.ini Maker 2

DaKirsche Desktop.ini Maker 2 DaKirsche Desktop.ini Maker 2 Inhaltsverzeichnis Inhaltsverzeichnis... 2 Programminformationen... 3 Funktionalität... 3 Lizenz... 3 Programmaufbau... 4 Das Zielverzeichnis... 4 Die Verzeichniseinstellungen...

Mehr