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

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

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

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

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

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

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

Installation und Dokumentation. juris Autologon 3.1

Installation und Dokumentation. juris Autologon 3.1 Installation und Dokumentation juris Autologon 3.1 Inhaltsverzeichnis: 1. Allgemeines 3 2. Installation Einzelplatz 3 3. Installation Netzwerk 3 3.1 Konfiguration Netzwerk 3 3.1.1 Die Autologon.ini 3 3.1.2

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

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

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

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

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

Subversion. von Stefan Arndt, Christian Autermann und Dustin Demuth. 5. November 2009

Subversion. von Stefan Arndt, Christian Autermann und Dustin Demuth. 5. November 2009 Subversion von Stefan Arndt, Christian Autermann und Dustin Demuth 5. November 2009 Inhaltsverzeichnis 1 Versionierung 1 1.1 Zweck von Versionierung................................. 1 1.2 Geschichtliches......................................

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

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

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

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 Software Testing Automatisiert Manuell 100% 70% 1 Überwiegender Teil der Testing Tools fokusiert auf automatisiertes Testen Microsoft

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

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

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

http://www.cis.upenn.edu/~bcpierce/unison/download/stable/unison- 2.9.1/

http://www.cis.upenn.edu/~bcpierce/unison/download/stable/unison- 2.9.1/ Einführung Was ist Unison? Unison ist ein Dateisynchronisationsprogramm für Windows und Unix. Es teilt sich viele Funktionen mit anderen Programmen, wie z.b. CVS und rsync. Folgend einige Vorteile des

Mehr

URT Eclipse All in one

URT Eclipse All in one URT Eclipse All in one Das Paket Eclipse All in one enthält Programme und Einstellungen, die zum Programmieren mit Eclipse in Zusammenarbeit mit Subversion und ANT benötigt werden. Dieses Paket dient als

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

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java Grundlagen von Java Aufgabe 1: Typen und Zuweisungen in Java Welche der folgenden Java-Anweisungen sind fehlerhaft? Handelt es sich um einen Compiler- oder einen Laufzeitfehler? Anmerkung: Folgefehler

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

Kapitel 3 Das Projekt Bankkonto Seite 1

Kapitel 3 Das Projekt Bankkonto Seite 1 Kapitel 3 Das Projekt Bankkonto Seite 1 3 Das Projekt Bankkonto Nun wirst du dich etwas gründlicher mit dem Quelltext einer Klasse beschäftigen. Du lernst, wie zwei Objekte eine gemeinsame Aufgabe erledigen.

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

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

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

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

Installationsanleitung Expertatis

Installationsanleitung Expertatis Installationsanleitung Expertatis 1. Komplettinstallation auf einem Arbeitsplatz-Rechner Downloaden Sie die Komplettinstallation - Expertatis_Komplett-Setup_x32.exe für ein Windows 32 bit-betriebssystem

Mehr

1. BlueJ installieren (nach dem Buch Java lernen mit BlueJ von David J. Barnes; Michael Kölling)

1. BlueJ installieren (nach dem Buch Java lernen mit BlueJ von David J. Barnes; Michael Kölling) 1. BlueJ installieren... 1 2. BlueJ auf die deutsche Version umstellen... 1 3. BlueJ Extensions... 2 a. Klassenkarte... 2 i. UML Extension... 2 ii. Klassenkarte zum Schulbuch... 3 b. CNU BlueJ Code Formatter...

Mehr

Hello World in Java. Der Weg zum ersten Java-Programm

Hello World in Java. Der Weg zum ersten Java-Programm Vorwort Hello World in Java Der Weg zum ersten Java-Programm Diese Anleitung wurde unter Windows XP verfasst. Grundsätzlich sollte sie auch unter späteren Windows Versionen wie Windows Vista oder Windows

Mehr

So bringst du Prolog zum Laufen...

So bringst du Prolog zum Laufen... Diese Anleitung soll dir dabei helfen den freien Prolog-Interpreter SWI-Prolog zu installieren einen geeigneten Texteditor auszuwählen, mit dem du Prolog-Programme schreiben kannst das erste kleine Programm

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

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

CIB ZUGFERD SDK TECHNISCHE DOKUMENTATION

