Hinweise zur Migration auf jadice web toolkit 5.11

Wichtiger Hinweis

Diese Anleitung gilt für jadice web toolkit Version 5.11.0.0 vom 09.03.2022.

Die Hinweise gelten für die Migration von jadice web toolkit 5.10 auf 5.11.

Eine Übersicht der Versionen des jadice web toolkit finden Sie hier.

Inhalt

Neue Funktionen und Features

Spring Boot

Das jadice web toolkit setzt intern nun auf Spring Boot. Dies ist der empfohlene Weg, für die Entwicklung einer Integration des jadice web toolkit. 

Im Referenzhandbuch sind die Schritte beschrieben, um eine bestehende Anwendung auf Spring Boot umzubauen.

Das JavaEE Modul ist ersatzlos entfallen. Wenn Sie JavaEE anstatt Spring Boot verwenden möchten, finden Sie Informationen hierzu ebenfalls im Referenzhandbuch.

Ein klassisches WAR-/EAR-Deployment ist weiterhin möglich. Informationen hierzu finden sich in der Spring Boot Dokumentation.

(Warnung) Spring Framework 5.0 (03/2018) benötigt Servlet 3.1+. Das jadice web toolkit setzt dies seit Version 5.6.0.0 ebenfalls voraus, jedoch war es technisch dennoch möglich, das jadice web toolkit mit einem Servlet 3.0 Container zu betreiben (Websphere 8.5). Spring Boot 2.5.x nutzt nun aktiv Klassen aus Servlet API 3.1+, wodurch sich das jadice web toolkit nicht mehr auf Websphere 8.5 und anderen Containern mit Servlet 3.0 betreiben lässt. Da die konkret verwendete Spring Boot Version vom Integrator zu setzen ist, besteht theoretisch die Möglichkeit, das jadice web toolkit mit Spring Boot 2.4.x zu verwenden, was technisch ein Deployment auf Websphere 8.5 möglich macht. Dies wird jedoch ausdrücklich nicht empfohlen.


Das jadice web toolkit verwendet intern Spring Framework und Spring Boot. Es ist dennoch möglich, ein WAR-File zu erstellen, welches auf einem App-Server deployt werden kann. Informationen hierzu sind im Referenzhandbuch zu finden.


Caching

Das Tile-Caching ist nun standardmäßig deaktiviert. Zudem wird der Cache nun mit einer initialen Größe von 90.000 anstatt 3.000 initialisiert. Das JMX-Monitoring des CompositeKeyCaches wird nun auch initial aktiviert, dies musste vorher z.B. über JMX manuell geschehen.

Wenn das Spring Boot Caching verwendet wird, nutzt Spring Boot einen eigenen In-Memory Cache, der unabhängig von den jadice Caches vorhanden ist und gewissermaßen mit den jadice Caches konkurriert. Für die bessere Handhabung der Caches existieren daher zwei Module im jadice web toolkit:

webtoolkit-extension-jsr107

Diese Erweiterung enthält die Klasse com.jadice.web.ext.jsr107.JSR107CacheAdapter, welche einen JCache-kompatiblen Cache (JSR-107) entgegennimmt und dann an den jadice Cache-Manager übergeben werden kann. Somit können JSR-107 kompatible Caches anstatt der jadice Caches verwendet werden.

(Warnung) In diesem Szenario gibt es gewisse Einschränkungen, die es zu beachten gilt, beispielsweise kann kein Off-Heap- oder Festplatten-Cache für jadice Documents und PageSegmente verwendet werden, da sich diese nicht ohne weiteres serialisieren lassen. Weitere Informationen hierzu finden sich im Referenzhandbuch im Kapitel "Caching".

webtoolkit-extension-jadice-jcache

Wenn diese Erweiterung im Klassenpfad liegt, wird der jadice Cache-Manager als Cache-Provider registriert und die jadice Caches können als JCaches verwendet werden. Wird Spring Boot zusammen mit spring-boot-starter-cache verwendet, nutzt Spring Boot fortan jadice Caches, beispielsweise für mit @Cacheable annotierte Methodenaufrufe.


Java 11 Dependencies

Seit Version 5.9 des jadice web toolkit wird der Betrieb unter Java 11 unterstützt.


Metriken

Im Vergleich zu 5.10 hat sich die Art und Weise, wie Metriken erzeugt werden, geändert. Außerdem wurden die Bezeichner leicht geändert, z.B. wurde aus "jwt.readDocument" ein "jwt.read.document". Die neue Art und Weise wird in https://webtoolkit.jadice.com/doc/docs/en/reference/monitoring/ beschrieben.


API-Änderungen und Umbenennungen von Klassen und Packages

altneuAnmerkungsiehe JIRA-Ticket
com.levigo.jadice.web.shared.model.annotation.internal.AnnotationChangeHandler
com.levigo.jadice.web.shared.model.annotation.internal.AnnotationPageSegment
com.levigo.jadice.web.shared.model.annotation.internal.Annotation
com.levigo.jadice.web.shared.model.annotation.AnnotationChangeHandler
com.levigo.jadice.web.shared.model.annotation.AnnotationPageSegment
com.levigo.jadice.web.shared.model.annotation.Annotation

