Autor Thema: HELP:Webservices-> Swing Client als Webservices Consumer  (Gelesen 15061 mal)

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Hi,

hier ein paar gesammelte Infos für den Swing Client für !!Help!!:
1. Swing ist eine komplexe Library. Ich hab relativ wenig Erfahrung damit. Mein Problem mit Swing Anwendungen war immer, dass mit den ganzen Listenern, Adaptern, Widgets, Models, Threading-Zeugs, etc. das ganze immer hin zu einem schwer zu maintainenden Chaos tendierte.
In diesem Projekt versuche ich nun - basierend auf einem Buch von Scott Delap - gewisse Architektur- und Designrichtlinien einzubauen, so dass es mit wachsender Größe maintainable bleibt. Dies könnte vielleicht für andere interessant sein, die ebenfalls mit Spwing (oder einer anderen GUI-Library) arbeiten. Viele der Ideen lassen sich vermutlich auch auf swt/JFace übertragen. Ich werde dazu noch was in hoffentlich verständlichen Form posten. Wenn ich bestimmte Konzepte erstmal nicht so schnell kapiere (aktuell namentlich Binding und Validation Libraries von Karsten Lentzsch) gehe ich in eng abgegrenzten Teilbereichen erstmal Low Tech, um Funktionalitäten zu implementieren. Dies schreib ich dann aber später um.

2. Ich kann dieses Projekt auf sourceforge.net publizieren. So können andere leicht auf den Code zugreifen. Ich hab vor bis spätestens Montag den Source ins cvs meines Sourceforge.net -Projekts zu bringen. Würd mich über Mitarbeit, Code-Bashing und Vorschläge freuen.

3. Dieses Projekt benutzt als Datenbasis den Webservices Layer der erfolgreichen Domino Helpdesk Anwendung !!Help!! von Thomas und Ulrich. Der Webservices-Producer Teil auf der HELP Seite ist zur Zeit noch eine Art Technologie-Proof-Of-Concept. Wir wollen nun bald eine fachliche Analyse der Anforderungen an einen Webservices Client durchführen und damit den Service entsprechend designen, dass er auch wirklich aus Sicht eines potentiellen Anwenders sinnvoll einzusetzen ist. Ich bemühe mich auch deshalb um eine solide Codebasis, um auf Erweiterungen/Änderungen des Webservices Producers auf HELP Seite schnell reagieren zu können. Dieses Projekt soll uns auch dazu dienen, Webservices vernünftig zu planen und zu designen.

4. Es existiert eine strenge Trennung zwischen GUI-Layer sowie den separierten Business und Service Layern. Die Business und Service Layer können später wiederverwendet werden, um z.B. mit Servlets/JSPs oder auch Mobile Java darauf zuzugreifen, wobei mit Mobile Java die Service und Business Layer leicht auf J2ME umgeschrieben werden müßten. Als Framework für Servlets/JSP schwebt mir Spring mit Webworks2 vor, aber das ist Zukunftsmusik.

5. Genau wie !!HELP!! besitzt dieses Projekt Unterstützung für Internationalisierung/Lokalisierung.

Unten der aktuelle Screenshot mit englischem Locale.

Gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #1 am: 15.01.06 - 20:51:37 »
Tja. Da rede ich so groß von: Wir-müssen-erstmal-eine-Design-Analyse machen und ich verliebe mich in Swing-the-Scott-Delap-way.  ;D
Ich unterstütze jetzt verschiedene Ansichten.
Hab mir überlegt, dass man 2 "Navigatoren" anbietet:
1. für die Tickets an denen der User selbst beteiligt ist
2. Alle Tickets.

Der Anwender kann dann auswählen.

