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.
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. Ein klassisches WAR-/EAR-Deployment ist weiterhin möglich. Informationen hierzu finden sich in der Spring Boot Dokumentation.
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.
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.
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
alt | neu | Anmerkung | siehe 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" verschoben | JWT-1760 |
com.levigo.jadice.web.client.ui.Splash | 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#close | restlos 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. |
|
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
Bereich | Funktion (Klassen) | Anmerkung | siehe 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 | |
Client |
zugehörige Getter/Setter in | Die Die Funktionalität wird inzwischen über das | |
Server | webtoolkit-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. | |
Server | webtoolkit-spring (Modul) | Teil von webtoolkit-server |