/
Konfiguration der Skriptengine

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 werden

  • AutoPrintTypeInfo – bestimmt, ob bei allen aufgetretenen COM-Klassen die ermittelte TypeInfo im comtypes-Verzeichnis ausgegeben wird

  • PrintVariantOnInvokeException – bestimmt in welchen Format eine Fehlermeldung bei COM-Fehlern ausgegeben wird

  • TypeEnumerable – bestimmt, ob die Property $type bei COM-Objekten enumerable ist (z. B. bei JSON.stringify etc. erscheint)

  • PropputrefUsage – bestimmt, wie und wann propputref verwendet wird, siehe Artikel rc.com

  • BindRawGet – bestimmt, ob die Methode get_X bei Vorhandensein der Property X auch vorhanden sein soll

  • BindRawPut – bestimmt, ob die Methode put_X bei Vorhandensein der Property X auch vorhanden sein soll

  • PrependUseStrict – bestimmt, ob bei jedem Skript vorne eine Zeile 'use strict' automatisch hinzugefügt wird (sofern nicht bereits vorhanden)

  • PrependUseStrictLineOffset – relevant nur bei PrependUseStrict = 1 und wenn die Zeile 'use strict' hinzugefügt wurde

    • Falls 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, wie VARIANT vom Typ VT_I8 nach JS-Variable konvertiert wird, siehe Artikel Behandlung spezieller COM-Typen in JavaScript

  • UseProxyProxyAllowedNames – siehe Artikel Schreibweise von COM-Objekten

  • ReadMetadataAlways – bestimmt, ob oxv8.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

 

 

Related content