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 | JWT-1843 |
webtoolkit-conn-api (Modul) | webtoolkit-connection (Modul) | Das Modul webtoolkit-conn-api wurde aufgelöst. Die wesentlichen Klassen wurden in das Modul webtoolkit-connection verschoben. Entfernte Klassen finden sich in der Tabelle "Entfernte Klassen und Funktionalitäten" | JWT-1322 |
com.levigo.jadice.web.conn.client.WebtoolkitServerConnection | com.levigo.jadice.web.conn.client.ServerConnection | kürzerer Name | JWT-1322 |
com.levigo.jadice.web.client.internal.annotation.wrangler.TextAnnotationWrangler | CursorPosition cursorPosition = CursorPosition.END | Default CursorPosition Verhalten von START auf END geändert. | JWT-2080 |
Ä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) | JWT-2261 |
- nicht unterstützt - | <property name ="expandHeight"> | Im Annotationsprofil kann für textbasierte Annotationen die Property expandHeight gesetzt werden (mögliche Werte: OFF, ON_TEXT_INPUT, ON_TEXT_INPUT_AND_EDITOR_OPEN). Diese ermöglicht eine Höhenerweiterung der Textannotation abhängig von der Textlänge. | JWT-412 |
<property name ="lineWrap"> NONE, CHARACTER, CHARACTER_CR, WORD, WORD_CR | Mögliche Werte: | Die Werte CHARACTER und WORD der Property LineWrap wurden entfernt. Stattdessen sollen CHARACTER_CR und WORD_CR verwendet werden. | JWT-2301 |
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) webtoolik-conn-gwtrpcplus (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 HttpServletRequest ). Für die bessere Erreichbarkeit von Login Informationen wurde die Methode ServletInvocationContext.getUserPrincipal() hinzugefügt | JWT-1322 | |
monitoring-api, monitoring-adapter | Mit Version 5.6.0.0 des jadice web toolkit wird die Monitoring-API nicht weiter genutzt. | JWT-1648 | |
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. | JWT-1896 |
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. | JWT-1092 | |
com.jadice.web.util.icon.client.internal.GwtIcon | Die einzige Verwendung von GwtIcon wurde durch die Standard Icon-Api ersetzt. (über die Klasse IconManager und das Interface EffectIcon mit seinen implementierenden Klassen) | JWT-1671 | |
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.) | JWT-1322 | |
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. | JWT-1322 | |
com.levigo.jadice.web.conn.client.WebtoolkitServerConnection.getServerOperationService() | Funktionalität wird durch ServerConnection.getService(ServerOperationService.class) abgedeckt. | JWT-1322 | |
com.levigo.jadice.web.conn.client.WebtoolkitServerConnectionAware | Klasse wurde entfernt, da sie nicht mehr benötigt wird. Um auf eine bestehende ServerConnection zuzugreifen, kann ServerConnection.get() aufgerufen werden. Ein manuelles Injecten der ServerConnection in eine Klasse entfällt hierdurch. | JWT-1322 | |
com.levigo.jadice.web.conn.client.WebtoolkitServerConnectionProvider | Klasse wurde entfernt. Zum Abfragen einer bestehenden Neue | JWT-1322 | |
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 webtoolkit-conn-api wurde auch die dazugehörige gwt.xml entfernt. Die gwt.xml des neuen Transportmoduls ist com.levigo.jadice.web.Transport.gwt.xml | JWT-1322 | |
com.levigo.jadice.web.client.util.helper.Pages.setWebtoolkitServerConnection(Page page, WebtoolkitServerConnection conn) | Die ServerConnection ist über ServerConnection.get() abfragbar. Ein Setzen und Abfragen der Connection über die UserProperties der Page ist nicht mehr notwendig. | JWT-1322 | |
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. | JWT-1655 | |
com.levigo.jadice.web.client.util.action.ActionManager.initialize(IsWidget viewComponent) | Die Methode wurde entfernt. Der ActionManager wird nun automatisch initialisiert, wenn die erste Action registriert wird. Ein manuelles Initialisieren ist nicht länger notwendig. Der KeyDownHandler wird nun direkt an den Body angehängt. | JWT-2263 |
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 |