JBoss: Cosa significa l'avvertimento EJBTHREE-1246 di InterceptorRegistry?
-
20-08-2019 - |
Domanda
Attualmente sto sviluppando un'applicazione basata su EJB 3.0 su JBoss AS 5.0.0.GA e solo recentemente è stato visualizzato il seguente avviso nel registro del server:
09:50:19,735 WARN [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container 09:50:19,735 WARN [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container 09:50:19,735 WARN [InterceptorRegistry] applicable interceptors is non-existent for ... ...
Gli avvisi vengono generati non appena un EJB (un bean di sessione senza stato) viene iniettato in un bean di supporto della mia applicazione Web JSF. I bean funzionano senza problemi però, ma vorrei comunque sapere da dove proviene quell'avvertimento e cosa posso fare per evitarlo.
Ho già cercato un po 'in giro, ma non ho trovato una buona risposta (alcuni dicono, gli sviluppatori di bean non devono preoccuparsi, ma è un avvertimento, quindi mi piacerebbe avere una soluzione migliore):
- http: // www. jboss.com/index.html?module=bb&op=viewtopic&t=147292
- http: // www. jboss.com/index.html?module=bb&op=viewtopic&p=4180366
- http: // www. jboss.com/index.html?module=bb&op=viewtopic&p=4140136
- JBoss JIRA Problema sull'avvertimento (Secondo me non utile)
Quindi qualcuno ha una spiegazione di ciò che provoca l'avvertimento (in termini di uno sviluppatore di bean, non di uno sviluppatore di application server) e cosa fare per evitarlo?
Aggiornamento: ho appena aggiornato JBoss a 5.0.1.GA ( Scarica , Note di rilascio ) ma sfortunatamente appare ancora l'avvertimento.
Soluzione
Per quanto ho capito tutte le fonti disponibili in questo avviso, non è nulla che un utente di JBoss 5 possa fare nulla ed è essenzialmente un promemoria per gli sviluppatori di JBoss che usano le loro classi in modo sbagliato.
Seguendo i consigli degli sviluppatori, ora lo sto ignorando cambiando la mia configurazione di registrazione in conf / jboss-log4j.xml. Ho appena aggiunto:
<category name="org.jboss.ejb3.interceptors">
<priority value="ERROR" />
</category>
Altri suggerimenti
Anche l'esercitazione / documentazione di JBoss EJB3 afferma che è possibile ignorare in sicurezza questi avvisi. Bene, se tutti possono ignorarli, non registrarli! È frustrante vedere che questo problema non viene risolto.
Ho avuto lo stesso problema, modificare ejb3-interceptors-aop.xml e ora funziona bene.
Ho provato questa modifica in ejb3-interceptors-aop.xml
Ho commentato queste righe:
<aspect name="InterceptorsFactory" factory="org.jboss.ejb3.interceptors.aop.InterceptorsFactory" scope="PER_INSTANCE"/>
<advice name="invoke" aspect="InterceptorsFactory"/>
e funziona
Gli avvisi non vengono più visualizzati in JBoss 5.1.0, ma l'aggiunta della categoria come postato da Simon elimina la registrazione degli avvisi in 5.0.x
Segui i passaggi
- Arresta JBoss e fai clic con il tasto destro sull'istanza del server e seleziona clean
- fai clic destro sul progetto e seleziona Esegui - > esegui configurazioni
- seleziona classpath - > aggiungi barattoli
- Aggiungi vasi da JBoss ASHOME / client -
jbossall-client.jar
, JBoss ASHome / common / lib - tutti i vasi. - Applica ed esegui.