Konfiguration der Skriptengine
Die V8-Skriptengine wird über zwei Konfigurationsdateien, die im Serververzeichnis liegen, parametrisiert:
oxv8.cfg
oxv8.v8-options.cfg
Diese Dateien werden mit einer von OPTIMAL SYSTEMS vorgesehenen Standard-Parametrisierung ausgeliefert. Von diesem Standard darf nur nach Rücksprache mit dem Support von OPTIMAL SYSTEMS abgewichen werden. Werden diese Dateien aus Versehen gelöscht, werden beim nächsten Serverstart neue Standard-Dateien erzeugt. Diese Dateien werden bei jedem Serverstart ausgelesen und steuern die Funktionsweise der JavaScript Engine in enaio® server.
oxv8.cfg
Diese Datei steuert die wichtigsten Parameter für die ordnungsgemäße Funktion der Skriptengine in enaio® server. Zahlreiche weitere Parameter, mit denen die V8-Skriptengine parametrisiert werden kann, unserer Ansicht nach aber nicht relevant sind, können in der oxv8.v8-options.cfg
gesteuert werden. Für diese Parameter gibt es enaio®-seitig keine spezielle Konfiguration. Die folgende Übersicht zeigt den Standard-Zustand der Datei oxv8.cfg
:
oxv8.cfg
[Params]
AutoPrintTypeInfo = 0
PrintVariantOnInvokeException = 1
TypeEnumerable = 0
PropputrefUsage = 2
BindRawGet = 1
BindRawPut = 1
PrependUseStrict = 1
PrependUseStrictLineOffset = 1
Conversion_VT_I8_to_JS = 0
UseProxy = 1
ProxyAllowedNames = toJSON;
ReadMetadataAlways = 1
[v8]
LogPromiseHook = 0
LogPromiseReject = 0
LogUseCounterFeature = 0
LogMessage = 0
LogV8Log = 0
LogGC = 0
LogMicrotasksCompleted = 0
LogBeforeCallEntered = 0
LogCallCompleted = 0
ThreadPoolSize = 1
[inspector]
// for future use
LogXXX
– Der jeweilige Parameter bestimmt, ob spezifizierte v8-Ereignisse explizit im enaio-Log protokolliert werdenAutoPrintTypeInfo
– bestimmt, ob bei allen aufgetretenen COM-Klassen die ermittelteTypeInfo
imcomtypes
-Verzeichnis ausgegeben wirdPrintVariantOnInvokeException
– bestimmt in welchen Format eine Fehlermeldung bei COM-Fehlern ausgegeben wirdTypeEnumerable
– bestimmt, ob die Property$type
bei COM-Objektenenumerable
ist (z. B. beiJSON.stringify
etc. erscheint)PropputrefUsage
– bestimmt, wie und wannpropputref
verwendet wird, siehe Artikel rc.comBindRawGet
– bestimmt, ob die Methodeget_X
bei Vorhandensein der PropertyX
auch vorhanden sein sollBindRawPut
– bestimmt, ob die Methodeput_X
bei Vorhandensein der PropertyX
auch vorhanden sein sollPrependUseStrict
– bestimmt, ob bei jedem Skript vorne eine Zeile'use strict'
automatisch hinzugefügt wird (sofern nicht bereits vorhanden)PrependUseStrictLineOffset
– relevant nur beiPrependUseStrict
= 1 und wenn die Zeile 'use strict'
hinzugefügt wurdeFalls 1: die Nummerierung von Zeilen beginnt (intern) nicht bei 0, sondern -1. Damit werden die Zeilennummern in Exceptions korrekt. Allerdings wird dadurch die Zeilennummerierung für den Debugger ungünstig. CDT wird das Skript als "geändert" markieren.
Falls 0: die Nummerierung von Zeilen beginnt (intern) bei 0. Das passt für den Debugger zufrieden, aber die Zeilennummern in Exceptions sind um 1 verschoben.
Conversion_VT_I8_to_JS
– bestimmt, wieVARIANT
vom TypVT_I8
nach JS-Variable konvertiert wird, siehe Artikel Behandlung spezieller COM-Typen in JavaScriptUseProxy
,ProxyAllowedNames
– siehe Artikel Schreibweise von COM-ObjektenReadMetadataAlways
– bestimmt, oboxv8.metadata.cfg
nur einmalig gelesen wird (0) oder bei jedem Skriptstart (1)ThreadPoolSize
– bestimmt, wie viele Arbeitsthreads in der Skriptengine verwendet werden sollen (z. B. für GC)
Die Sektion [inspector]
ist eingehend im Kapitel Debuggen von JavaScript beschrieben.
oxv8.v8-options.cfg
Die v8-Skriptengine hat zahlreiche weitere Parameter zum Steuern der Skriptausführung. Die Defaultwerte sind in der Regel in Ordnung und es sollte nur im Einzelfall und nach Rücksprache mit dem Support von OPTIMAL SYSTEMS von diesen abgewichen werden. Wenn nötig, kann man diese Optionen in oxv8.v8-options.cfg
konfigurieren (die exakte Schreibweise ist der v8-Doku zu entnehmen, beginnend mit zweifachem Minus, z. B. --use_strict
). Die Optionen werden beim Start der Anwendung an v8 übergeben.
Die folgende Übersicht zeigt den Standard-Zustand der Datei:
oxv8.v8-options.cfg
--stack-size=500
--
Text after "--" line will be ignored.
Create needed options before "--" line, one option per line.
For possible options s. https://chromium.googlesource.com/v8/v8/+/refs/heads/main/src/flags/flag-definitions.h
or use "node --v8-options"
stack-size set to 500 due to problems with stack overflow and stringify/recursive calls