[deepamehta-users] deepamehta-2.0b8-rc4 Erfolgs und Fehlerreport

Jörg Richter jri at deepamehta.de
Mo Sep 1 18:26:49 CEST 2008


Liebe DeepaMehta-Nutzer,

hier möchte ich endlich auf den sehr hilfreichen Erfolgs- und  
Fehlerreport von Torsten eingehen.

Torsten spricht hier durchweg relevante Punkte an, über die ein  
DeepaMehta-Neuling stolpern wird, insbesondere, wenn es um die  
Webanwendungen geht. Der neue Installer von Enrico ist für das  
"eigentliche" DeepaMehta schon wunderbar, benötigt im Bereich der  
Webanwendungen aber noch einige Verbesserungen, die ich im Folgenden  
anspreche. Hier hoffe ich, daß Enrico Gelegenheit findet, weiter am  
Installer zu arbeiten. Zu einigen der genannten Probleme weiß ich noch  
nicht, was die beste Lösung ist. Hier hoffe ich auf gemeinsame  
Diskussion, wobei alle Entwickler gefragt sind.

Ich kann mir auch gut vorstellen, bald einen DeepaMehta-Stammtisch zu  
veranstalten, zu dem alle DeepaMehta-Anwender eingeladen werden. Das  
direkte Gespräch ist doch manchmal effektiver, wenn es um soviele  
Punkte aufeinmal geht. Zu diesem Stammtisch sollten dann mindestens  
kommen: Torsten, Malte, Thilo, Martin, Enrico. Außerdem brauchen wir  
einen Moderator, damit die Gespräche nicht aus dem Ruder laufen, d.h.  
damit konkrete Beschlüsse gefasst und Aktionen verabredet werden. Ich  
würde mich freuen, wenn es jemand in die Hand nimmt, solch einen  
Stammtisch zu organisieren.

Zuletzt möchte ich Torsten ermutigen, Fehlerreports auch in unseren  
Bug-Tracker auf Berlios einzupflegen. Es wäre zu schade, wenn sein  
wertvolles Feedback im Mailinglisten-Archiv untergeht.


On 26.07.2008, at 11:26, Torsten Ziegler wrote:

> Hallo Liebes Deepamehta Team
>
> nach meinem ersten Hilferuf an Jörg
> der prompt beantwortet wurde (Danke Jörg und Malte)
> wollte ich euch gerne meine Erfahrungen weitergeben,
> in der Hoffnung die Bugreports helfen euch weiter deepamehta zu
> verbessern.
>
> Ich benutze die deepamehta-2.0b8-rc4
> - Die Standalone Version unter Windows (interne DB) funktioniert
>   einwandfrei.
> - Unter Debian 4 funktioniert die Standalone Version, ebenso wie die
>   Client Server Version einwandfrei mit der internen DB und mit mysql5
>   (mysql4 habe ich nicht getestet)
> - nur mit den Webapps habe ich noch ein paar Probleme, siehe unten
>
> Einen Fehler habe ich im Installer bemerkt und zwar wenn ich als DB
> mysql5 auswähle und sowohl Deepamehta neu installiere, als auch die
> Movies Beispiele, dann wird nur eine der beiden Datenbanken angelegt.
> Ich muss dann ./run.sh install nochmal ausführen und bei der Deepamehta
> DB Nein auswählen, damit die Movies DB erstellt wird.

Oh, dieser Fehler war mir nicht bekannt!

=> Enrico: ich würde mich freuen, wenn Du Dir das Installer-Skript  
nochmal ansehen könntest und diesen Fehler ggf. beheben könntest.

> Auch ist es möglich wenn man die Webapps instaliert  die interne hsqlDB
> auszuwählen, was dann natürlich nicht funktionieren kann, das könnte  
> man
> vielleicht gegenseitig ausschließen im Installer oder im Readme noach
> erwähnen.

Ja, ich verstehe, was Du meinst. Bei der Konzeption des Install-Sktipts  
haben wir das diskutiert, und uns entschlossen, HSQL auch dann  
anzubieten, wenn die Webinterfaces "aktiviert" wurden, aus 2 Gründen:

1) Das vorrangige Ziel des Install-Skripts ist, DeepaMehta so schnell  
und einfach in Betrieb zu nehmen -- und zwar das "eigentliche"  
DeepaMehta (die Webinterfaces sind derzeit eher als "Dreingabe" resp.  
"Proof-of-Concept" zu sehen). Die Integration von HSQL trägt ganz  
wesentlich zur einfachen Installation bei (eine manuelle  
MySQL-Installation ist für Normalanwender eine zu große Hürde). Wir  
haben uns gedacht: wenn der Nutzer beim Installieren "aus Versehen" die  
Webinterfaces aktiviert (weil ihm vielleicht der Unterschied zwischen  
dem grafischen DeepaMehta und den Webinterfaces noch garnicht klar ist)  
soll er trotzdem HSQL auswählen können um das eigentliche DeepaMehta  
möglichst schnell sehen können.