Ich hab jetzt die ganze Zeit an Punkt 1) gearbeitet. Hier sind verschieden sortierte Ansichten möglich (fertig ist: der User als Supporter, sortiert nach Status und nach Ersteller).
Die beiden Ansichten sind immer synchronisiert. Die Auswahl nicht. Ist aber erstmal nicht so wichtig.
Im Test benutze ich den User Heinz Ulrich Krause. Geht eigentlich ganz gut. Im Inneren werden es auch eher weniger als mehr öffentliche Methoden und das ist ein gutes Zeichen:
Der Prozess ist nicht unbedingt schnell aber kontrolliert. Aber ich lerne ja auch viel dabei.
Ulrich sollte mal ein titleProperty für TICKET und TICKETDETAIL spendieren.  ;D



Axel

« Letzte Änderung: 16.01.06 - 00:49:21 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #2 am: 16.01.06 - 14:56:49 »
Zitat
Ulrich sollte mal ein titleProperty für TICKET und TICKETDETAIL spendieren.

gerne, was soll denn da drinstehen ?
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #3 am: 16.01.06 - 15:43:12 »
Das ist eine gute Frage. Ich hätte einen Titel erwartet. Aber tatsächlich wird in HELP auch Problem in den Ansichten verwendet. Und da kann sehr viel drinstehen.
Zumindest in einem JTree halte ich das darstellungstechnisch für problematisch, auch wenn es technologisch machbar ist. Werd mir wohl fürs erste die ersten 20 Zeichen von problem holen.

Was mir jetzt bei HELP aufgefallen ist, sind die Auswahllisten (z.B. die Felder application, failureType und failureSubType). Für bestimmte Dokumente vom Typ  "CONFIG":"CONFIGDEPENDAND" sollte es imho einen eigenen WSDL geben (find ich). Solche Konfigurationseinstellungen können dann im Client in einer eingebetteten HSQL oder Derby-Datenbank abgespeichert werden. So werd ichs in Java machen.
Der Swing Client kann ja einfach die Dokumente so wie in Notes darstellen.
Bitte schicke Datumsfelder nicht als String sondern als Datum runter.

Was ich nicht kapiere sind Aktionen und Teilaufgaben. Gibt es da eine Beschreibung für?



Übrigens gilt auch für die Internationalisierung, dass dies am besten synchronisiert wird. Ich hab mir bisher im Client meine eigene Mapping-Tabelle geschrieben. Ich sollte die gleichen Keys wie ihr in LanguageDocs verwenden. Ist es eigentlich normal, dass meine deutschen LanguageDocs alle englisch sind?

Gruß Axel
« Letzte Änderung: 16.01.06 - 15:45:10 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #4 am: 16.01.06 - 17:14:05 »
Zitat
Was ich nicht kapiere sind Aktionen und Teilaufgaben. Gibt es da eine Beschreibung für?

Die Aktionen stammen aus der Ur-Zeit der Anwendung. Da habe ich einfach nur eine Möglichkeit eingebaut, Einzelaktionen zack zack hintereinander einzugeben. Quasi als Info, wenn mehrere an einem Ticket arbeiten.
Die werden aber spätestens in V 2.0 ebenso wegfallen, wie der Reiter Historie. Die Teilaufgaben werden die Aktionen ersetzen.

Beim Titel hatte ich eigendlich gedacht, daß man sich consumerseitig aus den übermittelten responses was passendes zusammenklöppelt. Mögicherweise habe ich da aber einen Denkfehler.

Zitat
Für bestimmte Dokumente vom Typ  "CONFIG":"CONFIGDEPENDAND" sollte es imho einen eigenen WSDL geben (find ich).

sehe ich genau so ...

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #5 am: 16.01.06 - 18:01:18 »
Äh nein Ulrich, da gibt es ein Veto von mir  8)...

