Geonetwork 4.x
Wichtige URL's eines installierten Geonetwork
Voraussetzungen

Für Installation unter Windows mit Jetty-Servletcontainer:

Installation Geonetwork
  • ZIP entpacken am besten nach C:\Programme
  • Java installieren
  • gegebenenfalls den Pfad zu Java in Systemvariable PATH
  • Jetty starten über bin\startup.bat
  • Geonetwork ist aufrufbar über: http://localhost:8080/geonetwork
  • Adminpasswort (Standard: admin/admin) ändern

Geonetwork verbraucht u.U. zu viel Speicher. Das kann in der startup.bat angepasst werden. Dort gibt es eine Zeile 'Try changing the Xmx parameter if having memory errors'. Die nachfolgende Zeile kann verwendet werden um den Speicherverbrauch auf 1GB zu beschränken (Paramter: -Xms1g -Xmx1g -Xss2M).

Installation ElasticSearch

Hinweis: läuft über http, also kein SSL aber da die Verbindung nur intern zwischen Geonetwork und Elasticsearch besteht, ist das akzeptabel.

 

Installation als Dienst:

Ausführen: 

C:\Program Files\elasticsearch-7.17.8\bin\elasticsearch-service.bat install

(Nachzulesen: https://www.elastic.co/guide/en/elasticsearch/reference/5.1/windows.html#windows)

Der Dienst verbraucht sehr viel Speicher, das sollte limitiert werden. Dazu den Manager starten:

C:\Program Files\elasticsearch-7.17.8\bin\elasticsearch-service.bat manager

Dort im Reiter Java den 'Initial Memory Pool' und 'Maximal Memory Pool' auf 1024 setzen und Dienst neu starten.

Postgres als DB verwenden

In Postgres habe ich:

  • neuen Benutzer 'geonetwork' angelegt
  • Rechte: nur 'Can login'
  • neues Schema 'geonetwork' mit owner geonetwork angelegt

Geonetwork stoppen 

Verbindung konfigurieren:

  • Datenbanktyp freischalten: /WEB-INF/config-node/srv.xml
    -> Eintrag zu Postgres freischalten
  • Verbindung konfigurieren: /WEB-INF/config-db/jdbc.properties
    Angepasste Zeile:

    jdbc.username=#{systemEnvironment['GEONETWORK_DB_USERNAME']?:'geonetwork'}
    jdbc.password=#{systemEnvironment['GEONETWORK_DB_PASSWORD']?:'geonetwork'}
    jdbc.database=#{systemEnvironment['GEONETWORK_DB_NAME']?:'cardo_developers'}
    jdbc.host=#{systemEnvironment['GEONETWORK_DB_HOST']?:'localhost'}
    jdbc.port=#{systemEnvironment['GEONETWORK_DB_PORT']?:5432}

  • Default-Schema konfigurieren: /WEB-INF/config-spring-geonetwork.xml
    <entry key="hibernate.default_schema" value="geonetwork"/>

Geonetwork starten

-> die Datenbank wird beim ersten Start frisch eingerichtet

Weitere wichtige Konfigurationen des CSW

In der Einstellungsseite des Geonetwork sind noch folgende Parameter wichtig:

  • Hinzugefügte Metadaten sind öffentlich - sollte angeschaltet werden, damit keine extra Freigabe nach Import nötig ist
  • Abschnitt Katalogserver: hier müssen Host, Protokoll und Port angepasst werden, damit die generierten URLs korrekt sind
  • Eintrag zu benutzen für GetCapabilities: hier kann ein Metadatensatz angegeben werden, aus dem dann alle allgemeinen Parameter für GetCapabilities verwendet werden
    Wichtig: dieser Metadatensatz muss publiziert (also öffentlich sichtbar) sein!
  • Automatische Fehlerkorrekturen - klingt so, als würden hier auch die Zeitangaben letzte Änderung gesetzt, das müsste dann ausgeschaltet werden, damit originale Daten von cardo erhalten bleiben
  • Abschnitt Inspire - noch nicht ganz klar, was da am besten einzustellen ist
Aus cardo exportieren

Hier sind die Parameter gleich geblieben:

Weitere Schritte
Bekannte Probleme

Problem:

Falsch genrierte URL in GetCapabilities

Ausgabe bei CSW-Export:

CODE:ProtocolError SOURCE:HttpError Beim Aufruf der Url http://localhost:8080/geonetwork/srv/eng/csw/csw-publication trat folgender Fehler auf: Der Remoteserver hat einen Fehler zurückgegeben: (404) Nicht gefunden.

Ursache:

In der URL wurde eine Ebene zu viel eingefügt (/csw/). Dies passiert, wenn man beim Geonetwork 4.2.2 die Option 'Eintrag zu benutzen für GetCapabilities' genutzt wird, indem eine ID hinterlegt wird, scheint der Geonetwork die URLsim GetCapabilities zu csw-publication falsch zu generieren.

Lösung:

Fehler wurde im GitHub registriert:

https://github.com/geonetwork/core-geonetwork/issues/6744

und soll in Version 4.2.3 behoben sein. Man kann auch in Datei record-to-csw-capabilities.xsl folgende Zeile anpassen:

<xsl:variable name="endPointValuePublication"
select="if (string($endPoint)) then $endPoint else '$PROTOCOL://$HOST$PORT$SERVLET/$NODE_ID/$LOCALE/$END-POINT/csw-publication'" />

ändern zu

<xsl:variable name="endPointValuePublication"
select="if (string($endPoint)) then $endPoint else '$PROTOCOL://$HOST$PORT$SERVLET/$NODE_ID/$LOCALE/csw-publication'" />