Häufig gestellte Fragen FAQ (DE)

Site: CIB eLearning
Course: CIB documentServer
Book: Häufig gestellte Fragen FAQ (DE)
Printed by: Guest user
Date: Tuesday, 7 May 2024, 9:19 PM

Description



Table of contents

1. Wie kann ich die Laufzeit von Aufträgen begrenzen, damit Anwender den Server nicht blockieren können.

Verwenden Sie die Konfigurationseinstellung de.cib.docserv.socket.SocketTimeout. Siehe auch Abschnitt "Konfiguration".


2. Wie kann ich den maximal zur Verfügung stehenden Arbeitsspeicher der nativen Prozesse begrenzen, damit der Serverbetrieb nicht gefährdet ist.

Verwenden Sie die Konfigurationseinstellung de.cib.docserv.socket.MaxMemory. Siehe auch Abschnitt "Konfiguration".


3. Wie verwende ich den CIB documentServer unter EJB?

Es gibt dabei verschiedene Lösungsmöglichkeiten, die zum Teil bereits vorhanden sind, und jeweils Vor- und Nachteile aufweisen:

  • Aufruf des CIB documentServers über http:
    Vorhanden, einfach, robust, skalierbar, Deployment innerhalb eines EAR leicht möglich, kann gut auf weitere Maschinen ausgelagert werden.
  • Verwendung neuer Techniken bei den Socketservern:
    Zu entwickeln, nicht alle Punkte geklärt und getestet, robust.
  • Einführung Connectionpooling:
    Zu entwickeln, nicht trivial. Einfaches Deployment, robust, wird mit der Webapplication ausgeliefert.

4. Welche Logdateien unterstützt CIB documentServer, und wie aktiviere ich diese?

Es gibt mehrere Arten von Logdateien in den drei Schichten des CIB documentServer:

  • Clientanwendung: Über die Methoden setDebugRequestFilename und setDebugResponseFilename der Klasse UrlDocumentServerImpl kann aus der Clientanwendung das gesendete XML und das empfangene Dokument, bzw. XML in eine Datei geschrieben werden.
  • Application-Server: Das CIB documentServer Java Framework schreibt in das normale Standardausgabe und Standardfehler-Log Ihres Application-Servers. Es werden Fehler, Konfigurationseinstellungen, Start/Stop der CIB documentserver Webapplication,Start/Stop von Socketservern sowie an die Socketserver übertragene Datenmengen protokolliert. Kann teilweise über die Einstellungen Ihres Application-Servers abgeschaltet werden.
  • Native Module: Es gibt die Möglichkeit, die Traces der einzelnen Module zu aktivieren.



5. Konfigurationseinstellungen in der web.xml sind nicht wirksam.

Es befindet sich zwei Verzeichnisebenen oberhalb der web.xml eine Datei CibDocumentServer.properties, in der abweichende Konfigurationseinstellungen festgelegt sind. Die CibDocumentServer.properties werden von dort automatisch eingelesen und überschreiben dann die Einstellungen in der web.xml. Löschen Sie die Datei CibDocumentServer.properties oder treffen Sie die Konfigurationseinstellungen dort. Legen Sie die properties an einem anderen Ort ab, so müssen diese im Classpath des Application-Servers sein. Falls Sie die CibDocumentServer.properties außerhalb der Verzeichnisstruktur Ihres Application-Servers konfigurieren möchten, so verwenden Sie die Einstellung de.cib.docserv.ForwardConfigurationFilename, um aus dem Application-Server auf Ihre gewünschte .properties-Datei zu verweisen. Ausführliche Informationen finden Sie im Abschnitt Konfiguration.


6. Wie kann überprüft werden, dass der CIB documentServer, bzw. die Socketserver noch in Betrieb sind?

Durch das regelmäßige Absenden eines einfachen "Alive-Auftrags", der etwa vom Server eine Textdatei holt, deren Inhalt überprüft werden kann. Dieser Auftrag muss direkt an die CibDocumentServer-Webanwendung gesendet werden, nicht an die Socketserver.

 <step name="load" command="load">
        <properties>
               <property name="InputFilename">Alive.txt</property>
               <property name="WorkSpace">..\templates\</property>
        </properties>

</step>

Dieses Verfahren erkennt folgende Situation nicht: Die Socketserver haben sich unerwartet beendet, werden jedoch durch den Alive-Auftrag wie geplant und erfolgreich neu gestartet.


7. Beim Senden eines Auftrags an den CIB documentServer erhalte ich eine Ausnahme java.net.SocketTimeoutException: Async operation timed out im ServerManager.

Der CIB documentServer kann aus dem http-Request das Auftrags-XML nicht lesen. Dabei kommt es zu einem Timeout.

Mögliche Ursachen

Zwischen dem Aufrufer und dem CIB documentServer befindet sich ein Router, der bei GET-Requests keine Daten zulässt. Senden Sie den Auftrag daher mit einem POST-Request. Verwenden Sie zum Beispiel die Methode UrlDocumentServerImpl.setMethod("POST"); um die Aufrufart zu ändern.


8. Ist die Property „MaxServerTries“ von der Property „MaxProcessCount“ abhängig? Was besagen die unterschiedlichen Timeouts?

MaxServerTries ist nicht von MaxProcessCount abhängig. MaxServerTries=10 heißt, dass ein ankommender Thread innerhalb des Zeitraums ServerTimeout=10000 (10 Sekunden) Zehn mal versuchen wird einen der MaxProcessCount=20 externen Prozesse zu reservieren. Damit steuert man also, wie oft ein Thread aufwacht. Aber wenn nach den 10 Sekunden immer noch kein Prozess reserviert werden konnte (egal wie viele Prozesse vorhanden sind), wird der Auftrag nicht ausgeführt und eine Exception geworfen.

Der SocketTimeout gibt an, wie lange ein Thread, der bereits einen der externen Prozesse reservieren konnte wartet, bis von diesem die Antwortdaten (das Dokument) geliefert werden. Angenommen der externe Prozess würde "hängen", dann wird der Thread nach dieser Zeit beendet und eine Exception geworfen.


9. Wie kann ich dem Support meine Traces bereitstellen?