Die Aktion binden noch ein paar Sachen mehr ein, die man mit Teilaufgaben nicht lösen kann. Sie sind zum Beispiel dafür notwendig um zu einem Ticket oder einer Aufgabe gehörende Zeiten die für Auswertungen benötigt werden zu erfassen. Wo ich dir zustimme, was wegfallen kann ist ein Teil der Historie, soweit er nicht für Feldänderungsüberwachungen benutzt wird.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #6 am: 16.01.06 - 18:08:27 »
sehe ich genau so ...
Ich schreibs in den Wiki als Use Case. Die LanguageDocs können in das selbe WSDL aber als eigene Funktion. Das ist eigentlich alles sehr einfach. Die Languagedocs haben mehrere Schlüssel. Ich kann aber davon ausgehen, dass die einzelnen Schlüssel eindeutig sind?
Das heisst das in LanguageDoc A und LanguageDoc B nicht der gleiche Schlüssel auftaucht.
Am elegantesten wäre es eine List runterzuschicken. Weiss aber nicht, ob Domino Webservices das unterstützen.

@Thomas: Wie funktioniert die Zeitmessung?


Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #7 am: 16.01.06 - 18:33:27 »
Aktuell manuell. Weil du ja nicht definieren kannst ob er das Dokument die ganze Zeit offen hatte.

Was die LanguageDocs angeht. Äh nein, du kannst nicht davon ausgehen das die Schlüssel von zwei unterschiedlichen Dokumenten nicht gleich sind. Es wäre durchaus möglich das irgendwann jemand denselben Key zweimal vergibt.
Innerhalb eines dokumentes sollte ein Schlüssel aber nur einmal vorkommen. Wobei es bei unserem Ansatz im Moment auch egal ist ob er in dem Dokument zweimal vorkommt. Dann wird halt nur das erste Vorkommen als gültig angesehen.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #8 am: 16.01.06 - 18:34:52 »
Das Wiki ist übrigens unter http://eknori.dyndns.org/wiki.nsf/Pages/WebServices zu erreichen.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #9 am: 16.01.06 - 21:27:10 »
Aktuell manuell. Weil du ja nicht definieren kannst ob er das Dokument die ganze Zeit offen hatte.
Anders funktioniert es auch in keinem anderen mir bekannten Helpdesk-System. Anders wäre auch Fließband-Arbeit.
Zitat
Was die LanguageDocs angeht. Äh nein, du kannst nicht davon ausgehen das die Schlüssel von zwei unterschiedlichen Dokumenten nicht gleich sind. Es wäre durchaus möglich das irgendwann jemand denselben Key zweimal vergibt.
Innerhalb eines dokumentes sollte ein Schlüssel aber nur einmal vorkommen. Wobei es bei unserem Ansatz im Moment auch egal ist ob er in dem Dokument zweimal vorkommt. Dann wird halt nur das erste Vorkommen als gültig angesehen.
thx.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #10 am: 16.01.06 - 21:42:21 »
Das Wiki ist übrigens unter http://eknori.dyndns.org/wiki.nsf/Pages/WebServices zu erreichen.
Ich würde mich freuen, wenn sich auch andere da beteiligen würden. Namentlich v.a. an dieser Stelle Thomas Schulte. Sagt mir, wenn ich unverständlich werde, blödsinn rede, umständlich oder selbstberaucht bin. Aber checke bitte die nichtfunktionalen Anforderungen. Vielleicht habe ich etwas übersehen.
« Letzte Änderung: 16.01.06 - 23:04:13 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #11 am: 17.01.06 - 01:54:19 »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #12 am: 17.01.06 - 21:30:57 »
Ich hab den ersten Anwendungsfall durchformuliert.
Für mich ist es eine Hilfe.
Da ich nicht gerade wenig in den Wiki geschrieben, würde mich interessieren, ob andere die das lesen finden, ob das hilfreich ist, wo nicht, etc.
Nur der erste ist bisher fertig.
Zumindest halte ich die Liste für relativ vollständig.
Ich denke, dass man so schon ein paar Dinge erkennen kann, bevor wir weiter kodieren. Sicher nicht alles. Aber darum geht es nicht.

