Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Erro do Loader

Bom dia, estou tentando fazer um sistema de teste, com base nos exercicios, para fixar o treinamento.

No entanto, estou recebendo um erro do loader do Tomcat,

{GRAVE: The web application [/FutebolSemMaven] appears to have started a thread named [weld-preloader-3] but has failed to stop it. This is very likely to create a memory leak.}

O que posso ter deixado passar

8 respostas

Olá, você poderia dar mais detalhes sobre o que está tentando fazer e as cofigurações da aplicação?

Desculpa a demora, mas estive fora por um tempo.

Tenho meu Bean da seguinte forma: { import javax.faces.bean.RequestScoped; import javax.inject.Inject; import javax.inject.Named;

@SuppressWarnings("serial") @Named @RequestScoped public class CanalBean implements Serializable {

private Canal canal = new Canal(); @Inject private CanalDAO cDao; }

Se eu coloco como acima, com Request Scoped, roda a aplicação, mas não consigo alterar os itens. Se troco para ViewScoped, ai tenho o erro de inicialização com o seguinte erro:

GRAVE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext

Bom dia Carlos, tudo bem?

Consegui achar o meu erro no sistema, só não entendi porque nos exercícios desenvolvidos não deu o mesmo erro.

Tive que fazer o DAO genérico do tipo Serializable, mas nos exercícios não precisou, porque?

Me permita trazer uma nova duvida a tona, estou criando um metodo alterar da seguinte forma:

public String alterar(Canal canal){
        this.canal = canal;
        System.out.println("[CANAL DAO]: Preparando Edição Registro");
        System.out.println("[CANAL DAO]: Canal: "+ this.canal.getIdCanal() + " " + this.canal.getNmCanal() + " - " + this.canal.getEmailAcesso());
        return "/canal/cadastra";
    }}

No entanto ao abrir a pagina de cadastra, não traz os campos preenchidos. O que posso estar fazendo?

Oi Guilherme

Tive que fazer o DAO genérico do tipo Serializable, mas nos exercícios não precisou, porque?

Qual anotação de escopo você adicionou no seu DAO? (nome + pacote)

Sobre a outra dúvida, você abre um novo tópico e posta o link?

Assim não misturamos o assunto e fica mais fácil quem cair nesse problema no futuro encontrar a solução ;)

Boa tarde

Bean:

import java.io.Serializable;
import java.util.List;

import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.mconsult.dao.CanalDAO;
import br.com.mconsult.entidade.Canal;

@SuppressWarnings("serial")
@Named
@ViewScoped
public class CanalBean implements Serializable {

    private Canal canal = new Canal();
    @Inject
    private CanalDAO cDao;}

No Dao Especifico:
{import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.persistence.EntityManager;

import br.com.mconsult.entidade.Canal;
import br.com.mconsult.util.Transacional;

@SuppressWarnings("serial")
public class CanalDAO implements Serializable {

    @Inject
    private EntityManager em;

    private DAO<Canal> dao;

}

Novo tópico: https://cursos.alura.com.br/forum/topico-metodo-alterar-22094

solução!

Oi Guilherme

O motivo é que todo view scoped precisa ser serializable.

Ele aponta isso nas docs:

Use of this annotation requires that any beans stored in view scope must be serializable and proxyable as defined in the CDI specification.

http://docs.oracle.com/javaee/7/api/javax/faces/view/ViewScoped.html

Tem algum lugar do curso que mostra o ViewScoped sem estar como serializable?

Se puder nos mandar o link, já atualizamos pra não confundir outras pessas ;)

Rodrigo, boa tarde. Na verdade nos exercícios do Curso, a classe br.com.caelum.livraria.dao.DAO não é serializable.

Perfeito, passei pro pessoal de conteúdo dar uma olhada!

Muito obrigado pelo aviso, Guilherme