CIB ZUGFERD SDK TECHNISCHE DOKUMENTATION > Technical Support & Services CIB ZUGFERD SDK TECHNISCHE DOKUMENTATION Technical Support & Services > Stand: 28. Januar 2014 Version 1.03 CIB software GmbH > Technical Support & Services > CIB ZUGFeRD

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

Enigma2 Plugin Entwicklung mit Eclipse

Enigma2 Plugin Entwicklung mit Eclipse Enigma2 Plugin Entwicklung mit Eclipse Enigma2 Plugin Entwicklung mit Eclipse 1/15 Inhaltsverzeichnis 1 ÜBER... 3 2 INSTALLATION... 4 2.1 INSTALLATION VON ECLIPSE... 4 2.2 INSTALLATION VON PYDEV... 4 3

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

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

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

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

White Paper. Embedded Treiberframework. Einführung

White Paper. Embedded Treiberframework. Einführung Embedded Treiberframework Einführung White Paper Dieses White Paper beschreibt die Architektur einer Laufzeitumgebung für Gerätetreiber im embedded Umfeld. Dieses Treiberframework ist dabei auf jede embedded

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

Bereitstellung von Werkzeugen für den Alltag. Extended Automation

Bereitstellung von Werkzeugen für den Alltag. Extended Automation Bereitstellung von Werkzeugen für den Alltag Extended Automation Wie entstand die Idee? Kundenaufträge mit unterschiedlichen Herausforderungen Neue Mitarbeiter, neue Ideen, neue Ansätze unbelastet von

Mehr

webpdf für VMware SoftVision Development GmbH Kurfürstenstraße 15 36037 Fulda, Deutschland Tel.: +49 (0)661 25100-0 Fax: +49 (0)661 25100-25

webpdf für VMware SoftVision Development GmbH Kurfürstenstraße 15 36037 Fulda, Deutschland Tel.: +49 (0)661 25100-0 Fax: +49 (0)661 25100-25 webpdf für VMware SoftVision Development GmbH Kurfürstenstraße 15 36037 Fulda, Deutschland Tel.: +49 (0)661 25100-0 Fax: +49 (0)661 25100-25 E-Mail: sales@softvision.de Web: www.softvision.de Inhaltsverzeichnis

Mehr

OPC-Server VM OPC. Anleitung. Installation, Konfiguration, Verwendung. Version 1.01

OPC-Server VM OPC. Anleitung. Installation, Konfiguration, Verwendung. Version 1.01 Installation, Konfiguration, Verwendung Version 1.01 Seite 2 von 20 OPC-Server VM OPC Revision Version Erstellt am Versionsnummer Bemerkung 1.00 26.07.2013 Erstellung 1.01 05.11.2013 2.14 - Reiter der

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

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

Bedienungsanleitung. FarmPilot-Uploader

Bedienungsanleitung. FarmPilot-Uploader Bedienungsanleitung FarmPilot-Uploader Stand: V1.20110818 31302736-02 Lesen und beachten Sie diese Bedienungsanleitung. Bewahren Sie diese Bedienungsanleitung für künftige Verwendung auf. Impressum Dokument

Mehr

Konfiguration von Mozilla Thunderbird

Konfiguration von Mozilla Thunderbird 1 of 18 23.03.07 TU Wien > ZID > Zentrale Services > Mailbox-Service > Mail-Clients > Mozilla Thunderbird Konfiguration von Mozilla Thunderbird Allgemeines Der kostenlose Mail-Client Mozilla Thunderbird

Mehr

WordPress installieren und erste Einblicke ins Dashboard

WordPress installieren und erste Einblicke ins Dashboard WordPress installieren und erste Einblicke ins Dashboard Von: Chris am 16. Dezember 2013 In diesem Tutorial zeige ich euch wie ihr WordPress in der aktuellen Version 3.7.1 auf eurem Webspace installieren

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Die angegebenen Versionsnummern beziehen sich jeweils auf die Datei DbbLxGui.exe.

Die angegebenen Versionsnummern beziehen sich jeweils auf die Datei DbbLxGui.exe. Change Log: DBB/LX Die angegebenen Versionsnummern beziehen sich jeweils auf die Datei DbbLxGui.exe. 1. Version 4.5.0.1243 1. AF: Das Tool Datenbank neu aufbauen wurde ergänzt. Damit können Datenbanken,

