In den vergangenen Wochen haben wir mehrere Male Start-Probleme des JBoss’ festgestellt: Entweder er startete überhaupt nicht oder er benötigte sehr (mehr als eine Stunde!) lange.
In den Server-Log-Dateien fanden wir folgende Ausnahmen:
2011-04-19 08:36:09,484 ERROR [de.absoft.portal.core.listener.PortletContextListener] Exception while parsing 'portlet.xml' org.dom4j.DocumentException: Error on line 573 of document http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd : src-resolve: Cannot resolve the name 'xml:lang' to a(n) 'attribute declaration' component. Nested exception: src-resolve: Cannot resolve the name 'xml:lang' to a(n) 'attribute declaration' component.
Wir haben herausgefunden, dass die Ausnahme geworfen wird, wenn diese Dokument auf der Sun-Webseite – aus welchem und auch immer – nicht erreichbar ist. Zusätzlich kann dieser Fehler auftreten, wenn der JBoss vollständig ohne Internet-Anbidung gestartet wird.
Das größte Problem dabei ist jedoch, dass er, bevor diese Ausnahme geworfen wird, ein Timeout abwartet. Dies führt in diesem Fall zu den extrem langen Startzeiten.
Da es komplett irrsinnig ist, dass der JBoss-Start von einem Sun-Server abhängt, der offensichtlich nicht einmal besonders zuverlässig läuft, suchten wir nach einer Lösung.
Der einzige Grund für dieses Problem war, dass die Validierungsfunktion im Quelltext aktiviert war. Daher mussten wir nur diese Zeilen Quelltext entfernen:
reader.setFeature("http://xml.org/sax/features/validation", true); reader.setFeature("http://apache.org/xml/features/validation/schema", true); reader.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true); reader.setFeature("http://apache.org/xml/features/validation/dynamic", true);
Selbstverständlich ist diese Validierungsfunktion zum Debuggen sicherlich sehr sinnvoll, aber sie sollte definitiv in einer produktiven Umgebung deaktiviert sein.
Haben Sie selbst auch bereits Start-Probleme des JBoss’ aufgrund dieser Funktion beobachten können?
Der Artikel ist auch in English verfügbar.