Home
Categories
Dictionary
Download
Project Details
Changes Log
Who We Are
FAQ
License

Server configuration properties



The Server configuration properties allows to specify the configuration of the Server at start. This file is specified through the -config launch argument. The properties are the same as for the Client so the same properties File can be used for both Client and Server in standalone mode.

Configuration properties format

See configuration properties format.

Common configuration properties

The Common configuration properties are configuration properties used by both the server and the client.

Mandatory properties

Note that if the "network" property is not defined, the following properties must also be defined:
  • serverInputPort: The port for the communication Client => Server (used by the Client to set the parameters)
  • serverOutputPort: The port for the communication Server => Client (used by the Server to send events on widgets and error reports)
  • serverInputSize: The size of the port for the communication Client => Server
  • serverOutputSize: The size of the port for the communication Server => Client

Optional properties

  • "env.<key>": set a path value by using the content of an environment variable,that can be used as a replacement pattern in any File or URL values after this definition in the properties file. More than one environment path can be defined in the properties File. For example, if we have env.tutu=TUTU and if we have after this line: graphics=${env.tutu}/graphics.xml. This property definition will be equivalent to: graphics=<content of the TUTU environment variable>/graphics.xml
  • strictA661Schema: specifies if we are using the strict ARINC 661 Schema for the XML Definition Files parsing, as of supplement 6. The default is false. See Strict / Loose ARINC 661 Schema
  • allowExtensions: true if ARINC extensions are allowed in Definition Files
  • respectParentChildren: check if the parent-children relationships specified in the standard (and defined in the meta-definition) are checked when opening or editing Definition Files
  • debug: true to show debug informations on the command line
  • "debugLog": contains the path of a File which will contain the DEBUG and all logger content for the Server or the Client
  • supplement: the supplement version for the ARINC 661 Standard
  • bigEndian: true if communication is in Big Endian format (default = true)
  • warnForUndefAttrs: true if a warning must be issued when parsing XML Definition Files with unfounded defined attributes (default = true)
  • checkFR180Range: specify if the Server should check that angles are in the [-180, 180[ range. If this property is set to true, the Server will set the angle 0 and post an exception if the Definition File has an angle which is outside this range
  • "protocol": the name of the built-in protocol used for communication, which can be:
    • "udp" for UDP protocol (default)
    • "tcp" for TCP/IP protocol
    • or the key of an additional protocol given by the protocol Provider (see Built-in protocols for those which are provided by default)
  • "network": defines a Network XML file defining the channels to open for the UA <=> CDS communication. It allows to define more than one Channel of communication between UA and CDS, each with specific properties
  • "pictures": The XML pictures definition File, used to bind picture names to their associated references
  • "symbols": The XML Global Symbol Table File, used to bind Global Symbols names to their associated references
  • "maximumQueueSize": The maximum size of the events queue received by the Client or the Server. See Event Queue Size
  • server.windows: The XML configuration File for the Windows definition, and the Layers List. If this File is defined, the graphic definition (including the Layers) will be set with the content of this File). Warning: This File will be used only if the windowManager property is set to windows. See also the window Management article
  • "loggerSize": the number of lines for the events logger
  • "logMaximumLines": the maximum number of lines for the logger. If this value is set, the logger will only present the last logMaximumLines lines
  • extensions: The jar file containing the specific extensions to the standard (for widgets and rendering)
  • "compactOutputBuffers": The property name to specify that it is allowed to compact the content of an output Buffer if several blocks are to be sent for several Layers of the same Buffer. This can for example allow to send only one Buffer containing all the A661_NOTE_LAYER_IS_ACTIVE and A661_NOTE_LAYER_IS_INACTIVE for all the Layers managed by a Channel if the cockpit configuration is changed

Strict / Loose ARINC 661 Schema

The ARINC 661 supplement 6 enforce the use of an XML Schema for the XML Definition File.The ARINC 661 supplement 6 enforce the use of an XML Schema for the XML Definition File. Prior to supplement 6, the ARINC 661 standard did only define a DTD, but J661 already used a Schema which was a little more loose the the standard supplement 6 schema. Note that the DTD which was defined before in the standard was even more loose than the "loose" schema.

Differences between the loose schema and the strict schema:
  • The Library version is optional
  • Accept several widgets with the same name. Note that the Server, Client and Editor will however still rename the widgets internally such as not having more than one widget with one specified name
  • Extensions may have no child "model" element, which allows to use extensions which have no parameter at all
  • The rules for elements name are more lenient and accept any character
See also the Definition File article.

Warnings for undefined attributes

All the widgets and extensions attributes are defined in the Binary Definition Files, but some of the attributes might not be defined in the XML Definition File. The warnForUndefAttrs attribute allows to emit a warning if one of the attributes defined for a widget or extension is not found in the XML Definition File.

Setting specific properties for extensions

By default only properties which are defined for the Client or Server are taken into account. However it is possible to define specific properties for J661 extensions. See See extensions manifest properties for more informations on how to define these properties.

Specific server configuration properties

These properties are configuration properties specifically used by the server .

Mandatory properties

Note that if the "network" property is not defined, the following properties must also be defined:
  • serverInputPort: The port for the communication Client => Server (used by the Client to set the parameters)
  • serverOutputPort: The port for the communication Server => Client (used by the Server to send events on widgets and error reports)
  • serverInputSize: The size of the port for the communication Client => Server
  • serverOutputSize: The size of the port for the communication Server => Client

Optional properties

General properties

  • "allowUndefLayers": true if undefined layers are silently skipped in input messages (default = false)
  • "server.uiCombo": true if there is a ComboBox for the UI selection for the Server, else the UI can not be changed at runtime
  • "server.menus": true if the Server has a ToolBar and a MenuBar
  • "server.detailedTimes": show detailed times for the Server during messages processing
  • "logServerArea": true to present in the Server layer window an area logging the events received or sent by the server (false if the property is not present)
  • "server.computeLayerSize": true if the layer dimensions are not defined within the content of the DF File, but computed with dimensions of the children widgets (the default behavior is false)
  • "checkFR180Range": the property name to specify if the Server should check that angles are in the [-180, 180[ range. If this property is set to true:
    • The Editor will get the right angle in the [-180, 180[ range in the Definition File if the user specifies an angle which is outside this range
    • The Server will set the angle 0 and post an exception if the Definition File has an angle which is outside this range
  • "server.autoConnect": The property name to specify if the Server automatically perform a connection to the Client at start (default value is true)
  • "server.waitForValidation": Specifies if the Server should wait for the Client validation before applying state change for stateful interactive widgets
  • "protocol.clientHost": The property name to specify the Client host for the protocol, as seen by the Server. By default all communication will happen on the local host (127.0.0.1). Note that it can be overridden by the "network" configuration
  • "server.debugBuffer": The property name to specify an XML Debug Buffer file which is able to define a list of widgets whose renderer will not be updated. This can be used for debugging to identify the cause of a performance problem. See debug buffer
  • "compactOutputBuffers": The property name to specify that it is allowed to compact the content of an output Buffer if several block are to be sent for several Layers of the same Buffer. This can for example allow to send only one Buffer containing all the A661_NOTE_LAYER_IS_ACTIVE and A661_NOTE_LAYER_IS_INACTIVE for all the Layers managed by a Channel if the cockpit configuration is changed. See compactOutputBuffers property
  • "server.screenDensity": The Screen Density of the Displays in dots per inch. Note that the Screen Density can also be set in the XML Graphics Definition configuration file
  • "server.useFractionalMetrics": The property name to specify if the Server should use fractional metrics for drawing.

Performance properties

  • "threadPriority": value for the Thread priorities. Can be:
    • MAX_PRIORITY
    • MIN_PRIORITY
    • NORM_PRIORITY (default value)
    • an integer value, between MIN_PRIORITY and MAX_PRIORITY
  • "server.evtProcessorQueueSize": The queue size for the Server event processor, which manages events sent from the Server to the UA. See below for more information on this property
  • "server.evtProcessorYield": The time to wait in ms between two sending. This protects against cases where several output messages sent in very short succession are overridden in the User Application reception. This can happen in some protocols, for example UDP. Note that the wait itself will be performed in a background Thread which manage the sending, thus not stealing CPU time to the main Thread of the Server
  • "eventQueue.showSkippedEvents": set to true if a Warning should be printed if events are skipped in the Input Event Queue if its size is > 2
  • "server.layersUpdateCap": The layers update Cap is the minimum time in ms between two Layer updates, regardless of the Layer. If this value is greater than 0, updates will be merged for all Layers until the update cap has been reached. The default value is -1, meaning that there is not update cap at all for Layer updates.
    The usage of this property is to avoid to make too much rendering calls if a lot of Layers update are send to the Server. It helps to reduce the rate of trashed buffers if the UA sends too much Buffers. For example, if this value is equal to 40, it will mean that at most Layers will be updated at a period of 40 ms. In that case, if the UA sends Buffers each 2 ms, the Server will decode each Buffer when received, but will update Buffers only each 40 ms
  • "server.projectionUpdateCap" and "server.optimizeMapUpdates" properties: see Maps properties
  • "server.methodHandles": True if the field access for setting and getting attribute values for widgets and extensions are using Java method handles. Usable since Java 7, MethodHandles have normally a much better performance than core reflection, because access checks are only performed at creation of the handle

Graphic properties

  • "server.antialiasing": The property name to specify if the Server graphics are anti-aliased.(default value is true)
  • "server.layerSizeDensity": The property setting if the Layer size is specified in XML Definition Files as Pixels rather than 100th of millimeters. This property is always with a float value, and will only be considered if an Extension has set the Layer size in pixels. See J661 extension manifest properties
  • "server.antialiasedLabels": The boolean property for anti-aliasing labels in the Server (for the moment only used in the JavaFX UI framework). This property is useful in Layers where Labels are moving very fast like in HUD displays for example. By default JavaFX only uses gray-scale rendering for fonts greater than 80 px. This is to force the gray-scale rendering to be applied for Fonts smaller than 80 px. Note that we need to perform a kind of hack by fiddling with the scale because the following CSS code to force gray-scale does not seem to work:
                .text {
                -fx-font-smoothing-type: gray;
                }
    
  • "server.maskBugUnfixed": Definition Files created before J661 1.6-Beta 7 had a bug in the A661_MASK_CONTAINER implementation whereas the position of the Mask did not move the mask but the children widgets. This boolean flag was introduced for allowing Definition Files created before the A661_MASK_CONTAINER bug to work as before the correction. It defaults to false, therefore users who want the old behavior must set it explicitly to true. This property will be removed in the future.
    • Without the flag set (default): the PosX and PosY attributes do not change the position of the children of the A661_MASK_CONTAINER widget but the position of the Mask itself
    • With the flag set: the PosX and PosY attributes do not change the position of the Mask but the position of the children of the A661_MASK_CONTAINER widget

Activation properties

  • "server.autoVisible: true if the Layers loaded by the Server should be visible BEFORE any command set by the client (the behavior defined in the standard is serverAutoVisible = false)
  • "server.autoValidation: behavior of the Server regarding change state events:
    • "always: the Server always apply all widget state changes after a user event
    • "never": the Server never apply any widget state changes after a user event
    • "default: the Server only apply widget state changes after a user event depending on the definition of the widget
  • "server.autoActivated": The property name to specify if the Server Layers are automatically activated at start. (default value is true)
  • "server.cyclicActivation": The property name to specify how the cyclic activation is working (default value is false). Note that the exact behavior of the Server notification is implementation dependent. See layers cyclic activation
  • "server.bothVisibleActiveBehavior": The property name to specify the Server behavior if receiving both the A661_REQ_LAYER_ACTIVE and A661_REQ_LAYER_VISIBLE} in the same Buffer (default value is accept).
    • accept: the Server accept receiving both the A661_REQ_LAYER_ACTIVE and A661_REQ_LAYER_VISIBLE in the same Buffer
    • forget: the Server forget the visibility request if receiving both the A661_REQ_LAYER_ACTIVE and A661_REQ_LAYER_VISIBLE in the same Buffer
    • error: the Server send a A661_ERR_UA_REQUEST_ABORTED exception if receiving have both the A661_REQ_LAYER_ACTIVE and A661_REQ_LAYER_VISIBLE in the same Buffer

Windowing properties

  • "windowManager": the name of the WindowManager to use for the Server. Available values are:
    Note: the "server.windows" property allows to define the windowing configuration.
    • basic: each Layer will be presented on a specific tab in a tabbed panel (default value)
    • windows: SuperLayer Window manager using the server.windows parameter for its Window Configuration
    • Any other value: A window manager key that can be set by any plugin. Plugins which want to define a specific window manager must do it by registering a new String value by: WindowManagerFactory.getInstance().addManagerDefinition(<window manager key>, nativeManagerClazz)
  • "server.superLayer": true if the SuperLayer Definition is handled as of ARINC Supplement 4.
    Warning: This File will be used only if the windowManager property is set to windows
  • "server.uniqueDisplay": this integer value allows to define one unique windows configuration file (see "server.windows" common property) for several Servers (i.e. on several PCs for example), but instantiate only one display for each Server. The property value is the ID of the Display as defined in the Windows XML configuration File.
    Warning: This property will be used only if the windowManager property is set to windows
  • "server.cursor": The path for the cursor png, gif or jpeg file containg the cursor image, if we do not want to use the default cursor. It is possible to define no file at all, in that case no cursor will be visible at all
  • "server.background": the background Color of the Windows in the format red,green,blue
  • "server.zoomfactor": A zoom Factor to be used for the Server Display. It can only set one value, (as for example 0.7), and in that case the factor is applied on both the X and Y axis, or it can set two values (as for example 0.7;0.5), and in that case a different factor is applied on the X and Y axis)
  • "server.connectors": The property name to specify the XML file defining the Layer ID / Appli IDs corresponding with the connector references in the Definition Files. See Connectors reference configuration
  • "windowManager.activationBehavior": The property name to specify the Server behavior for the Layer activation and inactivation notifications when the Cockpit Layout changes. See windowManager activationBehavior

Maps properties

  • "mapUI": The XML configuration file which configure the MapItems Look And Feel
  • "server.allowUndefMapItems": The property name to specify if the Server silently allow undefined MapItems sent by the Client. (default value is false)
  • "server.projectionUpdateCap": The projection update Cap is the minimum time between two projection characteristics changes in Maps. The default is 160 ms, and 0 means that there is no cap at all. See J661 Maps management
  • "server.optimizeMapUpdates": The boolean property setting if the updating of MapItems is optimized. Turning this feature on will discard MapItems which have not changed in the MapItems Buffer[1]
    This property allows to reduce the number of MapItems effectively updated in the Server
    . The default value is false

External source providers property

Layers cyclic activation

The "server.autoActivated propertyallows to specify how the cyclic activation is working (default value is false). Note that the exact behavior of the Server notification is implementation dependent. The behaviors supported by the J661 Server are:
  • false (default value): do not send any A661_NOTE_CYCLIC_ACTIVATION notification
  • onProcessed: send a A661_NOTE_CYCLIC_ACTIVATION notification after the processing of a Layer Block received from the Client
  • onCycle=<period>: send cyclically a A661_NOTE_CYCLIC_ACTIVATION notification every period ms. The first notification will be sent after period after the connection
  • onCycle=<delay-period>: send cyclically a A661_NOTE_CYCLIC_ACTIVATION notification every period ms. The first notification will be sent after delay after the connection

The two onProcessed and onCycle notifications types can both be supported by using the following syntax: onProcessed;onCycle:<value>. The first boolean sent after the notification ID will be set to:
  • true after processing a Layer Block received from the Client
  • false for the cyclic activation every value ms

Examples

OnProcessed

      server.cyclicActivation=onProcessed
Will send a A661_NOTE_CYCLIC_ACTIVATION notification for all Layers of a Buffer after the Buffer is processed. Note that no notification will be sent if the Buffer is discarded (usually because the Server did not have time to process it). Each notification comes with a boolean value set to true.

OnCycle

      server.cyclicActivation=onCycle:1000
Will send a A661_NOTE_CYCLIC_ACTIVATION notification for all active Layers each second. Each notification comes with a boolean value set to false. The first notification will be sent 1 second after the connection.
      server.cyclicActivation=onCycle:10000-1000
Will send a A661_NOTE_CYCLIC_ACTIVATION notification for all active Layers each second. Each notification comes with a boolean value set to false. The first notification will be sent 10 seconds after the connection.

Mixed usage

      server.cyclicActivation=onProcessed;onCycle:1000
Will send a A661_NOTE_CYCLIC_ACTIVATION notification:
  • For all Layers of a Buffer after the Buffer is processed. Each notification comes with a boolean value set to true
  • For all active Layers each second. Each notification comes with a boolean value set to false

Debug buffer

The property name to specify an XML Debug Buffer file which is able to define a list of widgets whose renderer will not be updated. This can be used for debugging to identify the cause of a performance problem.

Example

   <debugBuffer>
      <layer appliID="1" layerID="10" setInactive="true" />
      <layer appliID="1" layerID="12" >
         <widget widgetID="51" />
         <widget widgetID="234" recurse="true" />
     </layer>
   </debugBuffer>
This debugBuffer XML file defines that:
  • None of the renderer for the widgets in the Layer for appliID 1 and layerID 10 will be updated
  • For the Layer for appliID 1 and layerID 10:
    • The renderer of the widget 51 will not be updated
    • All renderer of widget 234 and all its direct and indirect children will not be updated

WindowManager activationBehavior

The property "windowManager activationBehavior" specifies the Server behavior for the Layer activation and inactivation notifications when the Cockpit Layout changes.
  • default: the default value for layer activations and deactivations in Cockpits after a Layout reconfiguration. The behavior will depend on the Window Manager. Means the default behavior for the Window Manager
  • silent: the value specifying that the Server should not send any A661_NOTE_LAYER_IS_ACTIVE, A661_NOTE_LAYER_IS_INACTIVE, or A661_NOTE_REINIT_LAYER_DATA notifications after a Layout reconfiguration
  • basic: the value specifying that the Server should send A661_NOTE_LAYER_IS_ACTIVE, A661_NOTE_LAYER_IS_INACTIVE, or A661_NOTE_REINIT_LAYER_DATA notifications after a Layout reconfiguration.
    • Each notification for each Layer should be sent in a separated ARINC Buffer
  • shrink: the value specifying that the Server should send A661_NOTE_LAYER_IS_ACTIVE, A661_NOTE_LAYER_IS_INACTIVE, or A661_NOTE_REINIT_LAYER_DATA notifications after a Layout reconfiguration.
    • All A661_NOTE_LAYER_IS_ACTIVE and A661_NOTE_LAYER_IS_INACTIVE notifications for all Layers should be sent in one ARINC Buffer
    • All A661_NOTE_REINIT_LAYER_DATA notifications for all Layers should be sent in another ARINC Buffer

Server Event processor configuration

The "server.evtProcessorQueueSize" property is the maximum size of the Queue of events sent to the User Applications. The default value is 5 (which means that at maximum 5 events will be stored before they are sent for the associated Channel). Note that:
  • If another event has to be sent, but the size of the Queue has already been reached, the newest event will be silently discarded
  • The queue will ensure that the events are sent in the order they are posted
The associated "server.evtProcessorYield" property specifies the time to wait in ms between two sending. This protects against cases where several output messages sent in very short succession are overridden in the User Application reception. This can happen in some protocols, for example UDP. Note that the wait itself will be performed in a background Thread which manage the sending, thus not stealing CPU time to the main Thread of the Server.

CompactOutputBuffers property

The "compactOutputBuffers" property name specifies that it is allowed to compact the content of an output Buffer if several block are to be sent for several Layers of the same Buffer. This can for example allow to send only one Buffer containing all the A661_NOTE_LAYER_IS_ACTIVE and A661_NOTE_LAYER_IS_INACTIVE for all the Layers managed by a Channel if the cockpit configuration is changed.

This property is very important if a cockpit configuration contains a lot of Layers, because cockpit configuration updates can involve sending a lot of activations and deactivations. It avoids to fill the "server.evtProcessorQueueSize" with too many events in that case[2]
It would lead to problems, because filling entirely the event processor queue would mean discarding some layers activations or inactivations to be sent to the UA, which would ultimately lead to an incorrect cockpit configuration between the Server and the UA

Server Container Swing Offset behavior

By default, containers children in Swing are clipped in the size of their parent, which would cause a problem for unsized containers as A661_BASIC_CONTAINER. The J661 Server Swing implementation uses a trick to be able to draw children widgets inside container parents without clipping the children in the limits of the parent size. This behavior can only be performed by setting the value of a JComponent private flag, which is not possible in secured environments like Applets.

Applets use another way to paint containers, by setting the size of unsized container widgets to the size of their parent, and offset the position of all the containers children. This is usable in Applets.

Note That this does not correspond to a Server flag, because it is never necessary to perform the Offset behavior except in Applets. However, it is still possible to set it directly in the Editor.

Showing a Server console Window

The following configuration properties will show a Server console Window allowing to:
      logServerArea=true
      server.menus=true
      server.uiCombo=true
      logMaximumLines=10

Examples

Basic properties-based configuration

      graphics=DefGraphics.xml
      pictures=DefPictures.xml
      ui=LookAndFeel.xml
      lf=JavaFX
      supplement=6
      serverInputPort=8080
      serverOutputPort=8081
      serverInputSize=50000
      serverOutputSize=200
      server.autoVisible=true
      logServerArea=true
      server.menus=true
      server.uiCombo=true
      logMaximumLines=10

The same configuration using the XML format

      <properties>
         <property key="graphics" value="DefGraphics.xml" />
         <property key="pictures" value="DefPictures.xml" />
         <property key="lf" value="JavaFX" />
         <property key="supplement" value="6" />
         <property key="serverInputPort" value="8080" />
         <property key="serverOutputPort" value="8081" />
         <property key="serverInputSize" value="50000" />
         <property key="serverOutputSize" value="200" />
         <property key="server.autoVisible" value="true" />
         <property key="logServerArea" value="true" />
         <property key="server.menus" value="true" />
         <property key="server.uiCombo" value="true" />
         <property key="logMaximumLines" value="10" />
      </properties>

Notes

  1. ^ This property allows to reduce the number of MapItems effectively updated in the Server
  2. ^ It would lead to problems, because filling entirely the event processor queue would mean discarding some layers activations or inactivations to be sent to the UA, which would ultimately lead to an incorrect cockpit configuration between the Server and the UA

See also


Categories: conf | dev | server | user

Copyright 2016-2017 Dassault Aviation. All Rights Reserved. Documentation and source under the LGPL v2 licence