Ich migriere meine App von GlassFish 3.0.1 nach GlassFish 3.1.1. Die Bereitstellung schlägt mit den folgenden Fehlermeldungen fehl:
%Vor%Es gibt keinen Stack-Trace. Ich habe die Root-Protokollierungsstufe auf FINEST gesetzt und die erste SEVERE-Nachricht nach einer Weld-Nachricht:
%Vor%Und vor mehreren Nachrichten wie diesen (für mehrere verschiedene Klassen):
%Vor%Was könnte diesen Fehler verursachen? Könnten diese PWC4451-Nachrichten anzeigen, dass einige Bibliotheken nicht geladen werden?
Dies lag an einer @ViewScoped-Bean, die Serializable nicht implementiert hat. Offensichtlich fand eine ältere Version von Weld, die wir verwendeten, es nicht beanstandlich, dass eine passivierende Bohne nicht serialisierbar war, aber diese hier scheiterte still. Naja, hoffe das spart jemand etwas Zeit.
Nach drei Stunden Debugging habe ich ein Problem wie diese behoben, indem ich versuche, die Anwendung in JBoss 6 zu implementieren.
Es scheint so, als ob mehrere Fehlermeldungen von Weld unter Glassfish nicht korrekt geloggt werden. In meinem Fall habe ich eine EJB mit @Stateless @RequestScoped kommentiert (das ist illegal, muss @Statefull sein). Mit Glassfish konnte ich nur den "Fehler beim Laden der App" sehen, während ich in JBoss 6 die korrekte Fehlermeldung mit dem fehlerhaften Code bekomme.
Ich schlage vor, dass Sie versuchen, alle Teile auf JBoss 6 zu verteilen (z. B. @Resource mit spezifischem JNDI-Pfad), die verhindern, dass der Weld-Deployer die Anwendung scannt und den CDI-Inhalt validiert.
Grund und Lösungen, die ich in Bezug auf dieses Problem gefunden habe:
- Ziel nicht aktualisiert (stellen Sie sicher, eine Maven sauber zu machen, Zielordner möglicherweise gesperrt sein, versuchen Sie es manuell zu entfernen und erstellen Sie Ihr Ohr (hatte dieses Problem ein paar Mal)
- Problem mit JDBC-Pools: spülen Sie sie
- Konstruktorproblem mit EJBs (Beachten Sie, dass es der Container ist, der Ihre Beans erstellt): Der Container muss sie initiieren können. Daher muss ein Standardkonstruktor ohne Argumente vorhanden sein.
falls das nicht funktioniert: Team- & gt; vergleichen mit - & gt; neueste funktionierende Version und betrachte jede EJB-Bean oder DTO für Webservices als mögliche Fehlerursache. Kommentieren Sie Ihre Änderungen und versuchen Sie erneut, das Problem zu lokalisieren.
In jedem Fall ist es ein ekliger Fehler :( Viel Glück!
Ich füge den unschuldigen @Interzeptor meinem Interzeptor hinzu, obwohl ich ihn mit Anmerkungen verwende.
Meine Version von Glassfish ist 3.1.2.2.
Diese Seite sagt, dass es Intector Javadoc optional ist.
Tags und Links java-ee nullpointerexception deployment glassfish jboss-weld