2) Die Webinterfaces funktionieren ja auch mit HSQL. Sie funktionieren  
aber nur, wenn nicht gleichzeitig DeepaMehta (Standalone oder Server)  
läuft. Zumindest kann so auch ohne MySQL schonmal in die Webinterfaces  
"reingeschnuppert" werden (was, zugegeben, etwas langweilig ist, da  
gerade das Zusammenspiel DeepaMehta-Web interessant ist. Siehe TIPP  
ganz am Ende dieser Mail).

Im README haben wir versucht, den Anwender auf den richtigen Weg zu  
führen, indem wir in der Kurzanleitung für die automatische  
Installation geschrieben haben:

>> Wenn Beispielanwendungen oder Webfrontends installiert werden sollen,  
>> führe eine manuelle (Terminal-basierte) Installation durch, die im  
>> anschließenden Abschnitt "Installation" beschrieben ist.

... und dann bei der ausführlichen Anleitung für die manuelle  
Installation im Abschnitt "Schritt 2: Installieren => Datenbank":

>> WICHTIG: Wenn DeepaMehta Webfrontends und die grafische  
>> DeepaMehta-Oberfläche gleichzeitig auf einer Maschine benutzt werden  
>> sollen, muß als Datenbank MySQL benutzt werden.

Jetzt zum nächsten Punkt:

> Für die Webapps braucht es noch ein paar mehr Schreibrechte für die  
> Ordner
> install/client/images install/client/documents install/client/icons
> (eventuell auch noch für mehr ?) das hängt natürlich vom tomcat user ab
> und wer deepamehta installiert hat. Nach der Standradinstallation von
> deepamehta reichen die Berechtigungen jedenfalls noch nicht.

Ja, Du hast recht, das ist ein Fallstrick. Hier muß das Install-Skript  
noch nachgebessert werden.

=> Enrico: ich würde mich freuen, wenn Du das Installskript so  
erweitern kannst, daß automatisch User-Schreibrechte für folgende  
Verzeichnisse gesetzt werden:
	install/client/backgrounds
	install/client/documents
	install/client/icons
	install/client/images
	install/client/webpages

Es ist primär das grafische DeepaMehta, das programmatisch in diesen  
Verzeichnissen Dateien anlegt.

> Das weitere bezieht sich auf Debian 4 (etch) und einen Tomcat 5.5 in  
> der
> Standardversion
> Bei Debian muss (sofern man nicht die policiy entsprechend anpasst) den
> security manager aussschalten unter:
> /etc/default/tomcat5.5: TOMCAT5_SECURITY=no
> ebenfalls dort empfielt es sich den headless modus zu wählen (das hat
> bei mir Probleme mit der xalan lib behoben)
> /etc/default/tomcat5.5:  CATALINA_OPTS="-Djava.awt.headless=true"

Danke für den Security-Hinweis! In der Tat sind für Tomcat-Anwendungen  
unter Debian standardmäßig Dateizugriffe nur innerhalb ihres  
Anwendungsverzeichnis erlaubt. DeepaMehta-Webanwendungen greifen aber  
auf Konfigurationsdateien (und weiteres) der DeepaMehta  
"Mutterinstallation" zu.

Wie das am besten gelöst werden kann, weiß ich noch nicht. Vielleicht  
könnte das DeepaMehta-Deploy-Skript beim Deployen einer Webanwendung  
Tomcats Policy-Datei ergänzen, mit entsprechenden FilePermissions.

=> Über mögliche Lösungen möchte ich gerne mit Entwicklern diskutieren.

> Starten des Tomcats:
> -Die Integrierung der start Routinen in das run.sh script funktioniert
> bei Debian nicht, da die executables unter /usr/share/tomcat5.5 liegen,
> die webapps aber unter /var/lib/tomcat5.5 da müsste man entweder ein
> paar symlinks setzen, oder das Startscript verändern.

Ja, Du hast recht! Da es bei Debian kein gemeinsames "Tomcat-Home" für  
die Excecutables, Webapps, shared DeepaMehta-Libraries und Logfiles  
gibt, funktioniert das DeepaMehta-Install-Skript hier nicht.

Eine "generische" Lösung (die nichts davon wissen muß, auf welcher  
Plattform sie läuft) wäre, das DeepaMehta-Install-Skript so zu  
erweitern, daß es nicht wie bisher nach _dem_ Tomcat-Home fragt,  
sondern getrennt nach den 4 Tomcat-"Hotspots" (Excecutables, Webapps,  
shared Libraries, Logfiles)