In der Datei CibDocumentServer.properties ist bei der Property „de.cib.docserv.LogOptions=“ der entsprechende Wert für Socketserver und CIB docgen zu setzen.

E (mailtrace.log),
F (prtrace.log),
I (imgtrace.log),
J (jobtrace.log),
M (mrgtrace.log),
O (ocr.log),
P (pdftrace.log),
S (socketserver.log),
Z (invtrace.log).

Der Pfad zu den Logdateien wird über die Property „de.cib.docserv.LogPath=“ gesetzt. Ist diese Property nicht gesetzt, werden die Tracedateien unter dem Pfad zum Arbeitsverzeichnis des CIB documentServer gespeichert (Angabe über die Property „de.cib.docserv.ServerWorkingDirectory“).

Beispiel (Setzen von jobtrace.log und pdftrace.log): de.cib.docserv.LogOptions=JP

Wird CIB job ohne CIB documentServer eingesetzt, so müssen die Umgebungsvariablen für das Modul CIB job gesetzt werden (siehe technischer Leitfaden CIB job).

Ab der Version 1.4.19d kann das Logging auch über die Weboberfläche des CIB documentServers aktiviert und deaktiviert werden.


10. Wo finde ich die Standard-Konfigurationen für die CIB docgen Module und wie können diese geändert/überschrieben werden?

In der Datei jobconfig.xml ist eine Standardkonfiguration für alle CIB docgen Module definiert, die über CIB job aufgerufen wird. Auch die Konfiguration für CIB job selbst wird hier getroffen. Dazu muss in der Datei CibDocumentServer.properties die Property „de.cib.docserv.JobConfigfilename=“ gesetzt werden.

Beispiel: „de.cib.docserv.JobConfigfilename=C:/cib/conf/jobconfig.xml“

Diese Einstellungen in der jobcofig.xml werden standardmäßig von allen Aufträgen verwendet, können aber durch die Auftragsdateien überschrieben werden.


11. Kann man mit dem CIB documentServer Jobs priorisieren oder werden diese abgearbeitet, wie sie in der XML stehen?

Nein, die Jobs werden in der Reihenfolge abgearbeitet, wie sie im Auftrags-XML stehen.


12. Ich habe mehrere Auftragsdateien. Kann ich diesen eine Priorität zuordnen, um die Reihenfolge der Bearbeitung zu beeinflussen?

Eine Priorisierung bei mehreren Auftragsdateien ist nicht implementiert. Die Auftragsdateien werden in der Reihenfolge abgearbeitet, in der sie eintreffen.


13. Warum heißt das Paket für den CIB documentServer "de.cib" und nicht "com.cib" wie für die JComod Bibliothek?

de.cib ist entsprechend der Standards korrekt. com.cib ist veraltet und wird nur aus Kompatibilitätsgründen beibehalten.


14. Verteilter Betrieb von Webanwendung und SocketServer: Welche Einstellungen müssen für diesen verteilten Betrieb getroffen werden?

Um die Socketserverprozesse auf einer anderen Maschine laufen zu lassen als das Java-Framework muss in der CibDocumentServer.properties der Eintrag „de.cib.docserv.socket.Hostname=“ entsprechend gesetzt werden.

Dieses Vorgehen ist derzeit nicht empfohlen.


15. Eine Fehlermeldung “Could not start shell. Commandline: /bin/sh ../bin/prepare.sh.“ verhindert das Starten der CIB documentServer Webanwendung (Context start failed).

Das initiale Shell-Script konnte nicht ausgeführt werden wegen einer der nachfolgenden Ursachen:

  • Rechte der Scripts oder der Shell verhindern einen Start durch die Application-Server-VM.
  • Pfad oder Name der Shell (Einstellbar im Setting de.cib.docserv.Shell) ist falsch konfiguriert. Es muss eine SH-Shell sein.
  • Pfad oder Inhalt der Shell-Parameter ist fehlerhaft (Einstellbar in de.cib.docserv.socket.­Prepare­Arguments bzw. de.cib.docserv.socket.ShutdownArguments).
  • Pfad zum Arbeitsverzeichnis (Einstellbar im Setting de.cib.docserv.ServerWorkingDirectory) ist falsch konfiguriert.
  • Pfade enthalten Backslashes. Pfade sollten bis auf weiteres auf allen Systemen mit / angegeben sein.
  • Es ist Ihrem Application-Server zu wenig Speicher zugeordnet.


16. Fehlermeldung „de.cib.docserv.ServerManagerException: Could not execute request.; nested exception is: java.net.ConnectException: Connection refused: connect;“

Socketserver reagieren oder starten nicht wegen einer der nachfolgenden Ursachen:

  • Es ist ein nicht existierender Logpfad (de.cib.docserv.LogPath) für die Socketserver konfiguriert.
  • Rechte der Scripts oder Binaries verhindern einen Start durch die Application-Server-VM.
  • Pfad zum Executable (Einstellbar im Setting de.cib.docserv.socket.SocketServerExecutable) ist falsch konfiguriert.
  • Pfad zum Arbeitsverzeichnis (Einstellbar im Setting de.cib.docserv.ServerWorkingDirectory) ist falsch konfiguriert.
  • Pfade enthalten Backslashes. Pfade sollten bis auf weiteres auf allen Systemen mit / angegeben sein.
  • Auf Linux wird ein fehlerhafter JDK eingesetzt.
  • Eine benötigte shared Library fehlt auf Ihrem System.
  • Es ist Ihrem Application-Server zu wenig Speicher zugeordnet.


17. Ab und zu erhalte ich die Fehlermeldung "Connection timed out" oder "Read timed out" bzw. Socketserverprozesse beenden sich. Wie kann ich dies verhindern?

