enhancement
major
minor
major
minor
major
#30002
Service-Editor: Konfiguration aller Services fehlerfrei anzeigen
Problem
Im Service-Editor (Administration > Development > Service Editor) führt die Anzeige einiger Services zu Fehlern in der Oberfläche oder zu Fehlereinträgen im Server-Log. Geprüft wurden alle 135 Services der Anwendung tl-demo (master, gestartet mit tl-app.sh, also über exec:java mit Jetty).
Ziel: Jeder Service im Editor wird ohne Fehlermeldung in der Oberfläche und ohne ERROR im Log angezeigt.
Fehler in der Oberfläche
Anwendungskonfigurator
Im Detailbereich steht „Kein Inhalt.“, dazu kommt die Meldung „Es konnte keine Konfiguration für Anwendungskonfigurator geladen werden.“ mit dem Detail:
com.top_logic.basic.config.ApplicationConfig has no com.top_logic.basic.module.ManagedClass$ServiceConfiguration interface
Im Server-Log steht dazu nichts. ApplicationConfig hat keine ServiceConfiguration, der Editor setzt eine solche aber für jeden Service voraus.
Anwendungsmodell
Im Detailbereich steht nur ein „Fehler“-Button, dazu „Bei der Sichterstellung ist ein Fehler aufgetreten“ (Komponente ServiceConfigEditor aus com.top_logic/admin/technical/services/servicesView.layout.xml, Zeile 109). Grundursache im Log:
java.lang.ClassCastException: class jdk.proxy5.$Proxy2356 cannot be cast to class com.top_logic.element.config.ModuleConfig ($Proxy2356 is in module jdk.proxy5 of loader org.eclipse.jetty.ee.webapp.WebAppClassLoader; ModuleConfig is in unnamed module of loader org.codehaus.mojo.exec.URLClassLoaderBuilder$ExecJavaClassLoader) at com.top_logic.element.config.SingletonConfig$LocalTypeMapping.<init>(SingletonConfig.java:72) at com.top_logic.basic.config.ConfigUtil.newInstance(ConfigUtil.java:1987) at com.top_logic.basic.config.ConfigUtil.getInstance(ConfigUtil.java:682) at com.top_logic.layout.form.values.Fields.contextInstance(Fields.java:1016) at com.top_logic.layout.form.values.Fields.getOptionMapping(Fields.java:922) at com.top_logic.layout.form.values.Fields.optionProvider(Fields.java:905) at com.top_logic.layout.form.values.edit.editor.ValueEditor.addField(ValueEditor.java:87) ... at com.top_logic.layout.form.values.edit.editor.ItemEditor.initContainer(ItemEditor.java:160) at com.top_logic.layout.form.declarative.DeclarativeFormBuilder.createForm(DeclarativeFormBuilder.java:248)
Der Proxy und das Interface ModuleConfig stammen aus verschiedenen ClassLoadern. Das kann am Start über exec:java liegen; ob der Fehler auch in einem regulären Deployment auftritt, ist noch zu prüfen.
Fehler nur im Log
Diese Services werden normal angezeigt, erzeugen aber ERROR-Einträge im Log:
- Anbieter von Berechtigungsobjekten: Fehlende Übersetzungen (ResourcesModule - Missing resource) für com.top_logic.tool.boundsec.securityObjectProvider.path.{Opener,CurrentObject,Model,Selection,Master,Window}$Config, angefragt aus ConfigLabelProvider.getLabel über ListEditor$ElementFactory$2.getResource.
- Befehlshandler: DerivedValue - Cannot compute derived value for 'OpenModalDialogCommandHandler$Config.getDialogName()' bzw. getTargetComponent(), Ursache:
NullPointerException: Cannot invoke "LayoutComponent.getDialogTopLayout()" because the return value of "AllVisibleComponentNames.getContextComponent()" is null at com.top_logic.layout.editor.AllVisibleComponentNames.collect(AllVisibleComponentNames.java:50) at com.top_logic.layout.editor.AllDialogNames.collect(AllDialogNames.java:40) at AbstractComponentNameCollector.apply(AbstractComponentNameCollector.java:55) at DerivedPropertyAlgorithm.apply(DerivedPropertyAlgorithm.java:127)
- Datenbank-Verbindungspools: TypeIndex - Indexed class 'com.top_logic.basic.sql.PostgreSQLHelper' not found.
- Konverter für Dokumentformate: Fehlende Übersetzungen für com.top_logic.convert.converters.{TextPlain,PdfFormat,MsWordFormat,MsWordXFormat,ExcelFormat,ExcelXFormat,HTMLFormat,PowerPointFormat,PowerPointXFormat,RtfFormat}Converter.
Reproduktion
- tl-demo starten, als root anmelden.
- Administration > Development > Service Editor öffnen.
- Die oben genannten Services nacheinander in der Tabelle „Module“ auswählen und Oberfläche sowie tmp/tl-app.log beobachten.