Mehr

Mai 2011. Deutsche Übersetzung von Marion Göbel verfaßt mit epsilonwriter

Mai 2011. Deutsche Übersetzung von Marion Göbel verfaßt mit epsilonwriter Aplusix 3 - Installationshandbuch Mai 2011 Deutsche Übersetzung von Marion Göbel verfaßt mit epsilonwriter 1. Arten der Installation Eine Server-Installation wird mit einem Kauf-Code durchgeführt. Ein

Mehr

Inhalt: Version 1.7.5

Inhalt: Version 1.7.5 Inhalt: Objekte ohne Methoden Objekte mit einfachen Methoden Objekte und Methoden mit Parametern Objekte und Methoden mit Rückgabewert Objekte mit einem Array als Attribut Beziehungen zwischen Objekten

Mehr

PeDaS Personal Data Safe. - Bedienungsanleitung -

PeDaS Personal Data Safe. - Bedienungsanleitung - PeDaS Personal Data Safe - Bedienungsanleitung - PeDaS Bedienungsanleitung v1.0 1/12 OWITA GmbH 2008 1 Initialisierung einer neuen SmartCard Starten Sie die PeDaS-Anwendung, nachdem Sie eine neue noch

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

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

Synchronisations -Assistent 2.6

Synchronisations -Assistent 2.6 TimePunch Synchronisations -Assistent 2.6 Benutzerhandbuch 22.10.2014 TimePunch KG, Wormser Str. 37, 68642 Bürstadt Dokumenten Information: Dokumenten-Name Benutzerhandbuch, Synchronisations-Assistent

Mehr

Java-IDE-Vergleich Seite 1 / 5

Java-IDE-Vergleich Seite 1 / 5 Java-IDE-Vergleich Seite 1 / 5 Java-IDEs im Vergleich 1. Getestete IDEs: Borland JBuilder 3 Professional Edition IBM Visual Age 3 Entry Edition Sun Forte 1.01 Community Edition Microsoft Visual J++ 6.0

Mehr

Installation Anleitung für JTheseus und MS SQL Server 2000

Installation Anleitung für JTheseus und MS SQL Server 2000 Installation Anleitung für JTheseus und MS SQL Server 2000 Inhaltsverzeichnis 1 Installation der Datenbank 3 1.1 Erstellen der Datenbank 3 1.2 Tabellen und Minimal Daten einlesen 4 1.3 Benutzer JTheseus

Mehr

Kurzbeschreibung PC-Software für das Gerät URO-2050

Kurzbeschreibung PC-Software für das Gerät URO-2050 Kurzbeschreibung PC-Software für das Gerät URO-2050 1 Einleitung 1.1 Allgemeines Das Programm kann zum Verwalten der durchgeführten Untersuchungen mit dem Gerät URO-2050 benutzt werden. Es funktioniert

Mehr

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel Orville Bennett Übersetzung: Thomas Bögel 2 Inhaltsverzeichnis 1 Einführung 5 2 KNetAttach verwenden 6 2.1 Hinzufügen von Netzwerkordnern............................ 6 3 Rundgang durch KNetAttach 8 4 Danksagungen

Mehr

Anleitung zur Konfiguration eines E-Mail-Kontos unter Outlook 2013 mit dem Exchange- oder IMAP-Protokoll. hslu.ch/helpdesk Andere

Anleitung zur Konfiguration eines E-Mail-Kontos unter Outlook 2013 mit dem Exchange- oder IMAP-Protokoll. hslu.ch/helpdesk Andere IT Services Support Werftestrasse 4, Postfach 2969, CH-6002 Luzern T +41 41 228 21 21 hslu.ch/helpdesk, informatikhotline@hslu.ch Luzern, 27. Oktober 2014 Seite 1/9 Kurzbeschrieb: Anleitung zur Konfiguration

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

Der virtuelle HP Prime-Taschenrechner

