Domanda

Abbiamo una vasta applicazione EAR con circa 20 moduli EJB-JAR e di guerra.

Per ogni modulo guerra che Mojarra inizia, a quanto pare sta cercando di annotazioni di scansione su ogni altra guerra. Altre guerre non sono disponibili per il programma di caricamento classe, in modo da ottenere molte eccezioni. E alla fine si avvia comunque, ma ingombra miei ceppi con avvisi, e credo che il tempo di applicazione di avvio potrebbe essere molto meno senza questo (+100 secondi).

Per chiarire, ho seguente struttura:

EAR
+- ejb1
+- ejb2
+- war1
+- war2

Quando si avvia Mojarra war1, si lamenta classi manca dal War2 (ClassNotFoundException).

Ho visto questo quando l'aggiornamento a Glassfish 3.1 (e, quindi, Mojarra 2.1).

È stato utile?

Soluzione

Ho trovato la ragione, e alcuni workaround.

su GlassFish 3.1, fornito con Mojarra 2.1, scansione classpath è delegata a Glassfish. Ora, Glassfish sembra dare tutte le classi di file ear invece di guerra. Ho aperto http://java.net/jira/browse/JAVASERVERFACES-1995 per questo (ma sembra davvero essere un bug Glassfish, non JSF / Mojarra).

In attesa di una correzione, ho patchato Mojarra in questo modo: in com.sun.faces.config.ConfigManager.java, intorno alla linea 834, ho commentato alcune linee:

//            if (provider instanceof DelegatingAnnotationProvider &&
//                null != annotationScanner) {
//                // This InjectionProvider is capable of annotation scanning *and*
//                // injection.
//                ((DelegatingAnnotationProvider)provider).setAnnotationScanner(annotationScanner,
//                        metadataGetter.getJarNames());
//                scanUris = Collections.emptySet();
//            } else {
                // This InjectionProvider is capable of annotation scanning only
                scanUris = metadataGetter.getAnnotationScanURIs();
//            }

I registri sono ora molto meno prolissa. Sembra Glassfish è ancora la scansione ogni classi, quindi ho ancora avvertimenti come questo:

[#|2011-03-18T13:47:05.019+0100|WARNING|oracle-glassfish3.1|javax.enterprise.system.container.web.org.glassfish.web.loader|_ThreadID=57;_ThreadName=Thread-1;|WEB9052: Unable to load class org.apache.myfaces.custom.inputTextHelp.HtmlTextHelpRenderer, reason: java.lang.ClassNotFoundException: org.apache.myfaces.custom.inputTextHelp.HtmlTextHelpRenderer|#]

Ma nessuno stacktrace da Mojarra, che è già molto meno prolisso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top