Mögliche Ursachen

  • Aufgrund der Serverlast dauert das Warten auf die Serverantwort zu lange, und die Netzwerkverbindung beendet sich.
  • Der Konfigurationsparameter de.cib.docserv.socket.SocketServerProcess.SocketTimeout hat einen zu kleinen Wert. Damit können Sie die Zeit einstellen, wie lange auf die Response von den ausführenden Socketservern gewartet wird.
  • Die Socketserver beenden sich regelmäßig, da der Konfigurationsparameter de.cib.docserv.socket.SocketTimeout auf einen Wert größer als 0 gesetzt ist. Mit den Konfigurationsparametern de.cib.docserv.socket.SocketServerProcess.ConnectWait und de.cib.docserv.socket.SocketServerProcess.ConnectMaxTries können Sie länger/öfter versuchen die Verbindung zu den Socketservern herzustellen.
  • Die Socketserver beenden sich unnötigerweise und müssen neu gestartet werden, da der Aufrufparameter /Idle einen zu kleinen Wert hat. Erhöhen Sie den Wert zum Beispiel auf 1h, indem Sie den Konfigurationsparameter de.cib.docserv.socket.IdleShutdownTime auf 3600 setzen. Im socketserver.log findet sich der Eintrag "nnnnn seconds elapsed without an incoming request - shutting down".
  • Die Socketserver haben sich aufgrund eines unerwarteten Fehlers beendet. Bitte aktivieren Sie alle Logdateien, reproduzieren Sie das Verhalten, und übertragen Sie diese zusammen mit allen weiteren benötigten Dateien (Templates, jobconfig.xml, Application-Server Log) an den CIB support.


18. Ich erhalte eine Ausnahme der Art: Error during error handling: de.cib.xml.dom.XmlException: Transforming error (Factory-Configuration error).

  de.cib.docserv.ServerManager.createExceptionXml(ServerManager.java:550)
  de.cib.docserv.http.ServletBase.createExceptionXml(ServletBase.java:119)
	de.cib.docserv.http.GenerateServlet.createExceptionXml(GenerateServlet.java:289)
	de.cib.docserv.http.ServletBase.processException(ServletBase.java:98)
	de.cib.docserv.http.ServletBase.doGet(ServletBase.java:155)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Caused by: java.lang.ClassNotFoundException: org/apache/xalan/processor/TransformerFactoryImpl
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:169)
	at javax.xml.transform.FactoryFinder.newInstance(Unknown Source)
	at javax.xml.transform.FactoryFinder.find(Unknown Source)
	at javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
	at de.cib.xml.dom.Dom.getStream(Dom.java:120)
	... 32 more
 

Je nach der eingesetzten Tomcatversion müssen Sie das entsprechende JDK wählen. Freigegebene Kombinationen sind:

Tomcat v5 in Kombination mit JRE 1.4
Tomcat v5.5 in Kombination mit JRE 1.5 oder 1.6
Tomcat v6 in Kombination mit JRE 1.5 oder 1.6 oder 1.7
Tomcat v7 in Kombination mit JRE 1.6 oder 1.7
Tomcat v8 in Kombination mit JRE 1.7 oder 1.8
Tomcat v9 in Komination mit JRE 1.8

19. Wie hinterlege ich die Lizenzschlüssel für die CIB docgen Module?

Die Lizenzschlüssel für die CIB docgen Module werden sinnvollerweise in der CIB job-Konfigurationsdatei hinterlegt (jobconfig.xml). Fügen Sie in die jobconfig.xml für alle verwendeten Kommando Einträge (einschließlich für CIB job) die Properties „LicenseCompany“ und „LicenseKey“ hinzu. Weitere Informationen und eine Beispielkonfigurationsdatei finden Sie im technischen Leitfaden für CIB job.

Zusätzliche Informationen zur CIB job-Konfigurationsdatei finden Sie in dem Abschnitt Konfiguration.

Bitte achten Sie darauf, dass Sie wirklich die Lizenzangaben auch für das Kommando „job“ hinterlegt haben, da sonst die Lizenz auch für die anderen Module nicht wirkt.


20. Ich habe meinen Lizenzschlüssel für die von mir lizenzierten Module CIB format/pdf und CIB merge in meiner jobconfig.xml angegeben. Diese wird auch korrekt geladen. Trotzdem erscheint der Testlizenz-Aufdruck auf den erzeugten PDF-Dokumenten.

Mögliche Ursache

Sie haben die Lizenzangaben für die von Ihnen verwendeten Kommandos angegeben, nicht aber für CIB job selbst. Achten Sie darauf, dass Sie wirklich die Lizenzangaben auch für das Kommando „job“ hinterlegt haben, da sonst die Lizenz auch für die anderen Module nicht wirkt.

Mögliche Ursache

Oder die Schreibweise der Properties ist nicht korrekt. Achten Sie auf Groß-Klein-Schreibung. Die Properties lauten „LicenseCompany“ und „LicenseKey“.


21. Wie definiere ich die Defaulteinstellungen für CIB Module auf dem Server?

Außer den Lizenzangaben sind auch alle anderen in den Auftragsdateien angegebenen Einstellungen auf dem Server als Grundeinstellungen konfigurierbar.

Das heißt, dass zum Beispiel auch der Pfad zum Textbausteinverzeichnis auf dem Server eingestellt wird (jobconfig.xml), und nicht mehr in der einzelnen Auftragsdatei. Weitere Informationen und eine Beispielkonfigurationsdatei finden Sie im technischen Leitfaden für CIB job.

Zusätzliche Informationen zur CIB job-Konfigurationsdatei finden Sie in dem Abschnitt Konfiguration.


22. Wo lege ich Formulare und Textbausteine ab?

In der Auftragsdatei verweisen Sie mit zwei Einstellungen auf das Verzeichnis, in dem die vorbereiteten Formulare und Textbausteine liegen: Bei der Angabe des Wurzeldokuments (CIB merge: „-i“, CIB pdf toolbox/merge: „InputFilename“) und bei CIB merge auch noch mit dem Textbausteinverzeichnis („-a“). Weitere Informationen und eine Beispielkonfigurationsdatei finden Sie im technischen Leitfaden für CIB job.

Bei mehreren Servern empfiehlt sich die Ablage auf einem gemeinsamen NFS.


23. Wie kann ich Formulare und Textbausteine im Auftrag mitliefern?

Ihre für CIB merge und CIB pdf toolbox/merge vorbereiteten Formulare und Textbausteine können in den meisten Fällen auch in den Auftrag eingebettet werden. Verwenden Sie hierzu das Kommando „mem“ beziehungsweise im speziellen Fall von CIB merge die Einstellung --directory-set=Name. Sie finden Beispiele hierzu im Unterverzeichnis jobs.