Der virtuelle HP Prime-Taschenrechner Der virtuelle HP Prime-Taschenrechner HP Teilenummer: NW280-3002 Ausgabe 2, Februar 2014 Rechtliche Hinweise Dieses Handbuch sowie die darin enthaltenen Beispiele werden in der vorliegenden Form zur Verfügung

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

Archiv. Zum Vergrößern auf das Bild klicken.

Archiv. Zum Vergrößern auf das Bild klicken. Konfiguration von Microsoft Entourage Links: Entourage ist Teil von Microsoft Office für Mac OS X. Es kann als reines Mail-Programm für beliebige POP- oder IMAP-Postfächer benuzt werden, aber erst im Zusammenspiel

Mehr

Microsoft System Center Data Protection Manager 2010 installieren & konfigurieren

Microsoft System Center Data Protection Manager 2010 installieren & konfigurieren Microsoft System Center Data Protection Manager 2010 installieren & konfigurieren Inhalt Data Protection Manager 2010 Installieren... 2 Große Festplatte für Backup s hinzufügen... 7 Client Agent installieren...

Mehr

Konfiguration und Verwendung von MIT - Hosted Exchange

Konfiguration und Verwendung von MIT - Hosted Exchange Konfiguration und Verwendung von MIT - Hosted Exchange Version 3.0, 15. April 2014 Exchange Online via Browser nutzen Sie können mit einem Browser von einem beliebigen Computer aus auf Ihr MIT-Hosted Exchange

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

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Seminararbeit Ruby Uno Kartenspiel

Seminararbeit Ruby Uno Kartenspiel Seminararbeit Ruby Uno Kartenspiel Autor: Fabian Merki Fabian Merki 05.11.2006 1 von 10 Inhaltsverzeichnis Einleitung... 3 Die Idee... 4 Design und Implementierung in Ruby... 5 Testing... 7 Startbefehle...

Mehr

0. Inhaltsverzeichnis

0. Inhaltsverzeichnis 0. Inhaltsverzeichnis 0. Inhaltsverzeichnis...1 1. Kurze Einführung WebService Architektur...2 1.1 Synchrones Modell:...2 1.2 Asynchrones Modell:...2 1.3 Vorteile:...3 1.4 Voraussetzungen...3 2. Testseite

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

Lösungsvorschlag für Übungsblatt 4 Software Engineering 1 (WS 2012/13)

Lösungsvorschlag für Übungsblatt 4 Software Engineering 1 (WS 2012/13) Prof. Ina Schaefer Software Systems Engineering TU Braunschweig Lösungsvorschlag für Übungsblatt 4 Software Engineering 1 (WS 2012/13) Ausgabe: Kleine Übung: 07. Dezember/10. Dezember 2012 Abgabe: Kleine

Mehr

KURZANLEITUNG CLOUD BLOCK STORAGE

KURZANLEITUNG CLOUD BLOCK STORAGE KURZANLEITUNG CLOUD BLOCK STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung......Seite 03 2. Anlegen eines dauerhaften Block Storage...Seite 04 3. Hinzufügen von Block Storage

Mehr

Leistungsbeschreibung. PHOENIX Archiv. Oktober 2014 Version 1.0

Leistungsbeschreibung. PHOENIX Archiv. Oktober 2014 Version 1.0 Leistungsbeschreibung PHOENIX Archiv Oktober 2014 Version 1.0 PHOENIX Archiv Mit PHOENIX Archiv werden Dokumente aus beliebigen Anwendungen dauerhaft, sicher und gesetzeskonform archiviert. PHOENIX Archiv

Mehr

3 Task-Leiste Ziele des Kapitels:

3 Task-Leiste Ziele des Kapitels: 3 Task-Leiste Ziele des Kapitels: $ Die Task-Leiste ist ein zentrales Element von Windows 95. Dieses Kapitel zeigt Ihnen, wie Sie die Task-Leiste bei Ihrer Arbeit mit Windows 95 sinnvoll einsetzen können.

Mehr

Anleitung zur Konfiguration eines E-Mail-Kontos unter Outlook 2010 mit dem Exchange- oder IMAP-Protokoll. hslu.ch/helpdesk Andere

