Der jadice server ist ab Sun/Oracle Java VM in Version 1.7.0 Update 3 (Java 7) oder neuer lauffähig. Für die Installation muss zuerst die
Distributionsdatei (i. d. R. jadice-server-5.x.y.z-dist.zip
) in ein leeres
Verzeichnis auf einem lokalen Laufwerk des Servers entpackt werden. Datei- oder
Ordnernamen, die im weiteren Verlauf dieses Entwicklerhandbuchs genannt werden, sind
relativ zu diesem Verzeichnis.
Die Installations-/Startdateien befinden sich im Verzeichnis /bin
.
Um jadice server als Windows-Dienst zu installieren und zu administrieren, stehen folgende Dateien zur Verfügung:
install.bat
Installiert einen Windowsdienst mit Namen „levigo jadice server 5“.
start.bat
Startet den Dienst.
stop.bat
Beendet den Dienst.
Anmerkung
Zur Ausführung dieser Dateien benötigen Sie Administrationsrechte.
Alternativ kann der Server mit dem Skript jadice-server.bat
gestartet
werden. Für Linux-basierte Betriebssysteme ist das Skript
jadice-server.sh
zu verwenden. Beim Start wird eine Konsole
geöffnet; mit der Tastenkombination Strg+C kann jadice server beendet werden.
Alle serverseitig benötigten jar
-Dateien befinden sich im Verzeichnis
/server-lib
.
Neben der Distributionsdatei von jadice server erhalten Sie eine separate Lizenzdatei
(JadiceServerLicense.properties
). Diese muss im Konfigurationsverzeichnis
/server-config
des jadice server abgelegt werden.
Ist diese Datei nicht vorhanden bzw. die Lizenz abgelaufen oder ungültig, wird
beim Start des jadice servers sowie bei jeder Anforderung eines Job
s eine
Fehlermeldung in das Server- und das Client-Log geschrieben.
Sollte es sich um eine zeitlich beschränkte Evaluationslizenz handeln, wird nur beim Start des Servers eine Meldung gezeigt. Darüber hinaus gibt es keine Funktionseinschränkungen des jadice server.
jadice server verwendet Apache FOP zur Konvertierung von XML-Dokumenten und
E-Mails nach PDF. Aus lizenzrechtlichen Gründen darf das optionale Paket zur
Silbentrennung dem Auslieferungspaket von jadice server nicht beiliegen. Dies ist
jedoch frei unter http://offo.sourceforge.net/ verfügbar. Zur Installation muss lediglich
die Datei hyphenation.jar
in den Ordner server-lib
kopiert werden.
Es stehen drei Varianten für den Aufbau des Messagingsystems zur Verfügung.
Eingebetteter Broker (Standard)
Betrieb eines Brokers innerhalb der JVM von jadice server
Einsatz von Apache ActiveMQ
Clusterfähig durch „Network of Brokers“
Konfiguration siehe nächster Abschnitt
Separater Broker
Einsatz eines separaten Brokers auf der Infrastruktur des jadice server
Einsatz beliebiger kompatibler MOM
Ggf. clusterfähig
Separate MOM-Infrastruktur
Einsatz separater MOM-Infrastruktur
Einsatz beliebiger kompatibler MOM
Verfügbarkeit muss durch Infrastruktur sichergestellt werden
Welche dieser drei Varianten zum Einsatz kommt, wird in der Datei
server-config/application/server.xml
konfiguriert. Im
Abschnitt
<bean id="jms-connection-factory" …>
wird der zu verwendende Konnektor und im Abschnitt
<property name="properties" …>>
unter
jadice.server.queue-name
der Name der Message-Queue und unter
jadice.server.activemq-port
der Port für ActiveMQ konfiguriert, wohin sich jadice
server verbinden soll. Da die Klasse ActiveMQConnectionFactory
sowohl
QueueConnectionFactory
wie auch TopicConnectionFactory
implementiert, wird
sie über die Aliase jms-queue-connection-factory
wie auch
jms-topic-connection-factory
an den jeweils passenden Stellen
referenziert.
Beispiele, wie Verbindungen über IBM Websphere MQ aufgebaut werden können, sind
in der Datei server-config/application/example/jms.xml
zu finden. Die passende
Konfiguration muss anstelle der vorhandenen Abschnitte
<bean id="jms-queue-connection-factory" …>
bzw. <bean id="jms-topic-connection-factory" …>
in die
Datei server-config/application/server.xml
eingefügt werden.
jadice server stellt standardmäßig das zu verwendende Messagingsystem (d. h. den
Message-Broker) in der Server-Instanz bereit. In diesem Falle wird
Apache ActiveMQ
als Messagingsystem verwendet. Es wird in der Datei
server-config/application/activemq-broker.xml
konfiguriert. Um die Übertragung
zwischen Client und Server mit SSL zu verschlüsseln, findet sich unter
http://activemq.apache.org/ssl-transport-reference.html und
http://activemq.apache.org/how-do-i-use-ssl.html eine Anleitung, wie dies realisiert
werden kann.
Der Port und der Name der verwendeten Messagequeue werden zentral in der Datei
server-config/application/server.xml
konfiguriert, siehe Abschnitt „Konfiguration des Messagingsystems“
Um diesen internen Broker nicht zu starten, muss der Abschnitt
<bean id="broker" …>
in der Datei server-config/application/server.xml
auskommentiert
werden.
Folgende Konfigurationsänderung ist notwendig, um jadice server via ActiveMQ in einem Cluster zu betreiben:
In der Datei
server-config/application/activemq-broker.xml
die Kommentarzeichen um eins der beiden Elemente<networkConnector …>
entfernen.
Der Cluster hat dabei folgenden Aufbau:
Auf jedem Knoten läuft eine Instanz von jadice server mit jeweils einem eingebetteten Broker unter Apache ActiveMQ.
Das Clustering basiert auf einem ActiveMQ Network-of-Brokers, d. h. der eingebettete Broker eines jeden Knotens nimmt gleichberechtigt an einem verteilten Broker teil.
Die Broker finden sich entweder gegenseitig über Auto-Discovery, das über Multicast realisiert wird, oder das Network-of-Brokers wird statisch definiert.
Damit das Clustering wirksam ist, müssen die Clients entsprechend
konfiguriert werden. Finden sich die Broker über Auto-Discovery, so kann man für
Clientverbindungen die Methode
Multicast-Discovery verwenden. Dazu muss der
Gruppenname des Clusters bekannt sein, den die jadice server-Instanzen bilden.
Dieser wird in der Datei /server-config/application/server.xml
unter
jadice.server.activemq-group
gesetzt und lautet standardmäßig
jadice-server.cluster
.
Die URL, mit der sich ein Client in diesem Fall mit dem Cluster verbinden
kann, lautet (vgl. Codebeispiel im Abschnitt „Erstellen eines Server-Jobs“):
discovery:(multicast://default)?group=jadice-server.cluster&initialReconnectDelay=100
Wurde ein statisches Network-of-Brokers definiert, muss die Verbindungs-URL
ebenfalls statisch definiert werden: failover:(<URL_Server_A>,<URL_Server_B>)
, zum Beispiel:
failover:(tcp://serverA:61616,tcp://serverB:61616)
.
Der Server wird über einen betriebssystemabhängigen Wrapper gestartet. Hier werden Java VM und Klassenpfad-Parameter definiert.
Die Wrapper-Konfigurationsdatei wrapper.conf befindet sich im Verzeichnis /wrapper.
Pfad zur Java VM:
# Java Application wrapper.java.command=java
Definition weiterer Klassenpfadeinträge:
# Java Classpath (include wrapper.jar) Add class path # elements as needed starting from 1 wrapper.java.classpath.1=../wrapper/lib/wrappertest.jar wrapper.java.classpath.2=../wrapper/lib/wrapper.jar wrapper.java.classpath.3=../bin/server-console.jar wrapper.java.classpath.4=../msoffice-lib # Beispiel eines weiteren Klassenpfadeintrags: wrapper.java.classpath.N=...
Die Nummerierung muss fortlaufend sein und darf sich nicht mit bereits vorhandenen Einträgen überschneiden. |
Werden für die Java Virtual Machine (JVM) zusätzliche Parameter benötigt, z. B. Setzen des temporären Verzeichnisses für die VM, können diese auf folgende Weise gesetzt werden:
# Beispiel zusätzlicher JVM Parameter wrapper.java.additional.1=-server wrapper.java.additional.2=-Djava.io.tmpdir=C:\tmp wrapper.java.additional.N=<weitere Parameter>
Anmerkung
Wird der jadice server im Multi-VM-Modus gestartet, werden diese Parameter nur für die zentrale Instanz wirksam (vgl. Abschnitt „Konfiguration Multi-VM-Modus“)
Definition JVM-Speichereinstellungen,
wrapper.java.initmemory
entspricht Parameter -Xms
,
wrapper.java.maxmemory
entspricht Parameter -Xmx
:
# Initial Java Heap Size (in MB) #wrapper.java.initmemory=3 # Maximum Java Heap Size (in MB) wrapper.java.maxmemory=512
Außerdem ist es möglich, den Klassenpfad und somit die geladenen Java-Bibliotheken zu
ändern, um beispielsweise jadice server um eigene Worker-Implementierungen zu
erweitern. Dies geschieht in den Dateien
/server-config/jadice-server.options
und
/server-config/jadice-server-local.options
. Folgende
Einträge sind hier möglich:
| Fügt eine einzelne jar -Bibliothek zum Klassenpfad von jadice server
hinzu. |
| |
| Alle jar -Bibliotheken, die im angegebenen Verzeichnis
vorhanden sind, werden in alphabetischer Reihenfolge zum
Klassenpfad von jadice server hinzugefügt. |
|
Dabei ist zu beachten, dass zwischen der Option und dem Parameter ein Zeilenumbruch erfolgen muss. Der effektive Klassenpfad wird in folgender Weise gebildet:
Einträge unter
-cp
/--classpath
ausjadice-server.options
Einträge unter
-cp
/--classpath
ausjadice-server-local.options
Einträge unter
-ld
/--library-dir
ausjadice-server.options
Einträge unter
-ld
/--library-dir
ausjadice-server-local.options
Des Weiteren sind folgende Optionen möglich:
| Bindet eine weitere Konfigurationsdatei ein. Diese muss hier gezeigter Syntax entsprechen. |
| |
-dCL | Beim Start wird eine Auflistung des effektiven Klassenpfads und der Classloader-Hierarchie angezeigt. |
--debug-classpath | |
-dX | Eventuelle Exceptions und Stacktraces, die während des Startens geworfen werden, werden ausgegeben. |
--debug-using-exceptions |
Es muss auf das Verzeichnis <LibreOffice-Verzeichnis>/program
verwiesen werden, damit der
Server auf die Programmdatei von LibreOffice zugreifen kann. Die Konfiguration steht
in der Datei /server-config/jadice-server-local.options
, z. B.
# LibreOffice Verzeichnis -cp C:\Program Files (x86)\Libre Office 4.0\program\
Anmerkung
Unter MS Windows Vista, Windows 7 und Server 2008 dürfen nicht die symbolischen Dateipfade
verwendet werden; anstelle von z. B. C:\Programme (x86)\
muss
C:\Program Files (x86)\
angegeben werden.
Für die Verwendung von LibreOffice 4.0.x ist es außerdem notwendig,
<LibreOffice-Verzeichnis>/URE/java/jurt.jar
im Klassenpfad einzubinden. Außerdem
müssen JVM- und LibreOffice binärkompatibel sein (x86 / x64).
Sind die Pfade nicht richtig konfiguriert, wird bei einer Konvertierung ein Fehler ausgegeben.
Auf Nicht-Windows-Betriebssystemen (Linux, Unix u. ä.) muss außerdem das Paket Xvfb (X window virtual framebuffer) installiert sein, damit ein fensterloser und somit automatisierter Betrieb von LibreOffice erfolgen kann.
Wird jadice server unter Windows NT, 2000, Server 2003 oder einer früheren Version
installiert und soll die Konvertierung mit den MSWordNode
/ MSExcelNode
/…
erfolgen, so muss zunächst das „Microsoft Visual C++ 2005 SP1 Redistributable
Package (x86)“ installiert werden.
Unter MS Office 2007 Service Pack 2 und neuer ist es möglich, PDFs nativ zu exportieren. In Versionen von MS Office 2007 vor Service Pack 2 muss das „2007 Microsoft Office Add-in: Microsoft Save as PDF“ installiert werden, um den nativen PDF-Export nutzen zu können.
Des Weiteren muss im „Trust Center“ (deutsch: „Vertrauensstellungscenter“) von MS Office eingestellt werden, wie mit Makros umgegangen werden soll. Da im Serverbetrieb keine Benutzerabfrage möglich ist, sind nur die Optionen „Alle Makros ohne Benachrichtigung deaktivieren“ und „Alle Makros aktivieren“ sinnvoll (siehe Abbildung 5.1, „Zulässige Einstellungen für Makros in MS Office“). Ebenso ist mit den ActiveX-Einstellungen zu verfahren.
Um die Sicherheitsbestimmung zu umgehen, die es verbieten, dass jadice server auf MS Outlook zugreift, muss das Programm Advanced Security for Outlook installiert und konfiguriert werden.
Konfiguration:
Loggen Sie sich mit unter dem Benutzer, unter dem jadice server läuft, auf dem Server-Rechner ein.
Starten Sie eine Konvertierung, die den
MSOutlookNode
auslöst.Bestätigen Sie den Dialog von Advanced Security for Outlook mit Allow Access und Always perform …
Außerdem müssen unter MS Outlook 2007 die Option „Bei Programmbeendigung Ordner 'Gelöschte Objekte' leeren“ aktiviert. Sie finden diese Einstellung unter → Optionen → Weitere. Außerdem muss die Option „Warnung anzeigen, bevor Elemente endgültig gelöscht werden“ deaktiviert sein. Diese Einstellung befindet sich unter unter Extras → Optionen → Weitere → Erweiterte Optionen.
Um MS Project-Dateien konvertieren zu können, die mit vorhergehenden Versionen erstellt wurden, muss „das Laden von Dateien mit Vorversions- oder nicht standardmäßigen Dateiformaten“ zugelassen im Sicherheitscenter (engl. Trust Center) von MS Project 2010 eingestellt werden:
Zur Verwaltung von Log-Einträgen wird auf das Framework log4j zurückgegriffen. Dieses
wird in der Datei /server-config/logging/log4j-appenders.xml
bzw. /server-config/log4j-appenders-mvm.xml
im Multi-VM-Modus
(siehe Abschnitt „Konfiguration Multi-VM-Modus“) konfiguriert. Standardmäßig
werden Log-Meldungen auf die Konsole ausgeschrieben sowie im Verzeichnis
/log/
gespeichert.
Die Dateien, die in diesem Verzeichnis gespeichert werden, werden in der
Standardkonfiguration täglich rotiert. Diese geschieht mit Hilfe des LogAppenders
DailyRollingFileAppender
. Da dieser nicht die Option
bietet, dass nur die Log-Dateien der letzten n
Tage aufbewahrt
werden, sollten Sie sicherstellen, dass für das Speichern der Log-Dateien
ausreichend Speicherplatz zur Verfügung steht oder die ältesten Dateien automatisch
und regelmäßig ausgelagert oder gelöscht werden. Falls dies nicht möglich ist,
empfiehlt es sich, den RollingFileAppender
zu verwenden;
dieser bietet die Option nur eine maximale Anzahl an Dateien aufzubewahren.
Weitere Möglichkeiten für das Logging sind in der Konfigurationsdatei als Kommentare aufgeführt und müssen lediglich aktiviert werden.
Um den GhostscriptNode
verwenden zu können, müssen zunächst folgende Voraussetzungen
geschaffen werden:
Installation von GPL Ghostscript, Version 8.64 oder neuer
Anpassung der Datei
/server-config/ghostscript/ghostscript.xml
. Unter<bean id="ghostscript" …>
muss ein Element eingefügt werden, das folgenden Inhalt hat:<property name="executableName" value="<Ort der Ghostscript-Anwendungsdatei>" />
Anmerkung
Für die Orte, unter denen Ghostscript unter Windows bzw. Linux standardmäßig installiert wird, sind bereits Vorlagen vorhanden. Hierzu muss nur der passende XML-Kommentar entfernt werden.
Durch die Einbindung von externen Bibliotheken ist es möglich, dass diese in einem Fehlerfall die Java Virtual Machine und somit auch den kompletten jadice server zum Absturz bringen.
Um in diesem Fall mit der Bearbeitung von weiteren Jobs fortzufahren, gibt es die Möglichkeit, den jadice server auf einem Rechner in mehreren Instanzen zu starten. Hierbei übernimmt eine zentrale Instanz des jadice servers die Überwachung aller anderen, die die eigentliche Arbeit durchführen. Sollte eine dieser Arbeiter-Instanzen nicht mehr reagieren oder abgestürzt sein, beendet die zentrale Instanz den zugehörigen Prozess und startet automatisch eine neue Instanz des jadice servers.
Um jadice server in diesem Modus zu starten, muss in der Datei
/server-config/application/server.xml
der auskommentierte Teil wie folgt geändert
werden:
<!-- <import resource="single-instance.xml"/> --> <import resource="multi-vm-manager.xml"/>
In der Datei /server-config/application/multi-vm-manager.xml
können
die Arbeiterinstanzen im Abschnitt <bean
id="server" …>
konfiguriert werden. Um die Anzahl der zu
startenden Arbeiter-Instanzen anzupassen, gibt es folgende Möglichkeiten:
Feste Anzahl an Arbeiterinstanzen:
<property name="fixedVMCount" value="<n>" />
n Arbeiterinstanzen je Prozessorkern:
<property name="perProcessorVMCount" value="<n> />"
Des Weiteren können unter <property name="instanceJVMOptions" …>
der zu
startenden JVM Startparameter wie z. B. die verfügbare Speichergröße mitgegeben
werden.
Um die Schnittstelle, über die Anfragen im XML-Format an den jadice server gestellt werden können, zu aktivieren, muss im der Datei server-config/application/server.xml die Kommentarmarkierung um den Abschnitt <import resource="webservices.xml"/> entfernt werden.
In dieser Datei werden im Abschnitt <bean id="web-service-provider" …>
Endpunkte (als
Instanzen von javax.xml.ws.Endpoint
) des Webservices
propagiert. Der vorgebene Eintrag <entry
key="http://${jadice.server.hostname}:9000/jadiceServer">
stellt einen
Endpunkt unter dem Namen des Rechners auf Port 9000
bereit.
Zur Verwendung der Webservice-Schnittstelle siehe Kapitel 7, Webservice-Schnittstelle.
Über die Security-Schnittstelle kann verhindert werden, dass Clients ohne Authentifikation
auf jadice server und ohne Beschränkungen auf dessen vollen Funktionsumfang zugreifen. Um
diese Schnittstelle zu aktivieren, muss zunächst in der Datei
server-config/application/server.xml
die
Kommentarmarkierung um den Abschnitt <import
resource="security.xml" />
entfernt werden. Wenn jadice server im
Multi-VM-Modus läuft, muss die Datei server-config/application/multi-vm-instance.xml
entsprechend angepasst werden.
Die Datei server-config/application/security.xml
enthält eine beispielhafte Konfiguration, die zunächst auf
die gewünschte Sicherheitsstufe angepasst werden muss. Dies und wie die
Sicherheits-Schnittstelle anschließend verwendet werden kann, ist in Kapitel 8, Sicherheits-Schnittstelle
beschrieben.