JWT-1024
com.levigo.jadice.web.shared.model.bookmark.BookmarkFactory
com.levigo.jadice.web.shared.model.bookmark.BookmarkListFactory
com.levigo.jadice.web.shared.model.bookmark.internal.DocumentBookmarkList
com.levigo.jadice.web.shared.model.bookmark.internal.PageBookmark
com.levigo.jadice.web.client.bookmark.BookmarkFactory
com.levigo.jadice.web.client.bookmark.BookmarkListFactory
com.levigo.jadice.web.client.bookmark.internal.DocumentBookmarkList
com.levigo.jadice.web.client.bookmark.internal.PageBookmark
die Klassen wurden zudem vom Modul "webtoolkit-server-api" in "webtoolkit-client" verschobenJWT-1760

com.levigo.jadice.web.client.ui.Splash
com.levigo.jadice.web.client.ui.style.DefaultUIStyle#splashScreen()
com.levigo.jadice.web.client.ui.style.DefaultUIStyle#levigoLogo()


com.levigo.jadice.web.demo.common.client.ui.Splash
com.levigo.jadice.web.demo.common.client.ui.DemoUIStyle#splashScreen()
com.levigo.jadice.web.demo.common.client.ui.DemoUIStyle#levigoLogo()
Zugehörige Resourcen ebenfalls in Demo packages verschoben

Fehler beim Rendern des Makros 'jira': Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.

diverse closeDocument Aufkommen (internal API) im Zusammenhang mit dem client-seitig emulierten Teil von com.levigo.jadice.document.Document#closerestlos entfernt, wobei für Integratoren kein Aufwand erwartet wird.

Document#close hat bisher dazu geführt, dass über internal API eine Kaskade von Aufrufen hin zum serverseitigen DocumentService getriggert wurde. 

Dort war allerdings seit Jahren die dortige closeDocument Methode deprecated, da veraltete Daten im serverseitigen Cache automatisch gelöscht werden. Die Methode selbst hatte keinerlei Funktionalität mehr, sodass sie nun ersatzlos gestrichen wurde. 

Document#close kann weiterhin aufgerufen zu werden, um das aktuell geladene Dokument nicht mehr auf dem Client anzuzeigen. 

Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.


WebtoolkitServletContextListener

In den vorangegangenen Versionen des jadice web toolkit war der Empfohlene Einstiegspunkt für serverseitige Anpassungen eine eigene Implementierung der Klasse WebtoolkitServletContextListener. Dieser Weg wird nun nicht mehr unterstützt. Sämtliche Konfigurationen können nun über die application.yml oder über entsprechende Beans vorgenommen werden. Weitere Informationen hierzu finden sich im Referenzhandbuch im Kapitel "Einstiegspunkt des Webtoolkits".

Wenn das jadice web toolkit ohne Spring betrieben werden soll, können Sie weiterhin den Weg über den WebtoolkitServletContextListener gehen, Sie müssen in diesem Fall die entsprechenden Services selbst initialisieren. Dies ist nicht empfohlen, weitere Informationen finden Sie im Referenzhandbuch im Kapitel "Nutzung des jadice web toolkit ohne Spring Framework".

Die Methoden initProperties(), initCaches() und initFonts() der Klasse WebtoolkitServletContextListener wurden ebenfalls entfernt. Möchten Sie beispielsweise eine Font-Konfiguration ohne Spring vornehmen, sollten Sie dies als erste Anweisung, innerhalb des WebtoolkitServletContextListener vornehmen, noch bevor der JWTServerContext initialisiert wird.


jadice core

Die Version 5.11 des jadice web toolkit wurde zeitgleich mit der jadice document platform 5.6 veröffentlicht. Damit wurde auch die Dependency "jadice core" auf Version 3.x angehoben. Wenn Sie also Funktionen der jadice document platform verwenden, sind hier ggf. ebenfalls Migrationsschritte durchzuführen. Die Informationen hierzu finden Sie hier.


Änderungen in der Modulstruktur / Integration via maven

Keine


Entfernte Klassen und Funktionalitäten

BereichFunktion (Klassen)Anmerkungsiehe JIRA-Ticket
Server

webtoolkit-print-stream (Modul)

Die Print-Stream-API wurde mit Version 5.8.3.0 deprecated und nun entfernt.

Siehe [JWT-2716] Optimierung lokaler Druck - levigo support center

JWT-3021

Client

com.levigo.jadice.web.client.PageFilter

zugehörige Getter/Setter in ThumbnailTool, ThumbnailView und ThumbnailViewBuilder

Die PageFilter-API ist seit Version 5.9.5.2 deprecated und wurde nun entfernt.

Die Funktionalität wird inzwischen über das FilteredDocument abgedeckt; siehe hierzu Ausblenden von Seiten mit Hilfe des FilteredDocument.

JWT-3507

Serverwebtoolkit-ee (Modul)Das jadice web toolkit setzt auf Spring Boot. Ein Betrieb in einem JavaEE-Container ist weiterhin möglich, die entsprechenden Schritte müssen fortan jedoch vom Integrator erledigt werden (Referenzhandbuch).
Serverwebtoolkit-spring (Modul)Teil von webtoolkit-server