24. Wie kann ich die auf dem Server erzeugte Tracedatei auf dem Client auslesen?

Die auf dem Server erzeugte Tracedatei wird auf dem Client mittels eines einfachen Zugriffs ausgelesen:

  // Trace auslesen
	String t_Trace = t_StepResult.getTrace();

25. Ist eine Batchverarbeitung von Aufträgen möglich?

Grundsätzlich können mehrere Teilaufträge (Jobs) in einer Auftragsdatei angegeben sein und diese werden unabhängig voneinander bearbeitet.

Der Speicherbedarf bei diesem Vorgehen kann jedoch sehr hoch sein, da das Auftragsergebnis die Ergebnisdokumente aller Jobs enthält.

Wir empfehlen, eine große Anzahl von Auftragsdateien mit je einem oder wenigen Jobs zu erzeugen und diese an den CIB documentServer zu übertragen.

Eine Batchverarbeitung ohne Application-Server oder Programmierung ist mit der Nutzungsvariante Kommandozeile auf allen Systemen möglich.


26. Wie kann ich ein PDF-Formular mit Daten füllen?

Eine ausführliche Anleitung und einen Beispielauftrag finden Sie im technischen Leitfaden für CIB job.


27. Wie kann ich Zwischenergebnisse auf dem Server speichern?

Über das spezielle Kommando „save“ können Ergebnisdokumente von beliebigen Schritten auf dem Server abgespeichert werden. Einen Beispielauftrag finden Sie im technischen Leitfaden für CIB job.


28. Kann ich Nutzdaten für CIB merge in den Auftrag einbetten?

Ja, die Auftragsdatei enthält ihre Nutzdaten dann einfach als weiteres Element des Auftrags. Eine ausführliche Beschreibung und einen Beispielauftrag finden Sie im technischen Leitfaden für CIB job.


29. Wie kann ich Tracedateien zum Client übertragen?

Mit dem Element <trace>Dateiname</trace> in der Auftragsdatei kann die Logdatei eines Kommandos zum Client übertragen werden. So kann zum Beispiel die mit der Property „-L“ des Kommandos „merge“ (CIB merge) erzeugte Fehlerdatei „merge.log“ in die Auftragsergebnisdatei eingesetzt werden.

Ab Version 1.4.19 des CIB documentServer ist das Setzen von „-L“ ausreichend. Eine Beispielauftragsdatei und die entsprechende Beispielauftragsergebnisdatei finden Sie im technischen Leitfaden für CIB job.


30. Wie können Benutzereingaben aus PDF-Formularen gespeichert werden?

Die vom Endanwender in einem PDF-Formular eingegebenen Daten werden durch Klick auf eine im Formular enthaltene Schaltfläche "Absenden" an den CIB formserver übermittelt. Hierzu muss die bei der Schaltfläche hinterlegte URl den CIB formserver bezeichnen: http://servername:port/CibDocumentServer/Forms. Der CIB pdf formserver erzeugt einen Auftrag (XML) an den CIB documentServer, der ein PDF zurückliefert, in dem die eingegebenen Daten jetzt in den Eingabefeldern gespeichert sind.


31. Kann das CIB documentServer-Paket von CIB auch als .EAR-Datei geliefert werden?

Das ist nicht möglich. Sie müssen das EAR selbst erstellen, da die EAR-Datei unter anderem die Konfigurationsdatei CibDocumentServer.properties enthält, die jeder Kunde individuell anpasst. Wie Sie ein EAR zum Beispiel für die Installation in JBoss erstellen, wird im Abschnitt Installation - JBoss genauer erklärt.


32. Was bedeutet der Fehlercode -72 im Socketserver-Logfile?

Unter unixoiden Betriebssystemen kann es passieren, dass Fehlercodes um ein Vielfaches von 256 verschoben ausgegeben werden.

Bsp: Der Rückgabewert 440 wird somit als 184 bzw. sogar als -72 ausgegeben.

Nachfolgende Aufstellung gibt eine Übersicht über mögliche Fehlerrückgaben durch den Socketserver. Die Fehlernummern haben folgende Bedeutung:

Rückgabewert

Beschreibung der Rückgabewerte

401

Xerces reported error in input xml or during output xml generation

402

Function not implemented.

403

Internal error

404

At least one step failed, because the executed command failed.

405

The specified input file is empty.

406

The specified contents of a job or step are invalid.

407

Properties incompatible, for example InMemoryProcessing=1 and InputFilename=xxx.rtf im FormatStep

408

the job or step is still processed (used for intermediate results)

409

No input filename specified

410

Java exception occurred

411

A step was not executed, because one of his predecessors failed

412

A step reached its configured timeout and was not executed completely.

413

During execution of a step, the job timeout was reached. The step was not executed completely.

414

During execution of a job, a step timeout or the job timeout was reched, and the processing was stopped.

433

Der SocketServer hängt wegen eines allgemeinen Resourceproblems (z.B maximaler Speicher des Betriebsystems überschritten).

434

Keine Antwort vom Socketserver nachdem die in der Property SocketTimeout angegebene Zeit überschritten wurde. Dieser Returncode wird ab Version 1.15.8 nicht mehr verwendet. Es wird der Returncode 439 geliefert.

435

Java: Exitcode of natives could not be read (NOEXITCODE)

436

Java: DocumentServer: no asynchronous job result available after several tries (ASYNCRESULTMISSING)

437

Java: General exception (GENERALEXCEPTION)

441

SocketServer: Zu wenig oder keine Argumente

442

SocketServer: Nicht zulässige Portnummer

443

SocketServer: CIB Job Library nicht verfügbar

444

SocketServer: Ungültiger Content-Type

445

SocketServer: Allgemeiner Fehler mit Beschreibung

446

SocketServer: Allgemeiner Fehler

447

SocketServer: Die Url im http-Header ist ungültig. Erlaubt sind /job und /terminate

448

SocketServer: Idle Timeout reached

449

reserved for future use

450

ServerManager hat Terminierungssignal empfangen

451

ServerManager: Zu wenig oder keine Argumente

452

ServerManager: Falsches Argument

453

ServerManager: Nicht zulässige Portnummer

454

SocketServer: Maximaler Arbeitsspeicher erreicht. Siehe de.cib.docserv.socket.MaxMemory.