Axel
« Letzte Änderung: 17.01.06 - 22:14:52 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #13 am: 19.01.06 - 22:50:12 »
Nicht überraschende Entdeckungen bei Anwendungsfällen bisher (keine Überraschung):
HELP als Notes Datenbank besitzt 2 Services die unbedingt noch integriert werden müssen:
1. Locking.
2. Zugriffsrechte. Zugriffsrechte ist noch nicht so richtig ausgearbeitet.
Die sich daraus ergebende Komplexität erscheint mir nicht besonders hoch.

Nachdem jetzt die Anwendungsfälle bald ausreichend fertig sind, werde ich einen vollständigen Gui-Prototypen ohne Funktionalität und die neuen serverseitigen Webservice Interfaces schreiben.

Ich lasse wohl in der ersten Version das Anhängefeld im 3. Reiter und die Technotes weg. Kann das dann in der 2. Version einfügen.

Gruß Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #14 am: 24.01.06 - 22:11:09 »
Swing. Ich habs vor 2 Jahren das letztemal angefasst.

Hier ein Zwischenbericht:
Das macht viel Sinn:
http://martinfowler.com/eaaDev/PresentationModel.html
Zitat
Presentation Model pulls the state and behavior of the view out into a model class that is part of the presentation. The Presentation Model coordinates with the domain layer and provides an interface to the view that minimizes decision making in the view. The view either stores all its state in the Presentation Model or synchonizes its state with Presentation Model frequently
Wobei es bei mir - basierend auf Scottie Delap - eine Haupt-PresentationModel Klasse und für logisch zusammenhängende Teilbereiche (etwa die recht umfangreichen und smarten Navigationsbäume) ein sub-PresentationModel gibt.
GUIs sind scheissendreck-kompliziert. Ajax-Anwendungen versuchen diese Komplexität nun erst in den Bereich Webprogrammierung zu bringen. Die innere Komplexität bringt dem Anwender eine bessere Usability.
Die Notes-UI wurde nach dem Prinzip robust, konsistente "eigene" Standard-Logik, aber eben nicht unbedingt hohe Usability programmiert.
Dies eröffnet extra-Möglichkeiten in Hannover, aber eben auch extra Arbeit. Das oben angesprochene Pattern kann die benötigte Übersichtlichkeit bieten, die man als Entwickler benötigt.

+ Die Zeiten von GridBackLayout sind vorbei. Es gibt heute gute Layoutmanager, die einfach zu programmieren sind. Formlayout von Carsten Lentzsch oder der neue von Netbeans 5, der überdies noch eine gute IDE Unterstützung hat.

+ Swing Komponenten können mit ihren Millionen von Listenern, Teil-Objekten, etc. zwischendurch mal nervend komplex sein. Gute Swing Komponenten Bücher haben oft über 1.000 Seiten. Nur braucht man eben immer nur einen Teil davon. Und damit gehts. JTabPane (20 Seiten), JTree (120 Seiten). Der Aufbau ist auch relativ konsistent.

+ Es gibt Threading Issues. Swing horcht immer auf einen AWT-Event Queue:
- die EventListener laufen da drin.
- Repainting findet da drin statt.
Zeitraubendere Ressourcen muß man aus diesem Thread raushalten. Dafür gibt es SwingUtilities.invokeLater(), SwingUtilities.invokeAndWait() (braucht man seltener).
Sun hat eine Klasse SwingWorker, die das ganze mehr manageable macht. Dies ist nicht Bestandteil des JDKs!. Es gibt eine neue verbesserte Java5 Version. (suche auf java.net).
Dann gibts noch eine openSource Projekt Foxtrott. Das macht das ganze noch einfacher.
Jeder, der Swing programmiert, muß das berücksichtigen.
http://www.javalobby.org/members-only/eps/galbraith-swing-2/?source=archives

