Hinweise zur Migration auf jadice web toolkit 5.6
Diese Anleitung gilt für JWT Version 5.6.0.4 vom 30. Mai 2018.
Die Hinweise gelten für die Migration von jadice web toolkit 5.5 auf 5.6.
Inhalt
Neue Funktionen und Features
Umstellung auf Java 8 und GWT 2.8
Mit JWT 5.6 werden Java Source- und Target-Level auf Java 8 erhöht und somit die Java 7 Kompatibilität entfernt. Im gleichen Zuge wird die GWT 2.7 Kompatibilität aufgegeben, da GWT 2.7 keine Java 8 Features unterstützt.
Umstellung der Transportschicht
Bisher funktionierte der Transport des jadice web toolkits wahlweise über gwtrpc oder gwtrpcplus. Mit JWT 5.6 werden diese beiden Transportverfahren entfernt und durch eine neue, deutlich mächtigere Transportschicht ersetzt. Dies hat zur Folge, dass die entsprechenden Dependencies aus den pom.xmls, web.xmls und *.gwt.xmls entfernt werden müssen. Mehr zur neuen Transportschicht kann man im Kapitel Connection der Dokumentation finden.
Die neue Transportschicht unterstützt grundsätzlich drei verschiedene Transportverfahren:
WebSocket basierend
Sever Sent Event basierend
Longpoll basierend
Wichtiger Hinweis: Zur Verwendung von Websockets in Eclipse bitte folgenden Artikel beachten: GWT Super Development Mode mit externem Application Server in Eclipse (JWT und Tomcat).
Die zu verwendenden Transportmechanismen sollten via API eingegrenzt werden, da es ansonsten zu längeren Wartezeiten kommen könnte.
pom.xml
Die Dependencies auf die Module webtoolkit-conn-gwtrpc und webtoolkit-conn-gwtrpcplus müssen entfernt werden. Die neue Transportschicht ist im Maven-Modul webtoolkit-connection enthalten, so dass hierfür keine neue Dependency einzutragen ist.
web.xml
Abhängigkeiten auf den GwtRpcPlusSessionFilter müssen restlos entfernt werden. Eine Session wird nun automatisch über den TransportWebtoolkitFilter, welcher per Annotation registriert wird, erzeugt.
*.gwt.xml
Aus den *.gwt.xmls müssen Dependencies auf com.levigo.jadice.web.conn.gwtrpc.GwtRpcConnection, com.levigo.jadice.web.conn.gwtrpcplus.GwtRpcPlusConnection und com.levigo.jadice.web.conn.ConnectionApi entfernt werden. Als neue Dependency für das Transportmodul dient com.levigo.jadice.web.Transport.
CORS-Filter
Mit der Version 5.6 wird für die HTTP-Header includeCredentials = true immer gesetzt. Damit sind CORS-Filter die für den Header Access-Control-Allow-Origin den Wert * setzen nicht mehr möglich.
Anpassungen an bestehenden Filtern
Bei Verwendung von Server-Sent Events oder Longpoll müssen integrationsspezifische Filter um das asyncSupported-Flag erweitert werden. Siehe http://webtoolkit.jadice.com/doc/sect.chapter-reference.general.html#sect.reference.connection-api
Feedback bei Verbindungsabbrüchen an Services
Wenn die Verbindung abbricht oder keine besteht (z.B. wenn ein Dokument geladen oder eine ServerOperation ausgeführt wird/werden soll, wenn keine Verbindung zum Server besteht oder diese während des Vorgangs abbricht), so wird clientseitig nicht mehr die onError Methode aufgerufen, da die Anfrage erneut gesendet wird, sobald die Verbindung wiederhergestellt werden konnte. Über den TransportListener kann auf wechsel des Verbindungsstatus reagiert werden.
Änderungen an den HTTP-Headern
Bisher | Jetzt |
|---|---|
|
|
Die geklammerten Header sind nicht JWT-spezifisch, sondern werden von GWT gesetzt und erwartet. Der rote Header wurde bis JWT Version 5.5.5.0 verwendet und fällt mit JWT 5.6.0.0 weg. Die grünen Header werden ab Version 5.6.0.0 verwendet und waren in früheren Versionen nicht in Benutzung.
Protokolle / Ports
Je nach Wahl der Verbindung:
HTTP (Standard: 80/TCP)
WS (Standard: 80/TCP)
HTTPS (Standard 443/TCP)
WSS (Standard: 443/TCP).
API-Änderungen und Umbenennungen von Klassen und Packages
alt | neu | Anmerkung | siehe JIRA-Ticket |
|---|---|---|---|
com.levigo.jadice.web.client.tools.MouseWheelZoomToolAdv | com.levigo.jadice.web.client.tools.MouseWheelZoomTool | ersetzt deprecated MouseWheelZoomTool | |
com.jadice.web.util.notifications.client.events.InfoNotifcationEvent | com.jadice.web.util.notifications.client.events.InfoNotificationEvent | Rechtschreibung | |
webtoolkit-conn-api (Modul) | webtoolkit-connection (Modul) | Das Modul | |
com.levigo.jadice.web.conn.client.WebtoolkitServerConnection | com.levigo.jadice.web.conn.client.ServerConnection | kürzerer Name | |
com.levigo.jadice.web.client.internal.annotation.wrangler.TextAnnotationWrangler | CursorPosition cursorPosition = CursorPosition.END | Default CursorPosition Verhalten von START auf END geändert. |
Änderungen im Annotationsprofil
alt | neu | Anmerkung | siehe JIRA-Ticket |
|---|---|---|---|
<property name="closeEditorOnOutsideClick"> | <property name="behaviorOnOutsideClick"> | Die beiden alten Properties für textbasierte Annotationen wurden zu einer neuen Property zusammengefasst. Mögliche Werte: APPLY_TEXT, DISCARD_TEXT, (IGNORE_CLICK) | |
- nicht unterstützt - | <property name ="expandHeight"> | Im Annotationsprofil kann für textbasierte Annotationen die Property | |
<property name ="lineWrap">
|
| Die Werte CHARACTER und WORD der Property LineWrap wurden entfernt. Stattdessen sollen CHARACTER_CR und WORD_CR verwendet werden. |
Entfernte Klassen und Funktionalitäten
| Funktion (Klassen) | Anmerkung | siehe JIRA-Ticket |
|---|---|---|---|
Server | webtoolkit-extension-jaas (Modul) com.jadice.web.ext.jaas.AbstractSubjectAwareContextualFactory | Die Funktionalität wird seit JWT Version 5.5. durch das Modul | |
| webtoolik-conn-gwtrpc (Modul) | Es wurde eine neue Transportschicht eingeführt, weshalb die alten Transportschichten abgeschafft wurden. Die Dokumentation der neuen Transportschicht findet sich hier: http://webtoolkit.jadice.com/doc/sect.chapter-reference.general.html#sect.reference.connection-api | |
| com.levigo.jadice.web.server.ServletInvocationContext.getServletRequest() | Methode wurde entfernt, da sie für die neue Transportschicht nicht mehr allgemein Sinn macht (bei der Verwendung von WebSockets gibt es keinen | |
| monitoring-api, monitoring-adapter | Mit Version 5.6.0.0 des jadice web toolkit wird die Monitoring-API nicht weiter genutzt. | |
Client | clientseitiger QualifiedLogger com.jadice.web.util.log.client.qualified.QualifiedLogger | Die deprecated Klassen des clientseitigen QualifiedLoggers und darauf verweisende Methoden aus der LoggerFactory-Klasse wurden entfernt. | |
| com.levigo.jadice.web.client.util.cache.ClientCache | Die Möglichkeit, Kacheln in Form eines Base64-Strings zu übertragen, wurde entfernt. Kacheln werden nun immer als normaler HTTP-Download vom Server bereitgestellt. Damit fällt auch das clientseitige Caching weg, da dieses ausschließlich zum Cachen der Base64-Strings diente. | |
| com.jadice.web.util.icon.client.internal.GwtIcon | Die einzige Verwendung von | |
| com.levigo.jadice.web.conn.client.WebtoolkitServerConnection.getStatus() | Methode wurde entfernt, da sie nicht länger benötigt wird. (Die zugehörige Klasse WebtoolkitServerConnectionStatus wurde entfernt.) | |
| com.levigo.jadice.web.conn.client.WebtoolkitServerConnectionStatus | Klasse wurde entfernt, da sie nicht länger benötigt wird. Über die Methode Über diesen können die verwendete Transportmethode (WebSockets, SSE, Longpoll) sowie der Connection Status abgefragt und Listener gesetzt werden. | |
| com.levigo.jadice.web.conn.client.WebtoolkitServerConnection.getServerOperationService() | Funktionalität wird durch | |
| com.levigo.jadice.web.conn.client.WebtoolkitServerConnectionAware | Klasse wurde entfernt, da sie nicht mehr benötigt wird. Um auf eine bestehende | |
| com.levigo.jadice.web.conn.client.WebtoolkitServerConnectionProvider | Klasse wurde entfernt. Zum Abfragen einer bestehenden Neue | |
| com.levigo.jadice.web.conn.rebind.ConnectionFactoryGenerator | Klasse wurde entfernt, da sie nicht länger benötigt wird. Sie stellte eine einfache Schnitstelle zu den vor JWT 5.6 vorhandenen Transportprotokollen | |
| com.levigo.jadice.web.conn.ConnectionApi.gwt.xml | Durch die Entfernung des Moduls | |
| com.levigo.jadice.web.client.util.helper.Pages.setWebtoolkitServerConnection(Page page, WebtoolkitServerConnection conn) | Die | |
| com.levigo.jadice.web.server.annotation.CalloutAnnotationRenderer.getLineWrap() | Die deprecated LineWrap-Werte SWING_CHARACTER und SWING_WORD werden grundsätzlich im JWT nicht mehr unterstützt und stehen deshalb auch hier nicht mehr zur Verfügung. | |
| com.levigo.jadice.web.client.util.action.ActionManager.initialize(IsWidget viewComponent) | Die Methode wurde entfernt. Der |
Verifizierte Umgebungen
Application Server | Deployment | Version | Einschränkungen |
|---|---|---|---|
Jetty | WAR |
|
|
Tomcat | WAR | 8.5.9 |
|
Oracle Weblogic | EAR | 12.2.1.2.0 |
|
IBM Websphere | EAR | 8.5.5.10 traditional | Keine Verwendung von WebSockets möglich |
IBM Websphere | EAR | 9 traditional | - |
Wildfly | EAR | 10.1.0 |
|