Anleitung zur Konfiguration eines E-Mail-Kontos unter Outlook 2010 mit dem Exchange- oder IMAP-Protokoll. hslu.ch/helpdesk Andere IT Services Support Werftestrasse 4, Postfach 2969, CH-6002 Luzern T +41 41 228 21 21 hslu.ch/helpdesk, informatikhotline@hslu.ch Luzern, 27. Oktober 2014 Seite 1/10 Kurzbeschrieb: Anleitung zur Konfiguration

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

eduroam mit persönlichem Zertifikat unter Windows 7 und Vista

eduroam mit persönlichem Zertifikat unter Windows 7 und Vista eduroam mit persönlichem Zertifikat unter Windows 7 und Vista Stand: 22. Januar 2015 1 Vorwort Folgende Beschreibung wurde auf einer virtuellen Maschine mit Windows 7 (Patch- Stand: 05.10.11) erstellt

Mehr

INSTALLATION OFFICE 2013

INSTALLATION OFFICE 2013 INSTALLATION OFFICE 2013 DURCH OFFICE 365 Zur Verfügung gestellt von PCProfi Informatique SA Einleitung Das folgende Dokument beschreibt Ihnen Schritt für Schritt, wie man Office Umgebung 2013 auf Ihren

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

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

1 Websites mit Frames

1 Websites mit Frames 1 Websites mit Frames Mehrere Seiten in einer einzelnen Seite anzeigen - Was sind Frames und wie funktionieren sie? - Was sind die Vor- und Nachteile von Frames? - Wie erstellt man eine Frames- Webseite?

Mehr

Change Log. Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema..

Change Log. Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema.. Change Log 15.09.2015 Version 2.0.3.9 Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema.. 15.01.2015 Version 2.0.3.8 Unter Optionen können jetzt zusätzliche Parameter

Mehr

Manuelle Installation des SQL Servers:

Manuelle Installation des SQL Servers: Manuelle Installation des SQL Servers: Die Installation des SQL Servers ist auf jedem Windows kompatiblen Computer ab Betriebssystem Windows 7 und.net Framework - Version 4.0 möglich. Die Installation

Mehr

FIOS. 1. Voraussetzungen für FDE: Foto Verbund Info und Order Service FDE Installation Version 3.0

FIOS. 1. Voraussetzungen für FDE: Foto Verbund Info und Order Service FDE Installation Version 3.0 FIOS Foto Verbund Info und Order Service FDE Installation Version 3.0 Diese Anleitung beschreibt die Installation und Einrichtung von FIOS-Data-Exchange (kurz: FDE). Mit Hilfe von FDE können Sie via Datenfernübertragung

Mehr

Erste Schritte mit LimeSurvey Pädagogische Hochschule Heidelberg

Erste Schritte mit LimeSurvey Pädagogische Hochschule Heidelberg 1 Dieses Script ist als Schnellstart gedacht, um das Prinzip von LimeSurvey zu verstehen. Zahlreiche Optionen stehen zur individuellen Erstellung von Umfragen zur Verfügung ein ausführliches Benutzerhandbuch

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

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

Einführung zu den Übungen aus Softwareentwicklung 1

Einführung zu den Übungen aus Softwareentwicklung 1 Einführung zu den Übungen aus Softwareentwicklung 1 Dipl.-Ing. Andreas Riener Universität Linz, Institut für Pervasive Computing Altenberger Straße 69, A-4040 Linz riener@pervasive.jku.at SWE 1 // Organisatorisches

Mehr

Klassenattribute und -methoden, Vererbung

Klassenattribute und -methoden, Vererbung Klassenattribute und -methoden, Vererbung Michael Dienert 27. März 2002 1 Prüfungsaufgabe Anwendungsentwicklung Winter 2001 Die folgende Aufgabe stammt aus der Abschlussprüfung für Fachinformatiker Anwendungsentwicklung

Mehr

Installationsanleitung Netzwerklizenzen Vectorworks 2014

Installationsanleitung Netzwerklizenzen Vectorworks 2014 Installationsanleitung Netzwerklizenzen Vectorworks 2014 Beginnt Ihre Seriennummer mit einem G, lesen Sie hier weiter. Beginnt Ihre Seriennummer mit einem C, lesen Sie bitte auf Seite 4 weiter. Installation

Mehr