Wenn wir Threading haben, gibt es Asynchronität. Und daran sind wir alle miteinander nicht besonders gewöhnt. Für einen "normalen" Entwickler läuft code eine Zeile nach der anderen ab. Mit Asynchronität laufen aber code-Bestandteile beängstigend parallel.
Beispiel:
-> Der Anwender klickt auf einen Button: Hole mir alle Tickets von Helpdesk. Dies wird eine Weile dauern.
-> Vielleicht ist es sinnvoll, dass der User in der zwischenzeit etwas anderes machen kann (bei sehr langlaufenden Prozessen). Oder einfach, dass die GUI nicht einfrieren soll.
-> Nun gibt es aber Operationen, die der User in der Zwischenzeit nicht ausführen darf: Etwa ein Ticket anzeigen.
Ein Ticket anzeigen geht zwar auch über den Webservice, aber wesentlich schneller.
Also
1. User klickt auf "alle Tickets holen"
2. User klickt auf "Ticket A anzeigen"
3. Ticket A kommt zurück: wird angezeigt.
4. Alle Tickets kommen zurück (obwohl der User, das zuerst angefordert hat).
Und JETZT KOMMT DER PUNKT: "Alle Tickets kommen zurück" ist so programmiert, dass es die Anzeige in der spezielles-Ticket-Maske löscht, weil das u.U. nicht mehr aktuell ist!!!
Das heisst das Ergebnis von Operation 2 ist schneller da als die von Operation 1. Und wenn das ERgebnis von Operation 1 das von Operation 2 überschreibt, hat der Anwender ein Verständnisproblem und wir ein Problem.
Man muß also diese Operationen irgendwie synchronisieren. 
Und das ist die Komplexiät von Asynchronität.
Und mit Zeugs wie Websphere MQ, mehr multi-Threading, Ajax, etc. wird es asynchroner.
Das gibt Vorteile für die usability, aber auch mehr Komplexität für den Entwickler.

+ Validation ist eine Sache, für die es (auch von Carsten Lentzsch) ein gutes openSource Projekt gibt. Unbedingt benutzen, sonst erzeugt man unübersichtlichen Code.

+  Es führt oft zu viel unübersichtlicheren code, wenn man Objekte aus dem Business Modell in die Gui reinholen will. Dafür gibt es ein - nicht einfaches aber sehr interessantes - openSource Projekt von Carsten Lentzsch (schon wieder). Auf Javalobby gibts dafür ein mehrteiliges Tutorial. Automatisches Binding ist btw. eine Sache, die glaub ich ziemlich stark in Ruby-on_rails vertreten ist, in .NET eine Rolle spielt und auch beim xml processing von doc/lit-style Webservices.

Wenn man das alles berücksichtigt, kann Swing Spaß machen.
Es wird alles in Scott Delaps Buch in SourceBeat beschrieben. Imho liegen seine Stärken nicht unbedingt im Erklären, aber es ist ein gutes Buch.

Gruß Axel
« Letzte Änderung: 24.01.06 - 22:15:13 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #15 am: 28.01.06 - 09:58:47 »
Eine grundsätzlich gute Idee beim Entwickeln mit axis clients ist:
Diese Datei
Code
 <deployment
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

<handler name="log" type="java:org.apache.axis.handlers.LogHandler"/>

<globalConfiguration>
<requestFlow>
<handler type="log"/>
</requestFlow>
<responseFlow>
<handler type="log"/>
</responseFlow>
</globalConfiguration>

<transport
name="http"
pivot="java:org.apache.axis.transport.http.HTTPSender"/>

</deployment>
in einen root classpath des Projekts tun und client-config.wsdl nennen.