455

SocketServer: Allgemeiner Fehler mit Beschreibung

456

SocketServer: Allgemeiner Fehler

457

SocketServer soll (re)konfiguriert werden

458

SocketServer: Maximaler Arbeitsspeicher erreicht. Fehler bei der Allokation („malloc()“). Siehe de.cib.docserv.socket.MaxMemory.

459

SocketServer: Maximaler Arbeitsspeicher erreicht. Fehler bei der Allokation („new“). Siehe de.cib.docserv.socket.MaxMemory.

 

Der Fehlercode -72 tritt immer dann auf, wenn die mit de.cib.docserv.MaxJobCountPerProcess angegebene Anzahl an Jobs bearbeitet wurde und somit die Socketserver-Prozesse neu gestartet werden. Die Logdateien von CIB job und den CIB docgen werden dabei neu begonnen, und können auf diese Weise in der Größe begrenzt werden.


33. Wo finde ich den CIB formserver?

Der CIB formserver ist im CIB documentServer ab Version 1.5.x enthalten. Es wird ein Beispielformular mitgeliefert, das Sie nach der Installation der CIB documentServer Webanwendung aufrufen können, um die Funktion des CIB formservers zu sehen.

Siehe Abschnitt Anlauftest CIB formserver im Kapitel Schneller Einstieg.


34. Wie muss ich Formulare für den CIB formserver gestalten?

Erstellen Sie bitte übliche PDF-Formulare mit allen dafür zur Verfügung stehenden Mitteln, zum Beispiel auch mit dem CIB pdf brewer Pro&Form. Fügen Sie abschließend eine Senden-Schaltfläche hinzu, die den Link zum CIB formserver enthält und speichern Sie es im konfigurierten Formular-Verzeichnis.

Dieses PDF-Formular können Sie direkt auch zum Einmischen der Daten verwenden. Der Anwender kann damit die Daten auch mehrfach abändern und erneut senden. Kopieren Sie es hierzu zusätzlich auch in das konfigurierte Templates-Verzeichnis.

Um ein nachträgliches, erneutes Ändern der Daten zu vermeiden, speichern Sie das PDF-Formular ohne die Senden-Schaltfläche im Templates-Verzeichnis.

Wenn Sie das Formular per Mail versenden möchten, anstatt es vom Server herunter zu laden, muss die Senden-Schaltfläche mit der absoluten URL zum CIB formserver versehen werden. Das Dokument benötigt dann außerdem ein zusätzliches, verborgenes Eingabefeld mit dem Namen "formname", das den Namen der Formulardatei im vorkonfigurierten Templates-Verzeichnis enthält.


35. Wie gelangen die vom Anwender in ein CIB formserver Formular eingegebenen Daten aus dem PDF in meine Anwendung?

Senden Sie hierzu das ausgefüllte PDF mit einem Auftrag an den CIB documentServer, und verwenden Sie einen pdfjoin-Step mit dem OutputFormat=FormatXfdf oder FormatCsv. Der Beispiel-Auftrag jobs\basic\Job-PdfMerge-Formserver-ExtractXfdf.xml aus dem Client-Paket zeigt das.


36. Gibt es eine Möglichkeit, den Anwender zu unterstützen beim richtigen Ausfüllen des Formulars?

Wie im Whitepaper zum formserver beschrieben, ist vorgesehen, serverseitig die Daten zu überprüfen und dem Anwender das teilausgefüllte Formular zurückzusenden, ergänzt um individuelle Fehlermeldungen und Korrekturhinweise.


37. Was muss beachtet werden beim Wechsel auf eine aktuelle Version des CIB documentServer?

Beachten Sie hierzu die Hinweise in der Versionshistorie „CIB documentServer History.pdf“ im Auslieferungspaket der neuen Version. Detaillierte Informationen finden Sie in Kapitel 2.4.


38. Der CIB documentServer startet nicht. Folgender Fehler wird im Log ausgegeben:

Socketserverprozesse beenden sich. ERROR: Please make sure, that the setting
de.cib.docserv.ServerProcessFactoryClass is set to
de.cib.docserv.socket.UrlSocketServerProcessFactory.
StandardContext[/CibDocumentServer]Exception sending context initialized event to listener 
instance of class de.cib.docserv.http.ContextListener
de.cib.docserv.DocumentServerError: CIB documentserver: 
Configuration error: de.cib.docserv.socket.SocketServerProcessFactory isnot supported anymore
	at de.cib.docserv.DocumentServerFassade.prestartServerManager(DocumentServerFassade.java:310)
	at de.cib.docserv.http.ContextWrapper.prestartServerManager(ContextWrapper.java:53)
	at de.cib.docserv.http.ContextListener.contextInitialized(ContextListener.java:67)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4343)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
	at org.apache.catalina.core.StandardService.start(StandardService.java:480)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)

Mögliche Ursache

Die Konfigurationseinstellung
de.cib.docserv.ServerProcessFactoryClass=de.cib.docserv.socket.SocketServerProcessFactory
muss bei CIB documentServer ab Version 1.5 geändert werden nach
de.cib.docserv.ServerProcessFactoryClass=de.cib.docserv.socket.UrlSocketServerProcessFactory

39. Wie kann ich mehrere Instanzen des CIB documentServer in einem Servletcontainer betreiben?

Indem die Socketserver je Instanz eigene Portbereiche belegen. Siehe hierzu im Dokument TechnischerLeitfadenCibDocumentServer.pdf im Abschnitt Installation: "Parallele Installationen".


40. Die folgenden Fehlermeldungen werden im Socketserver-Log ausgegeben:

 
…
Socket: Throwing exception ...
Socket: Exception error number: 125
Socket: Exception message: bind failed, error 125: Address already in use.
…

Diese Fehlermeldung deutet darauf hin, dass der Socketserver versucht wurde auf einem Port zu starten, der bereits durch ein anderes Programm oder einem anderen Prozess belegt ist. Mit dem folgenden Befehl kann bspw. unter Linux ausgegeben werden, welche Ports derzeit genutzt wird:

netstat -nlp | grep "^tcp"

Unter Sun Solaris 10 besteht die folgende Möglichkeit Informationen über die belegten Ports zu erhalten:

lsof | grep [PORTNUMMER]

Unter Windows hilft ebenfalls der „netstat“-Befehl um mehr Informationen zu den genutzten Ports zu bekommen:

netstat

Hinweis

Die Fehlernummer (siehe obiges Beispiel) ist abhängig vom Betriebssystem (hier Sun Solaris 10).


41. Der CIB documentServer verarbeitet keine Aufträge mehr und es kommt zu einem SocketTimeout (Fehler 439 – „de.cib.docserv.ServerManagerException: Response reading timed out“).

Mögliche Ursache

Wird in einem CIB format-Schritt eines Auftrags das OutputFormat „FormatPrinter“ genutzt und ein Drucker angegeben der eine Dialogmaske öffnet, werden die Socketserver blockiert. Werden alle Socketserver auf diese Weise beschäftigt, kann der CIB d0cumentserver keine weiteren Aufträge verarbeiten.

Aus diesem Grund ist darauf zu achten, dass der über die CIB format Property „PrinterName“ angegebene Drucker keine Dialogmaske öffnet. Wird die Property „PrinterName“ nicht gesetzt, sowie das Ausgabeformat „FormatPrinter“ gewählt, muss dieser Umstand auch beim Standarddrucker beachtet werden.

Mögliche Ursache

Ihr CIB merge Dokumentprojekt beinhält eine Endlosschleife.

Reduzieren Sie Ihre Bausteine, um die problematische Schleife zu identifizieren. Verwenden Sie die CIB merge Parameter --maxSingleSize oder/und --maxOutputSize, um die Dateigröße zu begrenzen und einen definierten Fehler zu erhalten.

Sie können auch dem CIB merge Parameter --max-executiontime nutzen, oder die CIB documentServer Konfigurationseinstellung de.cib.docserv.job.MaxJobExecutionTime. Hierfür benötigen Sie CIB socketserver 1.6.1, CIB job 1.6.2 und CIB merge 3.10.3 oder neuer.


42. Es werden von der Weboberfläche des CIB documentServer mehrere Aufträge innerhalb einer kurzen Abfolge an den CIB documentServer gesendet. In den Logeinträgen des Applikationsserver werden allerdings nicht alle versandten Aufträge vermerkt.

Mögliche Ursache

Mehrere Anfragen in kurzer Zeit aus dem Webbrowser werden von diesem möglicherweise zusammengefasst. Aus diesem Grund gelangen nicht alle Aufträge an den Applikationsserver und können dort nicht verarbeitet werden.


43. Was ist der CIB socketserver, welche Art von Prozessen startet CIB documentServer?

Jeder gestartete CIB socketserver öffnet einen TCP-Socket auf einem konfigurierbaren Port und horcht dort als Server. Die JEE Anwendung CIB documentServer kommuniziert mit den Socketservern über diesen Port. Die Prozesse verarbeiten mehrere Aufträge nacheinander. Sie werden nur neu gestartet auf Anforderung, optional zyklisch nach n Aufträgen, oder wenn sie sich unerwartet beendet haben.

Die CIB documentServer Webanwendung enthält eine Aufruf- und Verwaltungskomponente, die eine konfigurierbare Anzahl von Socketserver-Prozessen unterhält, und mit ihnen kommuniziert. Dabei ist automatischer Neustart ebenso implementiert wie eine Warteschlange, Locking, Logging und interne Lastverteilung.

Der verwendete Portbereich aller gestarteten Prozesse ist im CIB documentServer konfigurierbar. Die Defaultkonfiguration verwendet zum Beispiel 50000-50009.

Die Maschine sollte so konfiguriert werden, dass ausschließlich die von GlassFish verwendeten Ports nach außen sichtbar sind. Die Kommunikation mit den Ports 500xx bleibt innerhalb der Maschine. Sie können das mit einer Firewall sicherstellen. Die nativen Prozesse laufen als Kindprozesse der GlassFish-VM, mithin also als selber technischer User. Damit kann der Zugriff auf das Dateisystem gesteuert werden.


44. Wie skalierbar ist der CIB documentServer? Haben Sie dazu einen Architekturvorschlag?

Der CIB documentServer ist hoch skalierbar. Durch die konfigurierbare Anzahl der gleichzeitig gestarteten CIB socketserver-Prozesse (siehe Einstellung de.cib.docserv.MaxProcessCount im Abschnitt Konfiguration) kann die verfügbare Maschinenleistung optimal ausgenutzt werden.

Benötigt man mehr Leistung als eine Maschine bereitstellen kann, kann der CIB documentServer sehr leicht mit den gängigen Clusterverfahren weiter skalieret werden.

Ein Vorschlag ist der Einsatz des CIB documentServers auf zwei Nodes, mit je einem Apache Tomcat Servlet Container. Diesen wird ein Apache Httpserver als Loadbalancer vorgeschaltet. Der Loadbalancer kann mit auf den beiden Nodes laufen, muss dann aber für einen Failover auf beiden Nodes vorhanden sein. Diese Konfiguration wird von vielen unserer Kunden verwendet. Aufgrund der jeweiligen individuellen Betriebsvorgaben, kann CIB dazu nur beratend unterstützen.


45. Reicht meine verfügbare Hardware für 4000 Dokumente pro Tag?

Diese Antwort kann erst gegeben werden, wenn weitere Informationen bereitgestellt werden, zum Beispiel nach der physikalischen und virtuellen Hardware und dem Betriebssystem. Weiterhin benötigen wir Aussagen zur Komplexität und Größe der erzeugten Dokumente (MBytes, Seitenzahl), in Relation zu deren Häufigkeit. Die Angabe Dokumente/Tag kann zu ungenau sein, wenn es Spitzenzeiten gibt, an denen nicht 4000/8 = 500 Dokumente pro Stunde zu verarbeiten sind, sondern mehr. Bitte geben Sie uns Angaben zur Spitzenlast in „Dokumente pro Stunde“, mit den zugehörigen Größenangaben der Dokumente.


46. Reicht meine verfügbare Hardware (160GB RAM, 2 Xeon 5645 6 Core)? Ich möchte zu Spitzenzeiten 1000 Dokumente pro Stunde verarbeiten, mit durchschnittlich 10 Seiten. Es handelt sich um Standardverarbeitung (CIB merge, CIB format/pdf).

