Archiv für Juli, 2006
Letzter Tag vor dem Urlaub.
Morgens mit meinem Ausbildungsleiter den Stand der Diplomarbeit besprochen und wie ich weiterverfahren soll.
Folgende Theme sind noch zu eruieren:
- Kann XSL zur Darstellung in den iViews verwendet werden?
- Wie WS-Security einbauen (mit ZF abklären)
- Wie können wir Zugang zum Web AS der ZF bekommen (zumindest zum Entwicklungsserver)
- Single-Sign-On für die Anwendungen die ins Portal eingebunden werden – wie wird das bei ZF gelöst?
Nach dem Urlaub muss ich dann noch weiter an der Dokumentation arbeiten und den Web DynPro Prototyp fertigstelllen.
Den Web Service habe ich heute fertig modelliert und ihn soweit gebracht, dass er mal ein paar Testdaten ausspuckt.
In der Web DynPro Anwendung wurde das Model über die WSDL-Definition importiert und die Mappings und Bindings über die GUI zusammengeklickt. Eine Zeile Code musste ich dort programmieren um folgendes Formular zu haben, welches seine Daten über den Web Service bezieht.
Schon erstaunlich wie „einfach“ das geht.
Morgen werde ich dann mal das bisher gelernte dokumentieren.
Heute habe ich hauptsächlich an dem Web Service fürs Auslesen der Daten aus der Anwendung weitergemacht, welcher dann zum Test über eine Web DynPro Applikation angesprochen wird.
Waren relativ viel Hibernate-Sachen dabei, weil das meiner Meinung nach die einfachste Art ist, aus einer bestehenden DB Daten auszulesen, vor allem wenn man die Hibernate Tools benutzt.
Außerdem habe ich versucht ein bestehendes Servlet auf dem Web AS zum laufen zu bringen, was realtiv einfach ging:
Zunächst muss das Deploy Tool unter
C:\usr\sap\<SID>\<IID>\j2ee\deploying
aufgerufen werden.
Dort ein neues Deployment-Projekt anlegen.
Im J2EE Reiter mit Rechtsklick „Add Web“ und die web.xml und den Pfad der Anwendung angeben.
Dann ist eine Komponente im J2EE Reiter zu sehen. Diese mit Rechtslick „archivieren“ und im Assembler Reiter ein EAR packen.
Somit kann im Deployment Reiter nach Verbindung mit dem Server das EAR deployt werden.
Schien ohne Probleme zu klappen, aber leider konnte ich die Anwendung noch nicht aufrufen, weil ich die URL noch nicht rausgefunden habe. Naja vielleicht morgen dann.
Zunächst braucht man eine gültige WSDL mit ordentlichen in XSD definierten Typen. Hieraus lässt man sich über den Create Model Assistenten ein Model erstellen. Dadurch wird ein sogenannter Service Proxy generiert, welche als Stellvertreter für den eigentlichen Web Service aufgerufen wird und selbst als Client agiert, so wie ich das verstanden habe. Dieses Model wird dann mit dem Controller Context der Komponente verbunden, um zentral über die Daten verfügen zu können.
Man kann dann relativ einfach ein Service Controller Template generieren lassen, welches in den wdDoInit() und execute() Methoden das Model initialisiert (die Web Service Aufrufe verwaltet).
Danach sollten man die View Controller Contexte auf den Component Controller Context mappen und das Data Bindung für die Views durchführen.
Nun noch die Event Handler anlegen und implementieren und fertig ist die Web Dynpro Anwendung, die ihre Daten komplett über einen Web Service bezieht.
Den Web Service selbst möchte ich gerne unter Tomcat laufen lassen, um die altbekannten Werkzeuge einsetzen zu können und zu testen, ob das alles ohne Probleme zusammen funktioniert.
Schon wieder ein Bluescreen als ich heute morgen an den Rechner kam! Irgendwas mit BAD_POOL_CALLER. Muss jetzt rausfinden, ob das an Netweaver oder an der Hitze liegt…
Update: Lag voraussichtlich an Google Desktop.
Heute ging es endlich ans Eingemachte. Ich konnte Anwendungen entwickeln und installieren, außerdem habe ich einiges über Enterprise Java Beans gelernt.
Zunächst habe ich versucht eine Beispiel EAR (Enterprise Application Archive) in die J2EE Engine zu deployen. Vom NWDS aus wollte das aber partout nicht funktionieren. Das lag daran, dass der Port für die J2EE Engine sich von NW 2004 zu anscheinend 2004s geändert hat und in dem NWDS noch der alte Port eingestellt war. Das war nur eine Schätzung von mir, weil ich nirgends dazu Infos gefunden habe. Auf jeden Fall habe ich herausgefunden, wo der Port konfiguriert ist:
/usr/sap//
Work29
3900
Hier ist anstatt dem alten Port 3601 der neue 3900 konfiguriert. Also habe ich diesen in die J2EE Einstellungen übernommen:
Leider hat es dann immer noch nicht funktioniert mit dem Deployen, weil der SecureStore des SAP Deployment Managers (SDM) mein Master Passwort der Installation nicht übernommen hatte. Also musste den Anweisungen hier unter „SDM cannot Connect to J2EE Engine“ folgen.
Dann hat’s auch mit dem Deployen geklappt.
Als nächstes habe ich das Car Rental J2EE Tutorial durchgemacht, welches eigentlich recht gut verständlich war und währenddessen habe ich auch endlich mal richtig verstanden, was das mit den EJBs auf sich hat.
Kurzzusammenfassung der Beans die ich heute verwendet hab:
- Entity Beans
Mit ihnen kann man die persistenten Daten des System modellieren.
Diese Mappings werden dann entweder selbst programmiert (Bean Managed Persistance, BMP) oder vom J2EE Container übernommen. (Container Managed Persistance, CMP). Für mein Beispiel habe ich CMP verwendet. - Session Beans
Diese enthalten die Businesslogik, d.h. sie bilden die Vorgänge ab, die der Benutzer mit dem System durchführt. Es gibt stateful Session Beans (mit „Gedächtnis“) und stateless Session Beans, welche immer wieder neu instanziiert und mit Parametern gefüttert werden.
Dann habe ich heute noch ein Servlet und ein JSP im NWDS erstellt und festgestellt, dass auch hier mit der standardisierten web.xml gearbeitet wird. Mal sehen, ob ich es dann schaffe auch eine unserer Anwendungen im SAP WS zu deployen. Mit dem Deploy Tool sollte das möglich sein. Diese Verwendet allerdings keine WARs sondern so wie ich das sehe nur die bereits angesprochenen EARs.
Ach ja und dann hatte ich heute morgen auch gleich wieder eine schöne Überraschung, als mich mein Rechner mit einem Bluescreen begrüßte und ich Netweaver wieder frisch hochfahren musste, was diesmal allerdings nur 38 Minuten gedauert hat…
Leider konnte ich jedoch nich die 2004er Version installieren, weil da definitiv das RAR-Archiv bei SAP kaputt ist. Dann habe ich eben die 2004s installiert, ist eigentlich das Gleiche, hat halt ein paar Features mehr.
Die reine Installation der Plattform inkl. Developer Studio, welches extra installiert werden muss, hat geschlagene 3 Stunden gedauert.
Nach dem Mittagessen habe ich dann versucht den Server zu starten – ohne Erfolg. Die J2EE Engine wollte einfach nicht. Also habe ich mir über die SAP Management Console den Stacktrace angeschaut. Irgendwie hat er nach einer Server Virtual Machine im falschen Verzeichnis gesucht, nämlich in
C:\Programme\Java\j2re1.4.2_11\bin\server
Aber die lag in
C:\Programme\Java\j2re1.4.2_11\jre\bin\server
Also mal den Server-Ordner an den anderen Ort kopiert und schwupps, der Server startet und startet und startet und startet…45 Minuten hat’s gedauert, bis alles lief und alle Anwendungen deployed waren!
Also ich glaub da ist’s dann nichts mit mal kurz den Server neustarten. Außerdem frißt er wenn er gestartet ist und noch kein Benutzer sich darauf befindet ca. 1 GB RAM, zum Glück hab ich 2 GB.
Die Administrationsoberflächen sehen allesamt sehr gut aber auch sehr kompliziert aus. Mal sehen, wie ich damit zurechtkomme.
Ein paar kleine Probleme gab es noch:
Der Standardlogin für die Portaladministration (admin/admin) hat nicht funktioniert. Aber ich konnte mich dann mit dem User Administrator anmelden.
Dieser User hatte übrigens immer noch das Standardpasswort von SAP (abcd1234) gesetzt, obwohl ich das während der Installation geändert hatte…naja auch die SAPler produzieren Bugs.
Das Netweaver Development Studio 7 hab ich mal kurz gestartet. Sieht gut aus, basiert aber glaub ich noch auf dem Eclipse 2.1 oder so. Werde dann demnächst mal eine kleine Web Dynpro Anwendung entwickeln um das Ganze auszuprobieren.
Ich musste das Layout der Seite verändern (anderes Theme), weil beim vorherigen die Code-Schnipsel abgeschnitten wurden. Aber ich denke dieses hier ist ein adäquater Ersatz.
Der ganze Entwicklungsprozess von Web DynPro ist so ausgelegt, dass man so wenig wie möglich programmieren muss. Und wenn man es dann muss, ist’s relativ einfach.
Das wichtigste ist, dass man die Kontexte initialisert. Dies geschieht in der wdDoInit()-Methode der Controller Kontexte. Hier mal ein Code-Schnipsel aus dem Beispiel im SDN:
/** Hook method called to initialize controller. */
public void wdDoInit()
{
[…]
Collection questions = new ArrayList();
for (int i = 0; i < size; i++) {
// instantiate the new context node element of type QuizData
IPublicQuiz.IQuizDataElement quizDataElement =
wdContext.createQuizDataElement();
// set contained context value attributes
quizDataElement.setQuestion(resourceHandlerForQuestions.getString(„Q“+i));
quizDataElement.setAnswer(resourceHandlerForAnswers.getString(„A“+i));
quizDataElement.setCounter(String.valueOf(i+1)+“/“+String.valueOf(size));
// add new context node element of the type QuizeData to ArrayList
questions.add(quizDataElement);
}
//===== STEP 3: Bind collection of Q&A pairs to context value node QuizData ====
// Bind collection of context node elements to context value node QuizData
wdContext.nodeQuizData().bind(questions);
//@@end
}
SAP Library – Web Dynpro for Java
Hier werden die vorher angelegten Context Nodes (quizDataElement) der Komponente initialisiert und in einer Collection gespeichert. Auf diese kann man dann in den Views über
wdContext.nodeQuizData().<operation>;
zugegriffen werden.
Der eigene Context des Views wird über
wdContext.currentContextElement().<operation>;
aufgerufen.
Dann noch ein bisschen Logik implementieren und das war’s.
Da ich leider Netweaver immer noch nicht installieren konnte, habe ich mich gerade mit der Einrichtung von Eclipse und der Installation diverser Plugins beschäftigt.
Besonders gut finde ich die Hibernate Tools. Damit kann man sich unter anderem aus einer bestehenden Datenbank Hibernate hbm Dateien und POJOs generieren lassen. Hier ist die sehr gute Doku dazu.
Leider sind bei der Datenbank, die ich brauche die Foreign Keys nicht eingerichtet, so dass ich die Relationships wohl händisch nachziehen muss.
Dann habe ich mir noch das Web Toolkit und die abhängigen Plugins installiert. Noch nicht viel damit gemacht, nur ein bisschen rumgespielt.