Hinweise zur Migration auf jadice web toolkit 5.6

Wichtiger Hinweis

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.GwtRpcConnectioncom.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
  • clientId
  • longpoll (in älteren Versionen longpush)

  • keepAliveTimeout
  • X-JWT-Disconnect
  • (X-GWT-Module-Base)
  • (X-GWT-Permutation)
  • X-JWT-Client-ID
  • X-JWT-Last-Event-ID
  • (X-GWT-Module-Base)
  • (X-GWT-Permutation)

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

altneuAnmerkungsiehe JIRA-Ticket
com.levigo.jadice.web.client.tools.MouseWheelZoomToolAdvcom.levigo.jadice.web.client.tools.MouseWheelZoomToolersetzt deprecated MouseWheelZoomTool

JWT-1719

com.jadice.web.util.notifications.client.events.InfoNotifcationEventcom.jadice.web.util.notifications.client.events.InfoNotificationEventRechtschreibungJWT-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.WebtoolkitServerConnectioncom.levigo.jadice.web.conn.client.ServerConnectionkürzerer NameJWT-1322

com.levigo.jadice.web.client.internal.annotation.wrangler.TextAnnotationWrangler
CursorPosition cursorPosition = CursorPosition.START

CursorPosition cursorPosition = CursorPosition.ENDDefault CursorPosition Verhalten von START auf END geändert.JWT-2080


Änderungen im Annotationsprofil

altneuAnmerkungsiehe JIRA-Ticket

<property name="closeEditorOnOutsideClick">
<property name="applyTextOnOutsideClick">

<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">
Mögliche Werte:

NONE, CHARACTER, CHARACTER_CR, WORD, WORD_CR
Mögliche Werte:
NONE, CHARACTER_CR, WORD_CR


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)Anmerkungsiehe 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 webtoolkit-ee abgedeckt, wodurch ServerOperations unter dem Security Context des aufrufenden Threads ausgeführt werden.

Siehe http://webtoolkit.jadice.com/doc/sect.chapter-reference.general.html#sect.reference.javaee-spring-integration-module-ee .

JWT-2218


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

JWT-1322


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ügtJWT-1322

monitoring-api, monitoring-adapterMit 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
com.jadice.web.util.log.client.qualified.LogMessage
com.jadice.web.util.log.client.qualified.MessageID
com.jadice.web.util.log.client.internal.MessageFinder
com.jadice.web.util.log.client.internal.QualifiedLoggerWrapper
com.jadice.web.util.log.client.LoggerFactory.getQualifiedLogger()
com.jadice.web.util.log.internal.rebind.MessageFinderGenerator
com.levigo.jadice.web.client.util.log.internal.TestMessages

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
com.levigo.jadice.web.client.util.cache.ClientCacheManager
com.levigo.jadice.web.client.util.cache.StringCompatibleKey
com.levigo.jadice.web.client.util.TileType
com.levigo.jadice.web.client.config.ClientConfiguration.setTileType(TileType tileType)
com.levigo.jadice.web.client.config.ClientConfiguration.getTileType()

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
com.jadice.web.util.icon.client.Icon
com.jadice.web.util.icon.client.IconManager.getIcon()

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 ServerConnection.getTransportClient() kann der aktuelle TransportClient abgefragt werden.

Ü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.WebtoolkitServerConnectionAwareKlasse 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 ServerConnection kann ServerConnection.get() aufgerufen werden.

Neue ServerConnections sollten ausschließlich über den ServerConnectionBuilder erzeugt werden und werden dann automatisch der Klasse ServerConnection gesetzt. Ein manuelles Setzen der ServerConnection für späteren Zugriff ist also nicht nötig.

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 gwtrpcplus und gwtrpc dar und kann nun entfallen, da nur noch ein einziger Transportmechanismus unterstützt wird.

JWT-1322


com.levigo.jadice.web.conn.ConnectionApi.gwt.xmlDurch 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.xmlJWT-1322

com.levigo.jadice.web.client.util.helper.Pages.setWebtoolkitServerConnection(Page page, WebtoolkitServerConnection conn)
com.levigo.jadice.web.client.util.helper.Pages.getWebtoolkitServerConnection(Page page)

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 ServerDeploymentVersionEinschränkungen
JettyWAR

TomcatWAR8.5.9
Oracle WeblogicEAR12.2.1.2.0
IBM WebsphereEAR8.5.5.10 traditionalKeine Verwendung von WebSockets möglich
IBM WebsphereEAR9 traditional-
WildflyEAR10.1.0