Das Notes Forum

Lotus Notes / Domino Sonstiges => Projekt Bereich => Help-Desk Applikation !!Help!! => Thema gestartet von: flaite am 12.01.06 - 22:11:25

Titel: HELP: Re-Design der Webservices
Beitrag von: flaite am 12.01.06 - 22:11:25
Hi,

bisher sehe ich die gesamten Aktivitäten eher als Technologie Test an. Die waren weitgehend erstmal erfolgreich. Was aus meiner Sicht wichtig & sinnvoll wäre ist, mit Hilfe einer Anwendungsfall-Analyse erst einmal herauszufinden, welche Service wie angeboten werden sollen.
Das soll nicht in einer Meta-Diskussion enden. Und ich halte Anwendungsfall-Analysen für eine gute Sache, die man nicht Accenture oder IBM Global Services Consultants überlassen muß.

Am besten würde sich imho ein Wiki eignen, um die Analyse gemeinsam durchzuführen. Wir hatten einen für Anti-Patterns. Der wurde leider wieder abgeschaltet.  :(

Auch wenn kein Wiki da ist, kann ich damit morgen mal anfangen. Dafür werde ich dann (endlich) HELP installieren.
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 13.01.06 - 05:18:41
Zitat
sich imho ein Wiki eignen

kann ich am WE installieren.

Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 13.01.06 - 10:04:26
Halt ich für eine gute Idee.
Seh das so:
1. Wir haben festgestellt, dass - solange man auf SOAP-RCP - d.h. ohne eigene xml-Programmierung - bleibt, stellen Webservices keine großen Programmieranforderungen. Serverseitig auf Notes ist das sehr ähnlich wie Agenten programmieren und auf allen Client-Plattformen gibt es Generatoren.
2. Vernünftige Kommunikationsinterfaces zu schreiben ist aber nicht so einfach. Und das soll über eine solche Methode erruiert werden.
3. Genau dann, wenn wir anfangen, die Services realitätsnäher zu gestalten, werden einige Herausforderungen auftauchen. Z.B. die Implementierung der Security in den Clients.
4. Wenn wir in der Realität einsetzbare Webservices Clients, die ein umfangreiches Angebot an Funktionen anbieten, haben wir wirklich etwas geleistet.

Gruß Axel




Titel: Re: HELP: Re-Design der Webservices
Beitrag von: Mark³ am 13.01.06 - 13:30:05
die Implementierung der Sicherheit scheint sehr einfach zu sein ???

http://www-10.lotus.com/ldd/nd6forum.nsf/DateAllThreadedweb/07e5178f145f85d68525709d00331d40?OpenDocument
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 13.01.06 - 13:31:44
Das können wir ja am WE einmal testen.
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: Mark³ am 13.01.06 - 14:21:24
der Beispielcode scheint die Implementierung in Microsoft VB oder so zu sein. In Java muss scheinbar nur dem Web Service Stub folgendes mitgeteilt werden:

Code
stub._setProperty(
          javax.xml.rpc.Stub.USERNAME_PROPERTY,
            username);
stub._setProperty(
          javax.xml.rpc.Stub.PASSWORD_PROPERTY,
            password);
Vielleicht kannst du auf deinem Server Basic Authentication einrichten (oder ist es bereits an?) und mir einen User mit Passwort zukommen lassen, so dass ich das mal testen kann? Bleibt nur die Frage, wie ich sehe, ob es klappt. Vielleicht baust du eine Methode ein, die irgendwo session.username o. ä. zurückliefert?

Natürlich ist dies keine Implementierung von
Zitat
Sicherheit
wie ich so lax sagte sondern nur die Anmeldung am Server. Zusätzlich müsste dann noch SSL genutzt werden. Ein Hinweis, wie das auf der Client-Seite implementiert wird findet sich hier am Ende: http://www.jeckle.de/secureSOAP.html
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: Mark³ am 13.01.06 - 14:32:03
hier ist ein Beispiel für die Implementierung:

Code
package mutualauthclient;

import javax.xml.rpc.Stub;

public class HelloClient {

    public static void main(String[] args) {
    
        if (args.length !=5) {
          System.out.println("HelloClient Error: Need 5
        runtime arguments!");
          System.exit(1);
        }
        
        String keyStore=args[0];
        String keyStorePassword=args[1];
        String trustStore=args[2];
        String trustStorePassword=args[3];
        String endpointAddress=args[4];


      // print to display for verification purposes
        System.out.println("keystore: " + keyStore);
        System.out.println("keystorePassword: " +
        keyStorePassword);
        System.out.println("trustStore: " + trustStore);
        System.out.println("trustStorePassword: " +
        trustStorePassword);
        System.out.println("Endpoint address: " +
        endpointAddress);

    try {
      Stub stub = createProxy();
      System.setProperty("javax.net.ssl.keyStore",
        keyStore);
      System.setProperty("javax.net.ssl.keyStorePassword",
        keyStorePassword);
      System.setProperty("javax.net.ssl.trustStore",
        trustStore);
      System.setProperty("javax.net.ssl.trustStorePassword",
        trustStorePassword);
      stub._setProperty(
          javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY,
            endpointAddress);

      HelloIF hello = (HelloIF)stub;
      System.out.println(hello.sayHello("Duke! (        secure!"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }    

    private static Stub createProxy() {
        // Note: MyHelloService_Impl is implementation-specific.
        return (Stub)(new
          MySecureHelloService_Impl().getHelloIFPort());
    }
} 

Quelle: Kapitel 27 in http://www.ti5.tu-harburg.de/manual/Java/j2ee-tutorial-1.4/doc/
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: Mark³ am 13.01.06 - 14:45:19
scheint zu klappen  ;D
User 'username' gibt es wohl nicht bei dir...

Code
AxisFault
 faultCode: {http://xml.apache.org/axis/}HTTP
 faultSubcode: 
 faultString: (401)Unauthorized
 faultActor: 
 faultNode: 
 faultDetail: 
	{}:return code:  401
<html>
<head>
<title>Error</title></head>
<body text="#000000">
<h1>Error 401</h1>User not authenticated</body>
</html>

	{http://xml.apache.org/axis/}HttpErrorCode:401

(401)Unauthorized
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 13.01.06 - 14:48:25
dann versuche es mal mit

Hein Bloed
blauerBaer
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 13.01.06 - 14:58:45
Kannst du bitte mal in die Methode GETALLTICKETSBYUSER ein print session.getUsername eingeben. Dann könnten wir sehen ob das tatsächlich funktioniert.
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 13.01.06 - 15:08:59
Ich bekomme auch mit dem User, Password ein 401 zurück.
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 13.01.06 - 15:10:37
Habe gerade in die Class Ticket noch ein Public AuthUser As String eingebaut; darin ist dann s.UserName.

Zumindest beim WebServices Studio hat es fun ktioniert, da musste ich UserName und PWD eingeben.
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 13.01.06 - 15:13:37
Der RückgabeWert ist aber immer der Servername; klar, der fürht ja auch den Agenten / Service aus ... ???
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: Mark³ am 13.01.06 - 15:14:54
die Anmeldung scheint zu klappen, ich muss nun aber meinen Webservice Proxy neu generieren lassen...
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 13.01.06 - 15:35:20
Sieht bei mir auch so aus:
Code
3203 [main.300] ERROR de.atnotes.help.wsclient.domain.BasicTicketsRepository .loadNewTicketsBySupporter - loadNewTicketsBySupporter(String)
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXException: Invalid element in de.atnotes.help.wsclient.ws.TICKET - AUTHUSER
 faultActor: 
 faultNode: 
 faultDetail: 
Kriegst du sowas auch?

Ich hab das in diesem Constructor der generierten Klassen eingefügt:
Code
public DominoSoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
    	super._setProperty(
    	          javax.xml.rpc.Stub.USERNAME_PROPERTY,
    	            "Hein Bloed");
    	super._setProperty(
    	          javax.xml.rpc.Stub.PASSWORD_PROPERTY,
    	            "blauerBaer");
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 13.01.06 - 15:47:12
Läuft nach Regenerierung der Client-Stubs.  8)
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: Mark³ am 13.01.06 - 15:50:51
getAUTHUSER() liefert mir nix zurück  :(
Sonst klappt dat alles.
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 13.01.06 - 15:52:29
Huch, so viele neue Tickets  ;D . Übrigens kümmert das die BB Simulation herzlich wenig, daß man sich authentifizieren muss; Da wird gnadenlos alles zurückgeliefert, was angefragt wird ... ::)
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 13.01.06 - 16:02:04
Damit können wir aber lediglich den Transportweg sichern (wenn wir auf ssl gehen, ist das ja sicher).
Es gibt aber noch weiteres.
Ein User hat (vielleicht) nicht das Recht, alle Tickets zu sehen.
Oder Assigns zu machen.
Oder Todos für alle Tickets erstellen.
Das ist glaub ich ein bischen schwieriger.
Aber dazu später.
Das war schon mal ziemlich gut.

Axel
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 13.01.06 - 16:12:10
Bisher wird ja im Request noch nichts an Informationen mitgegeben, wer denn da requested. Wenn das übermittelt wird, sollte es Producer seitig nicht allzu schwer sein, festzustelen, ob der ümmel denn auch die angeforderten Informationen als Response bekommen darf ...
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 13.01.06 - 16:54:09
Am besten wäre es, wenn der Webservice Producer den Authentification Header auslesen könnte. Da wird ja sowieso schon der Username hochgeschickt. Man könnte dann den Webservice für User in der Gruppe WebServiceUsers freigeben oder so.
Mit ClientCert SSL sollte das sogar wirklich sicher sein, wenn das irgendwie geht.
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 13.01.06 - 17:02:57
hmm, wüsste jetzt nicht, wie ich das machen kann. Ich als producer lese ja den request nur insofern aus, als ich sage: " Du willst die und die Infos ? OK, dann gib mir mal den Namen des Supporters , ( und zur Berechtigungsprüfung deinen Usernamen ) . Dann kann ich anhand des Usernamens hergehen und nachschauen, ob du das überhaupt angezeigt bekommst"

Das eine ist ja, ob jemand überhaupt auf den Service zugreifen darf; das andere, welche Informationen er bekommt. Die Info, wer da klopft, muß aber imho im request übermittelt werden ...
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 13.01.06 - 18:04:44
Wie es momentan ist, wird Hein Bloed in dem xml-File, dass der Webservice verarbeitet mitgeschickt. Base 64 encoded im Header. Bei jedem Request.
Ich weiss aber auch nicht, ob es auf Lotus Seite Methoden gibt, um das auszulesen.
Es ist auf jeden Fall da.
Das Axis Projekt hat eine Art Proxy, in dem man anzeigen kann was tatsächlich ausgetauscht wird. Ich versuche das mal dazwischen zu klinken. Dann wird das klarer. Das Tool ist sowieso sinnvoll.

Gruß Axel
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 13.01.06 - 18:48:42
Keine Ahnung wie ich das Clientseitig einsetzen kann.

Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 13.01.06 - 18:49:46
Zitat
Bei jedem Request.
Ich weiss aber auch nicht, ob es auf Lotus Seite Methoden gibt, um das auszulesen.

Auf Producer Seite sehe ich da momentan nicht, daß man da irgendwie drankommt ... Aber schaun' mer mal
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 13.01.06 - 20:49:44
Wenn du lust hast kannst du das mal ausprobieren....
1. Schritt: axis-bin-1_3.zip  hier downloaden (http://apache.easy-webs.de/ws/axis/1_3/)
2. Schritt: entpacken
3. Schritt: Das unten angehängte .txt in .bat umbenennen und in den axis-1_3 folder des entpackten tun.

Das startet einen tcpMonitor, der anzeigt was wirklich übertragen wird.
Soweit ich weiss, müsste das angezeigt werden, wenn ich den Webservice dann auf Port 24000 anspreche (s. angehängte Datei).
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 13.01.06 - 20:57:47
OK, werde ich probieren.

wg. wiki: habe das auf meiner Webseite installiert .. mediawiki ... what a crap... frisst mir meinen Speicherplatz für die MySQL DB schon bei der Installation auf.
Meine komplette Webseite www.eknori.de kam mit SQL DB bis her mit 640 Kb aus. Mediawiki hat, ohne einen einzigen Eintrag getätigt zu haben schon 5 MB geschluckt.

Entweder nehme ich das wiki von OpenNTF und schmeisse das auf meinen Server atHome , oder ich klöppele morgen noch eine kleine ubuntu Kiste zusammen und bringe die über DSL an den Draht ...

Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 14.01.06 - 00:25:50
Ich amüsiere mich momentan sowieso damit, meiner most brilliant Swing Konstruktion eine Funktion nach der anderen zu entreissen. Swing find ich momentan wirklich ein bischen verrückt, aber interessant. Wäre schön, wenn da mal jemand drüberschauen könnte, wenn ich das auf sourceforge bringe. Wenn ich Scottie Delap nicht als Richtschnur hätte, wäre das schon längst im Chaos geendet.

Gruß Axel
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 14.01.06 - 03:03:54
lass dir ruhig Zeit  ;)
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 14.01.06 - 11:24:14
Vielleicht eine blöde Idee.
Aber könnten wir uns nicht vielleicht überlegen, die Design-Disussion in german-english zu führen?
Da sich ja einige cracks der Domino Community mit Webservices und Service Oriented Architecture auseinandersetzen, bekommen wir so vielleicht interessante Bonus-Beiträge.
Einen ernsthaften Webservice Layer für eine reale und relativ komplexe Notes Anwendung zu designen und zu implementieren könnte einige Leute zu konstruktiver Mitarbeit bewegen ???

Gruß Axel
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: eknori am 14.01.06 - 19:09:12
hmm, bei Bedarf kann ich auch auf us-gb-en umschalten. Die Erfahrung durch die Resonanz auf !!HELP!! im ausser-europäischen Raum lassen mich leider daran zweifeln, daß sich irgendein citizen from abroard convincen lässt, einen benefit zu unserer discussion beizusteuern.

Ich fände es ergiebiger, wenn wir die Diskussion weiterhin in de führen und sich noch ein paar mehr Leute auf die producer und consumer Seite schlagen.

Wie sagte schon Bill Buchan im neuesten podcast von TakingNotes: " Take this 15 seconds it needs to learn how web services are working ... "

die producer Seite zu bedienen ist ebenso einfach, wie einen Agenten in script oder Java zu schreiben ... Also genau das, was ein Entwicker Tag für Tag tut.

Die consumer Seite ist da schon eindeutig schwieriger. ( zumindest für jemanden, der sich nicht tagtäglich damit beschäftigt ).

Evtl. ermutigt die bereits von euch ( Mark und Axel ) geleistete Arbeit, den einen oder anderen sich auch mit dem Thema zu beschäftigen. Möglicherweise kommt noch jemand mit einem .NET Client oder einer Lösung in PHP oder PERL dazu.

Konzeptionell muessen wir allerdings nun hingehen und über USE Cases die Services neu definieren.
Wie Axel ja schon erwähnt hat, ist das bisher zusammen geklöppelte eine Lösung, die zwar funktioniert, aber eher als proof-of-concept zu bezeichnen ist.

Mitlerweile habe ich nach dem heutigen Totalausfall meines heimischen Servers ein "neues" Serverlein gebastelt. Morgen werde ich dann das Wiki auf bewährter Domino Basis installieren und den Link hier posten.

Titel: Re: HELP: Re-Design der Webservices
Beitrag von: TMC am 14.01.06 - 23:25:53
wg. wiki: habe das auf meiner Webseite installiert .. mediawiki ... what a crap... frisst mir meinen Speicherplatz für die MySQL DB schon bei der Installation auf.
Meine komplette Webseite www.eknori.de kam mit SQL DB bis her mit 640 Kb aus. Mediawiki hat, ohne einen einzigen Eintrag getätigt zu haben schon 5 MB geschluckt.

Wie hast Du denn das geschafft?
Frische MediaWiki-Installation bei mir gute 700kB im MySQL Data Directory, gezippt knappe 200k. Hab erst kürzlich wieder so ein Teil aufgesetzt.
Danach speichert ein Wiki ja immer mehr Daten als ein CMS, wegen der Änderungen...
Aber who cares wegen ein paar MBs?

M.E. ist MediaWiki erste Wahl unter den ganzen Wikis, wobei ich http://wiki.splitbrain.org/wiki:dokuwiki schicker finde, aber der nimmt leider keine Datenbank sondern speichert in Textfiles  :P
Viele andere Wikis sind ein Graus im Bezug auf Accessibility, Tabellen, Tabellen, Tabellen, und das zu Positionierung (!) in der heutigen Zeit  ::)

Wegen EN/DE in Eurem Projekt:
Will mich nicht einmischen, aber ich denke dass eine Discussion auf Englisch sicherlich sehr förderlich sein würde. IMHO würden sich durchaus einige Leute beteiligen, nicht nur von der Domino Blogsphere, man müsste das nur entsprechend publik machen.
Titel: Re: HELP: Re-Design der Webservices
Beitrag von: flaite am 15.01.06 - 01:14:00
Ich denke wir können das erstmal mit eigenen Kräften machen.
So schwierig erscheint es erstmal nicht zu sein.
Besondere Fragen kann man ja auch auf notes.net aka developerworks/lotus posten. 
Die Zugänglichkeit wird jedenfall sehr einfach sein. Dafür sorgen wir.
Mein (und möglicherweise Mark sein) Java Code können ab nächste Woche per cvs von Sourceforge in Eclipse geladen werden. Das ist wirklich sehr einfach und ich werds beschreiben.
Für die Design-Diskussionen gibts einen Wiki und HELP selbst gibts von openNTF.org.
Leute, die sich ein bischen auch meinen Code anschauen sind natürlich sehr willkommen.

Denkt dran: Die Chancen besonders peinliche bugs zu finden, sind gerade am Anfang sehr groß. Z.B. habe ich eben ca. 1 Stunde gebraucht, um einen absoluten Klassiker-Bug.
Für Java-Freunde: equals nicht überschrieben in einem Objekt, dessen Identität eindeutig an ein id-Feld im Objekt gebunden ist. ;D

Zur Motivation: Ist zwar völlig i. O. Anfängerfragen zu beantworten, nur bringt ein solches Projekt vielleicht in bestimmten Bereichen ein größeres ROI an Wissen.

Architekturen mit lose gekoppelten Anwendungen (und nix anderes ist das hier) ist ein Kernthema von Enterprise Application Integration (EAI). Solche Messaging Infrastrukturen sind nicht nur für Webservices interessant sondern können auch auf Basis von Websphere MQ und ähnlichem oder Ralfs AS 400 Tricks (das DB2.Trigger-> PushData -> Domino von letzter Woche) aufgesetzt werden.  ;D

V.a. sollte niemand von der Beteiligung an der Design-Diskussion abgeschreckt werden, nur weil er die entsprechende Literatur nicht gelesen hat. Ich les das zwar, vergess aber immer eine Menge. Der Planungs-Prozess ist sicher kein Hexenwerk und man kann das lernen. Wir haben hier ein konkretes Projekt.

Die Entwicklung von Lotus 7 zeigt imho, dass der Umfang an Funktionen in klassischen Domino-Feldern nicht besonders stark zugenommen hat. Die neuen Features (v.a. Webservices und die DB2 Integration) befinden sich eindeutig in Bereichen der Integration von Domino mit anderen Anwendungen. Man kann das natürlich bis zum nächsten Eintreffen von baby jeebus auf diesem Planeten mit csv-Dateien durchführen. Nur hab ich z.B. letztes Jahr in einen Projekt eindeutig die Vorteile eines Zusammenspiels mit Websphere MQ kennengelernt (weniger Probleme, aktuellere Daten). Webservices ist so ähnlich. 
Die stärkere Gewichtung von Integration setzte imho schon in R6 mit dem deutlich verbesserten xml-support ein. Sie wird mit Hannover zunehmen.
In diesen Integrationsbereichen bestehen imho auch Chancen für Projekte.

Es soll jedenfalls keiner von der Teilnahme abgeschreckt werden, nur weil er bestimmte Begriffe nicht kennt.
 
Gruß Axel