Mit dieser Hardware sind etwa bis zu 20000 Seiten pro Stunde bei dieser Art von Aufträgen verarbeitbar.


47. Ist die Heap Size konfigurierbar? Wenn ja, wie?

Die Heapsize der nativen Prozesse kann derzeit nicht begrenzt werden.

Das Einstellen des Heapsize für die CIB documentServer Webanwendung erfolgt beim Aufruf des GlassFish nach Java Standard.


48. Wie viel Heap Size wird benötigt für unser Projekt?

Eine Java VM, in der ausschließlich der Application Server oder Servlet Container mit genau einem CIB documentServer läuft, sollte mit 512 MB auskommen können.

Der benötigte Speicher in den nativen Prozessen hängt von Ihren Dokumenten und Datenmengen (bei Seriendokumenten) ab.


49. Können die nativen Prozesse als eine Art Cluster auf verschiedene Server verteilt werden?

Die Prozesse müssen derzeit auf demselben Server wie die CIB documentServer Webanwendung laufen, da sie von dieser gestartet und neugestartet werden.


50. Kann man die Prozesse auf virtuelle Maschinen auslagern und diese über einen Remote Execution Call von einem anderen Multiprojekt-Appserver aufrufen?

Nein. Es ist eine Komponente erforderlich, die die Prozesse gegebenenfalls neu startet. Diese Komponente ist eben genau der CIB documentServer. Dieses Vorgehen empfehlen wir auch nicht, da nicht nur der Speicher, sondern auch IO eine Beeinflussung der anderen Projekte bewirkt.


51. Was für administrative Schritte sind notwendig im Notfall/Fehlerfall und wie viel technisches Know How ist dafür erforderlich?

Für bereits aufgetretene Fehlersituationen gibt es eine FAQ im CIB documentServer Leitfaden. Für weitergehende Fragen steht der CIB Support zur Verfügung.

Der CIB documentServer läuft in der Regel wartungsfrei. Die technischen Anforderungen an die Bediener sind gering. Beim Neustart des GlassFish werden die Prozesse heruntergefahren, und dann neu gestartet. Die Betriebs-Konfiguration besteht aus einer Properties-Datei. Es gibt eine weitere Konfigurationsdatei (XML), die aus Sicht des Betriebs konstant ist. Logging zur Problemsuche kann in zwei Stufen aus der WebGui des CIB documentServer aktiviert und deaktiviert werden. Die Auswertung der Logdateien wird vom CIB Support vorgenommen.


52. Welche Frameworks werden eingesetzt?

Der CIB documentServer verwendet nur apache-commons und log4j, aber zum Beispiel kein Webanwendungs-Framework wie GWT, Vaadin, ZK, JSF odgl.


53. Wird zukünftig eine Installation auf GlassFish 3.1 möglich sein?

Ja. CIB documentServer 1.5 ist für GlassFish 3.1.1 freigegeben.


54. Welche Modulversionen und Bibliotheksversionen sind in meiner CIB documentServer-Version enthalten?

Sie finden diese Information in der Versionshistorie. Diese ist unter docs/manual (Serverpaket) bzw. docs/api (Clientpaket) enthalten.


55. Wo kann das Problem liegen, wenn ich in meiner Anwendung die Fehlermeldung "Request could not be excecuted. (Input/Output error)" von der verwendeten UrlDocumentServerImpl erhalte?

Mögliche Ursachen

In einem Fall war das Routing fehlerhaft konfiguriert. Zwischen "Dispatcher" und CIB documentServer fehlten die entsprechenden Einstellungen, somit konnte die Aufrufende Anwendung keine Requests absetzen (Exception in de.cib.docserv.UrlDocumentServerImpl.execute).


56. Im Log meines Application Server finde ich die Fehlermeldung de.cib.docserv.DocumentServerException: Error while receiving response code from socketserver. We may even have not sent the request yet.

Mögliche Ursachen

Der zugehörige Auftrag konnte von den CIB docgen Modulen nicht fehlerfrei bearbeitet werden. Stattdessen hat sich der bearbeitende CIB socketserver Prozess unerwartet beendet.

Die Ursache muss durch Identifikation des verursachenden Auftrags/Dokuments festgestellt werden. Sofern das Problem dann reproduzierbar ist, kann die Ursache durch den CIB Support festgestellt werden. In den meisten Fällen sind dann die Tracedateien zur Problemanalyse hilfreich. Bitte aktivieren sie sie dann in der CIB documentServer Web UI. Siehe auch Abschnitt Logging und Fehlersuche.


57. Ich möchte die Performance auf Solaris Sparc verbessern. Kann ich im CIB documentServer etwas ändern?

Unter Umständen kann die Standardeinstellung des Application-Server Loggings auf diesem Betriebssystem zu Laufzeitverlusten führen. Bitte versuchen Sie den Loglevel für den CIB documentServer in der log4j.xml auf Niveau ERROR oder WARN zu reduzieren.

58. Bei lokaler Installation mit tomcat kommt bei localhost:8080 eine Fehlermeldung, die nicht vom tomcat kommt. Woran liegt das?

Vermutlich ist anderer Server installiert und aktiv.

Das kann beispielsweise auch eine CIB workbench mit CIB webdialog sein.

Beenden Sie den anderen Server (im Fall der CIB workbench Microsoft Word) und den tomcat und starten Sie dem tomcat erneut.


59. Kann ich den CIB documentServer mit anderen Applikationen zusammen auf einem Server einsetzen?

Die im CIB documentServer enthaltenen nativen Module erzeugen bei konkreten Aufrufen Prozessor- und Speicherlast, die nicht konfigurierbar begrenzt werden kann und können die Performance parallel verwendeter Applikationen einschränken. Dies gilt insbesondere für die aufrufende Kundenanwendung. Bei der Verwendung des CIB documentServer auf "Multiprojektservern" oder auf einem gemeinsamen Rechner mit der Kundenanwendung ist eine Begrenzung der vom CIB documentServer erzeugten Rechnerlast durch die Festlegung einer niedrigen Anzahl paralleler Socketserver (MaxProcessCount) angeraten.