Axis schreibt dann die ausgetauschten webservice-requests/responses in eine Datei axis.log.
Ich hab noch nicht herausgefunden, wie man das per log4j.xml umlenken kann.
Jedenfalls kriegt man eine Menge Informationen über axis-request & axis-response, ohne dass man großartig http-Interceptoren einklinkt. :
Zeit, In message (an den Server) UND Out message (vom Server).
Bsp:
Code
=======================================================
= Elapsed: 953 milliseconds
= In message: <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:GETALLTICKETSBYUSER soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:DefaultNamespace"><STRUSER xsi:type="xsd:string">Heinz Ulrich Krause</STRUSER></ns1:GETALLTICKETSBYUSER></soapenv:Body></soapenv:Envelope>
= Out message: <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
 <soapenv:Body>
  <ns1:GETALLTICKETSBYUSERResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:DefaultNamespace"><GETALLTICKETSBYUSERReturn xsi:type="ns1:TICKETCOLLECTION"><TICKETS xsi:type="soapenc:Array" soapenc:arrayType="ns1:TICKET[39]"><item xsi:type="ns1:TICKET"><USER xsi:type="xsd:string">Heinz Ulrich Krause</USER><TICKETNUMBER xsi:type="xsd:string">COMM-6JXHE9</TICKETNUMBER><ACTIONBY xsi:type="xsd:string"/><PROBLEM xsi:type="xsd:string">This ticket is created using the &quot;Quick Call&quot; form</PROBLEM>
[...STARK VERKÜRZT...]
<xsi:type="xsd:string">Heinz Ulrich Krause</USER><TICKETNUMBER xsi:type="xsd:string">COMM-6LFNXJ</TICKETNUMBER><ACTIONBY xsi:type="xsd:string"/><PROBLEM xsi:type="xsd:string">ddddasd</PROBLEM><STATUS xsi:type="xsd:string">0</STATUS><AUTHUSER xsi:type="xsd:string">CN=COMM1/O=Witte/C=de</AUTHUSER></item></TICKETS><TICKETCOUNT xsi:type="xsd:short">39</TICKETCOUNT><ERRORCODE xsi:type="xsd:short">0</ERRORCODE></GETALLTICKETSBYUSERReturn></ns1:GETALLTICKETSBYUSERResponse>
 </soapenv:Body>
</soapenv:Envelope>
=======================================================

Ich hab noch die Hoffnung, dass man über diese Konfigurationsdatei irgendwie Username/Passwort für BasicAuthentification setzen kann, finds aber nicht.
Jedenfalls spielt client-config.wsdl auch eine Rolle für ssl-Konfiguration im axis-client
http://www.javamagazin.de/itr/online_artikel/psecom,id,481,nodeid,11.html , s. Punkt 9.

client-config.wsdl erscheint mir wirklich schlecht dokumentiert.

Gruß Axel
« Letzte Änderung: 28.01.06 - 10:00:36 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: HELP:Webservices-> Swing Client als Webservices Consumer
« Antwort #16 am: 29.01.06 - 14:43:28 »
Hi,

ich habs jetzt auf sourceforge.net, bekomme es aber als anonymous user über pserver nicht ausgecheckt.
Es ist jedenfalls schon da. Und als authentifizierter sourceforge-user kann ich da auch prima mit Eclipse über extssh auschecken, einschecken und mich selber verwirren.
Vielleicht lag es einfach an den berüchtigten sourceforge.net-lags
Vermutlich. Ich weiss es nicht.
Es geht jetzt auch als anonymous über pserver.

Btw sind meine Files in cvsroot nur Spaß. Weiss jemand wie ich das wieder weghauen kann  ???
Sonst werd ich mich da selber schlaumachen.
Entscheidend ist das Modul help_ws_swing

Im Web-Frontend des cvs ist es auch da.
http://cvs.sourceforge.net/viewcvs.py/javahelpgui/

Weitere Informationen werden folgen.
Wer mitmachen will, kann sich ja als Entwickler auf sourceforge anmelden. Ich geb sofort Editorenrechte
... aber keine commit sluts, ok?  (http://www.jroller.com/page/fate/?anchor=commit_sluts) ;D

Es ist Java5. Alle benutzten libraries (und eclipse-Projekt-settings) sind im cvs.
Wie gesagt, werde ich noch genauer beschreiben wie man das in Eclipse ausscheckt und zum Laufen bekommt.

Gruß Axel 
« Letzte Änderung: 29.01.06 - 15:26:07 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz