Pelo print dá pra ver que o WildFly 21 está acusando:
javax.servlet.ServletException: Um erro ocorreu ao realizar a injeção do recurso no bean gerenciado firstHome
Isso indica que durante a criação do bean firstHome
(provavelmente um @ManagedBean
, @Named
, @EJB
ou @Inject
) algo não está sendo resolvido. Como você está migrando do WildFly 10.0.1 → 21.0.2, algumas mudanças importantes podem impactar:
Principais pontos que causam esse erro em migração WildFly 10 21
Mudança no suporte a JSF e CDI
- WildFly 10 vinha com Mojarra 2.x e suporte legado ao
@ManagedBean
. - A partir do WildFly 15+ o recomendado é usar CDI (
@Named
, @Inject
, @RequestScoped
, etc.) ao invés de @ManagedBean
. - Se o seu
firstHome
ainda usa @ManagedBean
, pode falhar na injeção.
Injeção de recursos JNDI / EJB
- Se você injeta algo com
@EJB
ou @Resource
, o JNDI name pode ter mudado entre as versões. - Verifique no
standalone.xml
ou via jboss-cli
se o recurso está realmente disponível.
Bibliotecas empacotadas
- Muitas vezes projetos mais antigos empacotam
jsf-api
, jsf-impl
ou libs duplicadas dentro do .war
/.ear
. - No WildFly 21 isso entra em conflito porque o servidor já provê essas libs atualizadas.
Mudança em escopos
- O WildFly 21 usa CDI 2.0+ e exige anotações corretas, como
@ApplicationScoped
, @SessionScoped
(com implements Serializable
), etc. - Beans mal configurados falham ao subir.
O que você pode verificar
No bean firstHome
, veja se está usando @ManagedBean
.
Se sim, troque para CDI:
@Named("firstHome")
@RequestScoped // ou SessionScoped, ApplicationScoped dependendo do caso
public class FirstHome {
// ...
}
Garanta que tenha o arquivo beans.xml
em WEB-INF
ou META-INF
.
Confirme se os recursos injetados existem. Exemplo:
@EJB
private MeuServico servico;
→ Veja no log se o EJB foi implantado corretamente.
Ative logs mais verbosos de CDI no WildFly:
/subsystem=logging/logger=org.jboss.weld:add(level=DEBUG)
Isso ajuda a mostrar qual injeção falhou.
Minha hipótese principal: seu firstHome
é um @ManagedBean
legado e o WildFly 21 não está mais aceitando injeção nele. Convertendo para CDI (@Named
+ escopo) deve resolver.