ampersand83
I'm new here

Probleme mit URLFactory

Hallo zusammen,

ich habe einen eigenen URLCreator geschrieben, indem ich die URLFactory aus dem FS-5 Beispiel minimal abgeändert habe.

Es wird nach wie vor der Display Name für die Namen von Verzeichnissen und Dateien verwendet und ich setze diese lediglich als lowercase und ersetze Umlaute und ß entsprechend.

Anfangs hat das auch wunderbar funktioniert, doch jetzt stelle ich fest, das manche als Startseite deklarierte Seiten nicht mehr automatisch index.html, sondern index-2.html genannt werden. Im Code finde ich aber echt keine Stelle an der das passieren könnte. Genauso ein Verhalten habe ich bei normalen Inhaltsseiten. Hier gibt es in der Struktur eine Seite mit Displayname Bildergalerie, der ja dann bei der Generierung zu einer Datei bildergalerie.html werden sollte. Leider wird seit einiger Zeit immer nur eine Datei mit Namen bildergalerie-3.html generiert.

Ich habe auch schon mehrmal die Funktion gespeicherte URLs zurücksetzen durchgeführt, doch es ändert sich nichts.

Hat hier jemand eine Idee, was wir noch machen könnten?

Grüße,

Stefan

32 Replies

Stefan Zülch schrieb:

Hm, also ich habe direkt vor der Generierung due URLs im CMS zurückgesetzt. Das Logfile zeigt aber nichts an. Alles sehr mysteriös.

Wenn weder die Meldung von FirstSpirit noch deine eigenen Debug-Meldungen erscheinen, dann können die Werte nur aus der Persistenz kommen. Lege mal eine komplett neue Seite an und generiere die, um sicherzustellen, das deine Log-Ausgaben tatsächlich kommen.

Peter
0 Kudos

Ich bekomme jetzt in den Logs entsprechende Warnings, z.B.:

WARN  02.09.2013 15:19:26.375{g-node=6836} (de.espirit.firstspirit.generate.path.RegistryUrlFactory): URI conflict detected for SSNodeEntry-12611-3999-DE-, unified URI: /verantwortung-erleben/index-2.html [SSNodeEntry-7213-3999-DE-]

So wie es aussieht klappt wirklich die Zurücksetzung der gespeicherten URLs nicht. Herr Holst, können Sie mir, das von Ihnen angesprochene Skript schicken? Wird es hier auch mal ein Bugfix von e-Spririt geben?

Viele Grüße,

Stefan

0 Kudos

Hallo Stefan,

anbei das Skript um die gespeicherten URLs gelöschter Elemente zurückzusetzen. Das Skript muss mit einem Benutzer mit Änderungsrechten an den URL-Einstellungen der globalen Inhalte auf jeweils einem Knoten in der Medienverwaltung und Strukturverwaltung ausgeführt werden. Das Skript wurde mir ursprünglich vom Helpdesk zur Verfügung gestellt, ich habe es leicht angepasst. Es besteht unter der ID #7524 ein Ticket, das Problem ist bekannt und soll mit dem kommendem Release Ende September ausgerollt werden wenn ich richtig informiert bin.

Beste Grüße,

Hendrik Holst

Hallo Hendrik,

vielen Dank für das Skript. Ich habe jetzt bei der Ausführung jetzt nur noch das Problem, dass FS in Zeile 7 nicht weiß, was diese Variable e ist. Fehlt da evtl. noch eine Zeile?

0 Kudos

Hallo Stefan,

e ist das Element auf welchem das Skript per Kontextmenü im JavaClient ausgeführt wird. Man könnte auch context.getStoreElement() verwenden, das sollte keinen Unterschied machen. Das Skript kann in dieser Form nur über das Kontextmenü auf einem Element in der Medien bzw. Strukturverwaltung ausgeführt werden, wer das Skript auf dem Server oder über das normale Menü ausführen möchte muss das Skript so anpassen, das der Medien- bzw. Struktur-Store bezogen wird..

Am einfachsten geht man mit dem Benutzer Admin wie folgt vor:

1.) Java Console leeren (Falls die nicht angezeigt wird unter Start-> Einstellungen -> Systemsteuerung -> Java -> Tab Erweitert, Java Konsole einblenden aktivieren, Client erneut starten)

2.) BeanShell auf dem Wurzelverzeichniss der Medien- sowie Strukturverwaltung über das Kontextmenü "Skript ausführen -> Developer Skripts -> BeanShell Console" aufrufen

2.) in der BeanShell den Befehl "editor();" ausführen, es sollte sich ein weiteres Fenster öffnen.

3.) den Inhalt des Skriptes in das neue Fenster (Editor) einfügen, anschließend das Skript mit der Schaltfläche "Eval" ausführen

4.) Log Ausgaben auf der Java Console auswerten, fertig!

Wichtig ist das man das Skript eben einmal in der Medienverwaltung und einmal in der Strukturverwaltung ausführt da für diese Verwaltungen bzw. deren Element URLs gespeichert werden.

Gruß,

Hendrik

0 Kudos

Hallo Hendrik,

ach so. Ich hatte das Skript jetzt als Skript in FirstSpirit eingebunden und wollte es als Kontextmenü Skript ausführen.

Starte ich es so, wie du beschrieben hast, kommen INFO Logs, die mir sagen, dass der Sitestore in einer bestimmten Millisekunden Anzahl geladen wurde, aber dann nichts mehr. Der ganze Client ist danach blockiert.

0 Kudos

Hallo Stefan,

je nachdem wieviele gelöschte Elemente in den jeweiligen Stores vorhanden sind kann die Ausführung etwas länger Dauern, in dieser Zeit ist der Java Client blockiert und kann nicht mehr benutzr werden - das ist ganz normal. Du kannst das Skript natürlich um weitere Log-Ausgaben ergänzen um zu sehen welche Elemente gerade verarbeitet werden bzw. um zu sehen das das Skript noch arbeitet.

Gruß, Hendrik

0 Kudos

Ja, es ist dann durchgelaufen, hat aber nichts geändert. Es werden nach wie vor Dateien mit index-2.html generiert und ich kann mir beim  besten Willen nicht mehr erklären woran das noch liegen könnte.

Jetzt wird auch wieder nichts mehr geloggt. Gestern waren ja noch sowohl meine Logging Ausgaben als auch diese URI Conflicts in den Log Files, aber jetzt steht wieder gar nichts mehr drin. Ich beginne echt langsam an FS zu zweifeln.

0 Kudos
mareikeks
Returning Observer

Hallo!

Ich kann diese Problematik bestätigen. Aktuell habe ich auch ein Projekt, in dem ich diese Konflikte nicht gelöst bekomme, auch nicht mit dem Skript.

Hier wird bei dem Konflikt auf eine ID verwiesen, die in dem Projekt nicht existiert, weder gelöscht noch freigegeben.

Gibt es hier inzwischen eine andere Lösung als das Skript?

Viele Grüße,

Mareike

0 Kudos

Das Problem wird mit dem nächsten Release behoben (interne ID #111683). Das Problem tritt nur in Kombination mit Remote-Projekten auf, daher findest du diese ID auch nicht in diesem Projekt.

Bis zur Freigabe des Updates gibt es leider nur die Möglichkeit, das Skript zu benutzen, oder die Datenbank komplett zu löschen (nur bei heruntergefahrenem Server, Dateisystem-Operation).

@Stefan:

Das Logging erfolgt nur beim Eintragen in die URL-Datenbank, nicht beim Auslesen. Und auch nur in diesem Fall wird deine URLFactory angesprochen.


Peter
0 Kudos