=> Auch hier möchte ich gerne mit Entwicklern über mögliche Lösungen  
diskutieren.

> - was funktioniert ist im Ordner install/client den Tomact zu starten
> mit /etc/init.d/tomcat5.5 start
>
> Ich bin ja blutiger Neuling in Bezug auf deepamehta und Java, aber das
> Hauptproblem sieht mir danach aus, dass die Konfigurationsfiles von  
> einem
> fest verdrahteten Verzeichnis gelesen werden. So sieht es jedenfalls in
> http://svn.berlios.de/svnroot/repos/deepamehta/tags/deepamehta-2.0b8- 
> rc4/develop/src/de/deepamehta/Configuration.java
> zusammen mit dem Aufruf in
> http://svn.berlios.de/svnroot/repos/deepamehta/tags/deepamehta-2.0b8- 
> rc4/develop/src/de/deepamehta/service/ApplicationServiceInstance.java
> Da der Arbeitspfad eines Servlets ja unbestimmt ist (er wird nur
> durch das Starten vom tomcat in einem bestimmten Verzeichnis bestimmt,
> was ja durch den workaround auch funktioniert aber auf einer shared  
> hosting
> Umgebung nicht möglich ist) müsste man die Konfiguration besser mit  
> getResource()
> einlesen. Siehe auch die Beschreibung unter:
> http://www.velocityreviews.com/forums/t131134-specifying-path-for- 
> file-to-be-read-by-servlet-with-tomcat.html
> Wie gesagt habe ich nicht wirklich Ahnung, und hoffe Euch durch meine
> Gedanken etwas zu helfen.

Du hast völlig recht. Daß die DeepaMehta-Webanwendungen darauf  
angewiesen sind, daß Tomcat von einem bestimmten Verzeichnis aus  
gestartet werden muß, ist ein "quick-and-dirty-hack" und für  
Produktionsumgebungen völlig unakzeptabel.

Hintergrund: DeepaMehta-Webanwendungen müssen z.B. auf  
Konfigurationsdateien der DeepaMehta "Mutterinstallation" zugreifen (in  
install/config), wissen aber nicht, wo diese liegt. (Die von Dir  
erwähnte ServletContext.getResource()-Methode hilft hier nicht weiter,  
da sie relativ zum ServletContext arbeitet, also nur Resourcen  
_innerhalb_ der Webanwendung adressieren kann.)

Es gibt bereits einen Weg, DeepaMehta-Webanwendungen zu starten, ohne  
auf einen Tomcat-Neustart angewiesen zu sein. Dazu mußt Du allerdings  
im Deployment-Descriptor der Anwendung (WEB-INF/web.xml) mitteilen, wo  
die DeepaMehta-Installation liegt. Das geht mittels des  
Servletcontext-Parameters "home", z.B.:

	<context-param>
		<param-name>home</param-name>
		<param-value>/usr/local/deepamehta</param-value>
	</context-param>

Beachte: der absolute Pfad muß das DeepaMehta-Installationsverzeichnis  
angeben (ab dem dann install/config liegt), _ohne_ Slash am Ende.

=> Auch hier möchte ich gerne mit Entwicklern über mögliche Lösungen  
diskutieren.