60. Die folgenden Fehlermeldungen werden im Log ausgegeben

SCHWERWIEGEND: Servlet.service() for servlet CibDocumentServerServlet threw exception
de.cib.docserv.DocumentServerError: Socket server manager start failed: Could not start 
native socket server process. Commandline: 'LD_LIBRARY_PATH=../bin /opt/server/app/tomcat-
webapps/CibDocumentServer/bin/socketserver1 Logpath=/var/log/ 
Config=/opt/server/app/config/jobconfig.xml Idle=3600 Port=50000 Logsuffix=50000'. 
Working directory: /opt/server/app/tomcat-webapps/CibDocumentServer/./work
at de.cib.docserv.ServerManager.start(Unknown Source)
…
Caused by: java.io.IOException: Cannot run program "/opt/server/app/tomcat-webapps/CibDocumentServer/bin/socketserver1" (in directory "/opt/server/app/tomcat-webapps/CibDocumentServer/./work"): java.io.IOException: error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
	at java.lang.Runtime.exec(Runtime.java:593)
	at de.cib.util.Process.execute(Unknown Source)
	... 28 more
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.(UNIXProcess.java:148)
	at java.lang.ProcessImpl.start(ProcessImpl.java:65)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
	... 30 more

Diese Fehlermeldung deutet darauf hin, dass der Socketserver Prozess nicht gestartet werden kann. Um zu prüfen ob das System korrekt konfiguriert wurde, kann auf Kommandozeilenebene der im Log aufgezeichnete Kommandozeilenaufruf manuell ausgeführt werden LD_LIBRARY_PATH=../bin /opt/server/app/tomcat-webapps/CibDocumentServer/bin/socketserver1“.

Liefert dieser keine Fehler, kann mit einer zweiten Konsole der Prozess „socketserver1“ überprüft werden. Liefert der Aufruf einen Fehler, so fehlen vermutlich Bibliotheken im Betriebssystem.

Hinweis

Eine Fehlernummer wird nicht ausgegeben, da die nativen Module des CIB documentServers zum Zeitpunkt des Fehlers noch nicht initialisiert wurden.


61. Der CIB documentServer verarbeitet keine Aufträge.

Mögliche Ursache

Aus Analysen ging hervor, dass Systembibliotheken des Hostsystems für diesen Fehler verantwortlich sind. Unter den meisten Plattformen (Windows, Linux oder Sparc Solaris) sind die notwendigen Bibliotheken schon bei der Installation des Systems vorhanden.


Spezialfall Red Hat Linux 6

Aus der Analyse ging hervor, dass mindestens die folgenden Bibliotheken gegenüber einer älteren Version (Red Hat Linux 5) nicht vorhanden waren:

  • glibc.i686
  • zlib.i686
  • libgcc.i686
  • compat-libstdc++.i686
  • cups-libs.i686

62. Beim Aufruf aus einem C#-Clientprogramm werden keine Daten an den Applikationsserver übertragen. Auch die Logdateien des Applikationsserver zeigen nicht an, dass Daten eingegangen sind.

Auswirkung: In diesem Fall kann ein vom Client versendeter Auftrag vom CIB documentServer nicht verarbeitet werden.

Mögliche Ursache

Möglicherweise kommt es zu diesem Kommunikationsproblem zwischen dem Client und dem Server, weil die „Expect100Continue“-Eigenschaft im C#-Clientprogramm aktiviert ist. In diesem Fall muss die „Expect100Continue“-Eigenschaft der Client-Server Verbindung deaktiviert werden (der Standardwert ist true). Beispiel:

webRequest.ServicePoint.Expect100Continue = false;


63. Beim Senden eines Auftrags an den CIB documentServer hängt die Bearbeitung nach mehreren Sekunden/Minuten und man bekommt keine Antwort. Warum? Wie kann ich es vermeiden?

Solche Situationen können mehrere Ursachen haben:

  • Die nativen Module benötigen einen hohen Speicherverbrauch für die Verabeitung des Auftrags.
  • Andere Anwendungen verursachen, dass der Socketserver hängt (z.B bei der Verarbeitung eines Auftrags durch LibreOffice).

Ab CIB documentServer 1.12.0 kann man solche Situationen vermeiden indem die Property SocketTimeout gesetzt wird. Nachdem die gegebene Zeit überschritten ist, wird eine entsprechende Fehlermeldung geliefert und der betroffene SocketServer automatisch neugestartet. Für die Verwendung von CIB documentServer 1.12.0 mit diesem Feature wird der Einsatz von Java 8 empfohlen.

64. Beim Senden eines Auftrags an den CIB documentServer erhalte ich eine Ausnahme DocumentServerException (Fehler 433 – "Unexpected resource problem. Connection with SocketServer will be restarted")

Die Verarbeitung des Auftrags wurde wegen eines Resourceproblemes unerwartet beendet (z.B maximaler Speicher des Betriebsystems überschritten). Daher wird die Verbindung mit dem Socket neugestartet nachdem der SocketTimeout überschritten wird.


65. Beim Senden eines Auftrags an den CIB documentServer erhalte ich eine Ausnahme ServerManagerException (Fehler 434 – "Forcing request timed out. No response from Socketserver. Connection will be restarted. ")

Der CIB documentServer bekommt keine Antwort vom SocketServer nachdem die Property SocketTimeout überschritten wird. Um eventuelle Probleme beim Socketservers zu vermeiden wird die Verbindung neu gestartet.


66. Die Aufträge können nicht bearbeitet werden und der CIB socketserver liefert folgende Fehlermeldung im Trace:

[CIB socketserver 62001]: 22.10.2019 14:07:07 Loading CIB job shared library (Init) failed: error = 126 
[CIB socketserver 62001]: 22.10.2019 14:07:07 Error: CIB job shared library not available.
 

Die Fehlermeldung kann aufgrund des Versionsprungs der nativen Bibliothek CIB dataaccess Xml (1.7.0) erst ab Version 1.15.7 auftreten.

Die Ursache liegt darin, dass die aktuellen Visual Studio C++ Runtime Bibliotheken nicht auf Ihrem System installiert sind.

Um den Sachverhalt zu lösen, installieren Sie bitte die folgenden, aktuellen Bibliotheken:

Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads