Konfiguration
Server-Konfiguration
Der Server kann über
die ServerConfiguration
konfiguriert werden.
Zugriff darauf erhält man über
ConfigurationManager
.getServerConfiguration(). Mittels
setServerConfiguration(ServerConfiguration serverConfiguration) kann
eine eigene ServerConfiguration gesetzt werden, sofern ein eigenes
Konfigurationsframework eingebunden werden soll. In der Regel ist dies
aber nicht notwendig, da die Einstellungen auch direkt auf der
bestehenden ServerConfiguration
geändert werden können. Standardmäßig
wird
eine DefaultServerConfiguration
zurückgegeben.
-
Über
ConfigurationManager.getServerConfiguration().getNetworkConfiguration()können Details zur NetworkConfiguration eingestellt werden. Die verschiedenen Konfigurationsparameter sind unter Serverseitig nachzulesen. -
HTTP Session: Das jadice web toolkit verwendet keine HTTP-Sessions. Es kann jedoch konfigurativ eingestellt werden, dass das jadice web toolkit dennoch eine HTTP-Session (inkl. Cookie
JSESSIONID) erzeugt. Dies geschieht überConfigurationManager.getServerConfiguration().getNetworkConfiguration().setAlwaysCreateHttpSession(true); -
Tile Security: Per Definition sind Tiles (gerenderte Kacheln) nicht "geschützt". Die URL einer Tile kann von einem anderen Client ausgeführt werden und der zweite Client erhält ebenfalls die Kachel angezeigt, sofern Sie nicht in Ihrer Integration einen eigenen Security-Filter einbauen. Es ist jedoch möglich, in Kombination mit einer HTTP-Session (s.o.) die Tile-Requests an eine HTTP-Session zu binden. Ein Tile kann dann nur von dem Client abgerufen werden, die das Tile initial erzeugt hat. Dies geschieht über
ConfigurationManager.getServerConfiguration().setTileSecurityFilterEnabled(true);Bei manchen Konfigurationen kann es zudem erforderlich sein, in diesem Fall dieapplication.ymlebenfalls anzupassen:server:
servlet:
session:
cookie:
same-site: none
secure: true -
Tile Caching: Über die Methoden
setTileCachingEnabled(boolean tileCachingEnabled)/isTileCachingEnabled()wird definiert, ob die auf dem Server gerenderten Kacheln dort gecached werden sollen. In der DefaultServerConfiguration ist dieser Wert standardmäßig auffalsegesetzt. -
Kompressionslevel des Tile Renderings bei Http-Requests: Über die Methoden
setTileCompressionType(TileCompressionType tileCompressionType)/getTileCompressionType()wird definiert, wie der erzeugte PNG- oder WebP-Datenstrom beim TileRendering in den OutputStream für den Client geschrieben werden soll. Hierbei wird unterschieden zwischen ImageIO ("Best Compression", Default bis jadice 5.11.0.0), PNGJ in den Ausprägungen "Best Compression" und "Best Speed" und WebP in den Ausprägungen "Lossy" (Default) und "Lossless". Wenn WebP verwendet wird, prüft der Server bei einem Tile-Request, ob der Client WebP anzeigen kann. Ist das nicht der Fall, wird automatisch PNG über ImagIO (höchste Kompatibilität) zurückgeliefert. Die Werte sind über die Enum ServerConfiguration.TileCompressionType definiert. -
Eine Einstellung, die vom Integrator an der Server-Konfiguration vorbei vorgenommen werden kann, ist die
ScreenResolution. Diese wird über die MethodeGraphicsEnvironment.setUserDefinedScreenResolution(int resolution)direkt auf demGraphicsEnvironmentder jadice document platform vorgenommen. Der aktuell eingestellte Wert kann also serverseitig zu jeder Zeit wie beschrieben gesetzt und überGraphicsEnvironment.getScreenResolution()abgefragt werden. Hintergrund dieser Konfiguration ist, dass an einigen Stellen in der jadice document platform die Auflösung über dasGraphicEnvironmentund nicht über die BaseRenderSettings) abgefragt wird. Auf dem lokalen Rechner gibt dies die Auflösung des Rechners (bei Windows in der Regel 96) zurück. Auf Servern wird in der Regel aufgrund einer HeadlessException jedoch der Wert 72 verwendet. Um dieses Verhalten zu vereinheitlichen, wird der Wert im jadice web toolkit auf 96 voreingestellt (davon ausgehend, dass die meisten Clients Windows PCs mit genau dieser Auflösung sind). -
Thread Pools: jadice web toolkit verwendet im Wesentlichen zwei Thread Pools für Aufgaben wie beispielsweise das asynchrone Rendern von Tiles. Die Größe der Thread Pools richtet sich nach der Anzahl der CPUs im System. Um die Größe der Pools anzupassen, stehen über die ServerConfiguration die Methoden
setGeneralPoolCoreSize()/setGeneralPoolMaxSize()undsetTileRendererPoolCoreSize()/setTileRendererPoolMaxSize()bereit. Achtung: Eine falsche Konfiguration dieser Werte kann negative Auswirkungen auf das Gesamtsystem haben. Weiterführende Informationen finden Sie in dem Knowledge-Base-Artikel Thread Pools and Concurrency. -
Filter: Die Filter
NoCacheFilter,CacheFilterundTileCacheFilter(siehe hier) können über die MethodensetCacheFilterEnabled(),setNoCacheFilterEnabled()undsetTileCacheFilterEnabled()aktiviert bzw. deaktiviert werden.
Client-Konfiguration
Analog zum Server wird der Client über
die ClientConfiguration
konfiguriert. Auf die ClientConfiguration kann über
ClientConfigurationManager
.getClientConfiguration() zugegriffen
werden. Über die Methode
ClientConfigurationManager.setClientConfiguration(ClientConfiguration clientConfiguration) kann eine eigene Implementierung
einer ClientConfiguration gesetzt werden. Dies ist aber in der Regel
nicht notwendig, da die Einstellungen auch direkt auf der bestehenden
ClientConfiguration
geändert werden können. Standardmäßig wird eine
DefaultClientConfiguration
zurückgegeben.
-
Clientseitige Verwendung von IconFonts:
setIsIconFontUsed(boolean). Siehe hierzu Eigene Icons in Buttons -
Anzahl der parallelen Renderanfragen: Bei der Kachelübertragung muss die Anzahl der parallelen Serverrequests begrenzt werden, ansonsten könnte ein einziger Client den Server mit Anfragen überlasten. In der DefaultClientConfiguration wird die Anzahl der parallelen Tileanfragen auf 6 begrenzt. Dieser Wert kann über die Methode
setMaxParallelTileRequests(int maxRequestCount)angepasst werden. -
Darstellungsqualität: Der Viewer verwendet standardmäßig das vom Browser gelieferte Device-Pixel-Ratio, um die Auflösung zu bestimmen, in der Dokumentseiten als Kacheln (Tiles) gerendert werden. Konfigurativ kann der automatisch erkannte Wert durch ein festes Verhältnis ersetzt werden, sodass alle nachfolgenden Render-Anfragen unabhängig von der tatsächlichen Display-Dichte den angegebenen Skalierungsfaktor verwenden. Dies ist in folgenden Szenarien nützlich:
- Erzwingen einer hochauflösenden Darstellung auf Standard-Displays (z. B. für druckqualitätsnahe Vorschauen)
- Reduzierung der Render-Auflösung auf HiDPI-Bildschirmen zur Verbesserung der Performance oder Verringerung der Bandbreite
- Sicherstellen konsistenter Darstellung über verschiedene Client-Umgebungen hinweg (z. B. in Tests)
Ein Wert von
1entspricht der Standardauflösung (ein gerenderter Pixel pro CSS-Pixel), während2die gerenderten Abmessungen in jede Richtung verdoppelt und damit einem typischen HiDPI-/Retina-Display entspricht. Da dies bei hochauflösenden Bildschirmen zu lange Wartezeiten führen kann (da die Kacheln je nach Display dann 2 - 3 mal so groß gerendert werden müssen, wie sie angezeigt werden), kann über die ClientConfiguration eine fester Wert angegeben werden. Somit kann ein Kompromiss aus Renderzeit und Kachelschärfe erreicht werden. Per Default ist dasfixedDevicePixelRatioauf0. Somit wird das Device-Pixel-Ratio automatisch erkannt. Der Wert kann übersetFixedDevicePixelRatio(double fixedDevicePixelRatio)gesetzt werden. -
Soll der minimale bzw. maximale Zoomfaktor begrenzt werden, so geht dies über die Methoden
setMinZoomFactor(float minZoom)bzw.setMaxZoomFactor(float maxZoom). Zum Abfragen der Werte werden die MethodengetMinZoomFactor()bzw.getMaxZoomFactor()bereitgestellt. Standardmäßig werden keine Zoombegrenzungen gesetzt. -
Fokusverhalten des Browsers beim Annotations-Texteditor: Über
setFocusTextEditor(boolean)kann das Fokusverhalten des Browsers in Bezug auf den Text Editor von textbasierten Annotationen gesteuert werden. Beitruewird das scrollverhalten des Browsers beim Fokussieren auf die eigenen Scrollbalken übernommen. Beifalsewird das Scrollverhalten des Browsers ignoriert und zurückgesetzt. Für Internet Explorer musstrueverwendet werden.