Verbesserung
Top-Thema
Detail
Wichtig
Detail
Detail
#26214
Login mit nicht-standard Theme schlägt nach dem Neustart minutenlang fehl
Jemand hat das Theme gewechselt. Anschließend wurde der Server neu gestartet. Direkt danach möchte sich der Nutzer einloggen.
Problem
Es kommt zu einer Exception. Der Login schlägt fehl:
Problem reading masterFrame.layout.xml java.io.IOException: No file found for layout rootLayout at com.top_logic.mig.html.layout.ComponentConfigurationBuilder.build(ComponentConfigurationBuilder.java:124) at com.top_logic.mig.html.layout.LayoutStorage.createLayoutInternal(LayoutStorage.java:636) at com.top_logic.mig.html.layout.LayoutStorage.createLayout(LayoutStorage.java:612) at com.top_logic.mig.html.layout.LayoutStorage.getOrCreateLayout(LayoutStorage.java:565) at com.top_logic.mig.html.layout.LayoutStorage.getOrCreateLayoutConfig(LayoutStorage.java:521) at com.top_logic.mig.html.layout.LayoutStorage.getOrCreateLayoutConfig(LayoutStorage.java:501) at com.top_logic.layout.internal.SubsessionHandler.lambda$0(SubsessionHandler.java:428) at com.top_logic.basic.config.DefaultInstantiationContext.deferredReferenceCheck(DefaultInstantiationContext.java:173) at com.top_logic.basic.config.InstantiationContextImpl.deferredReferenceCheck(InstantiationContextImpl.java:43) at com.top_logic.layout.internal.SubsessionHandler.finishLogin(SubsessionHandler.java:423) at com.top_logic.layout.internal.SubsessionHandler.deliverLocalContent(SubsessionHandler.java:145) at com.top_logic.layout.internal.WindowHandler.handleLocalContent(WindowHandler.java:109) at com.top_logic.layout.internal.WindowHandler.handleContent(WindowHandler.java:87) at com.top_logic.layout.internal.WindowRegistry.dispatch(WindowRegistry.java:139) at com.top_logic.layout.ContentHandlersRegistry.dispatch(ContentHandlersRegistry.java:162) at com.top_logic.layout.ContentHandlersRegistry.dispatch(ContentHandlersRegistry.java:1) at com.top_logic.layout.internal.WindowRegistry.dispatch(WindowRegistry.java:91) at com.top_logic.layout.internal.WindowRegistry.handleContent(WindowRegistry.java:85) at com.top_logic.knowledge.gui.layout.TLLayoutServlet.doGet(TLLayoutServlet.java:80)
Für jedes Theme lädt der tl:LayoutStorage das entsprechende Layout. Falls das tl:TLLayout nicht gecacht ist, muss es neu erstellt werden. Die Ursache des Fehlers liegt beim Erstellen des Layouts für masterFrame.layout.xml. Der Layout-Key masterFrame.layout.xml wird zu rootLayout "normalisiert". Verständlicherweise kann der tl:LayoutResolver keine Dateien für diesen Key auflösen (die sind für den Key masterFrame.layout.xml hinterlegt) und wirft den oben genannten Fehler.
Test
Anwendung starten, Theme neu laden, Anwendung neustarten und anschließend nochmal das Theme neu laden. Es dürfen keine Fehler geloggt werden.