> Test der Webapplikationen (bezieht sich alles auf eine neue  
> Installation
> ohne Änderung, tomcat gestartet von install/client aus)
>
> 1. dm-web
> scheint zu funktionieren, nur die
> url der icons sind local (file://..)und nicht http://... und können
> deshalb nicht angezeigt werden

Hierfür gibt es eine Lösung: Du kannst in DeepaMehta die Base-URL  
einstellen, zu der relative Pfade (z.B. zu Bild-Dateien, die im  
Propertypanel oder auch in den Webanwendungen) aufgelöst werden. Gehe  
dazu in DeepaMehta in den "Administration" Workspace, klicke den  
"CorporateWeb Settings" Topic an, und gebe als "Base URL" z.B. ein:

	http://www.mysite.de/deepamehta/install/client/

Du mußt also das client-Verzeichnis angeben (_mit_ Slash am Ende). In  
diesem findet dann z.B. die "dm-web" Anwendung das "icons" Verzeichnis.

Während der DeepaMehta-Installation wird als "Base URL" standardmäßig  
eine file: URL eingetragen, was funktioniert, solange DeepaMehta Client  
und Server resp. Webanwendungen auf der gleichen Maschine laufen.

> 2. dm-browser
> funktioniert teilweise,
> a) wenn ich etwas editiere (Stift icon) und auf OK klicke kommt:
>
> de.deepamehta.DeepaMehtaException: no PARAM_SEPARATOR "_" found in  
> "typeID"
> 	 
> de.deepamehta.service.web.DeepaMehtaServlet.getWeakRelationParameters(D 
> eepaMehtaServlet.java:857)
>
> aber die Änderung wird gespeichert.
> b) ebenso beim löschen (Papierkorb Icon) kommt die Fehlermeldung
>
> de.deepamehta.DeepaMehtaException: topic "t-1001" is missing in  
> corporate memory
> 	 
> de.deepamehta.service.ApplicationService.checkLiveTopic(ApplicationServ 
> ice.java:350)
>
> aber es wurde erfolgreich gelöscht
> c) alle topicmap icons sind wieder local (file://....) und können
> deshalb nicht angezeigt werden
>
> 3. dm-topicmapviewer
> funktioniert teilweise, fast alle topicmaps sind aufrufbar,
> a) die topicmaps werden korrekt gerendert, aber sind wieder local
> (file://....) und können deshalb nicht angezeigt werden,
> darum kann ich nicht sagen, ob die picture map funktioniert
> b) als einizge gibt es bei der Users and Groups (t-workgroupmap) eine
> Exception
>
> org.apache.jasper.JasperException
> 	 
> org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServl 
> etWrapper.java:512)
>
> java.lang.NullPointerException
> 	 
> de.deepamehta.service.RelationalCorporateMemory.createPreparedStatement 
> (RelationalCorporateMemory.java:1935)
>
> 4. dm-search
> funktioniert teilweise,
> a) wieder locale Icons
> b) wenn ich auf einen user Zugreife kommt die Exception
>
> org.apache.jasper.JasperException
> 	 
> org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServl 
> etWrapper.java:512)
>
> java.lang.NullPointerException
> 	 
> de.deepamehta.service.RelationalCorporateMemory.createPreparedStatement 
> (RelationalCorporateMemory.java:1935)
> 	 
> de.deepamehta.service.RelationalCorporateMemory.queryBaseTopics(Relatio 
> nalCorporateMemory.java:1522)
>
>
> 5. messageboard
> funktioniert vollständig
>
> 6. kompetenzstern
> funktioniert gar nicht, beim Aufruf kommt die Exception
>
> javax.servlet.ServletException: Servlet.init() for servlet  
> Kompetenzstern Servlet threw exception
> 	 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.jav 
> a:105)
>
> java.lang.NullPointerException
> 	 
> de.deepamehta.service.ApplicationServiceInstance.<init>(ApplicationServ 
> iceInstance.java:66)
> 	 
> de.deepamehta.service.ApplicationServiceInstance.lookup(ApplicationServ 
> iceInstance.java:117)
> 	 
> de.deepamehta.service.web.DeepaMehtaServlet.init(DeepaMehtaServlet.java 
> :108)
> 	javax.servlet.GenericServlet.init(GenericServlet.java:211)
>
>
>
> Danke für Eure Arbeit und
> Liebe Grüße,
> Torsten


Auf die anderen Webanwendungen kann ich gerne später eingehen. Der  
obige "Base URL" Tipp wird auch bei manchen der anderen Webanwendungen  
das Icon-Problem lösen.

Zur Zeit ist die Webanwendungen "dm-web" am nützlichsten. Die anderen  
sind eher proof-of-concepts von bestimmten DeepaMehta-Funktionen.  
"dm-web" ist das derzeit am besten ausgebaute generische Web-Frontend  
zum Anzeigen/Suchen/Navigieren/Anlegen/Ändern von Corporate Memory  
Inhalten. Was "dm-web" weiterhin eindrucksvoll demonstriert, sind die  
dynamischen Formular- und Informations-Generatoren, die auf den  
DeepaMehta-Typdefinitionen operieren. Wenn z.B. in DeepaMehta eine neue  
Property angelegt wird, erscheint diese sofort nach einem  
Webbrowser-Reload auch im HTML-Formular oder auf einer  
Topic-Info-HTML-Seite. TIPP: Damit diese Typdef-Synchronisation  
zwischen grafischen DeepaMehta und Webanwendungen funktioniert, muß der  
DeepaMehta-Server laufen, d.h. das grafische DeepaMehta im  
Client/Server-Modus benutzt werden. Dann nämlich kommunizieren Tomcat  
und DeepaMehta über einen Socket (mit dem Monolithen geht das nicht, da  
sind keine Sockets in Benutzung).

Torsten, ich danke Dir sehr für Deinen ausführlichen Report. Alle von  
Dir erwähnten Punkte sind von großer Relevanz. Du hast auch alle Punkte  
sehr gut beschrieben. Ich sehe, daß Du eine Menge Zeit investiert hast.  
Danke!

Mit der Hoffnung Dich trotz aller DeepaMehta-Unzulänglichkeiten als  
Anwender zu behalten:

Liebe Grüße
Jörg




Mehr Informationen über die Mailingliste users