Erro HTTP Status 500 - Internal Server Error - Ao tentar carregar informações do meu arquivo .xhtml

2 respostas
java
B

Bom dia galera,

Estou começando a aprender a programar java web usando jsf + hibernate, através da Ide netbeans e tenho sofrido com um erro que ocorre toda vez que tento carregar o meu formulário em .xhtml, para poder exibir e tentar salvar dados no meu banco. Esse seria o erro.

`

HTTP Status 500 - Internal Server Error

 type Exception report

 messageInternal Server Error

 descriptionThe server encountered an internal error that prevented it from fulfilling this request.

 exception

 javax.servlet.ServletException
 root cause

 java.lang.ExceptionInInitializerError
 root cause

 javax.persistence.PersistenceException: No Persistence provider for EntityManager named livrariadb

`
Pela mensagem, dá-se a entender que não tem sido possível comunicar com o PU livrariadb, do meu persistence.xml. Porem, o estranho é que executando essa classe a qual faz a persistência direta com o banco, consigo criar as tabelas, e inserir os dados no banco normalmente. Segue a classe:

`

public static void main(String[] args) {

	EntityManager em = new JPAUtil().getEntityManager();

	em.getTransaction().begin();

	Autor assis = geraAutor("Machado de Assis");
	em.persist(assis);

	Autor amado = geraAutor("Jorge Amado");
	em.persist(amado);

	Autor coelho = geraAutor("Paulo Coelho");
	em.persist(coelho);

	Livro casmurro = geraLivro("978-8-52-504464-8", "Dom Casmurro",
			"10/01/1899", 24.90, assis);
	Livro memorias = geraLivro("978-8-50-815415-9",
			"Memorias Postumas de Bras Cubas", "01/01/1881", 19.90, assis);
	Livro quincas = geraLivro("978-8-50-804084-1", "Quincas Borba",
			"01/01/1891", 16.90, assis);

	em.persist(casmurro);
	em.persist(memorias);
	em.persist(quincas);

	Livro alquemista = geraLivro("978-8-57-542758-3", "O Alquimista",
			"01/01/1988", 19.90, coelho);
	Livro brida = geraLivro("978-8-50-567258-7", "Brida", "01/01/1990",
			12.90, coelho);
	Livro valkirias = geraLivro("978-8-52-812458-8", "As Valkirias",
			"01/01/1992", 29.90, coelho);
	Livro maao = geraLivro("978-8-51-892238-9", "O Diario de um Mago",
			"01/01/1987", 9.90, coelho);

	em.persist(alquemista);
	em.persist(brida);
	em.persist(valkirias);
	em.persist(maao);

	Livro capitaes = geraLivro("978-8-50-831169-1", "Capitaes da Areia",
			"01/01/1937", 6.90, amado);
	Livro flor = geraLivro("978-8-53-592569-9",
			"Dona Flor e Seus Dois Maridos", "01/01/1966", 18.90, amado);

	em.persist(capitaes);
	em.persist(flor);

	em.getTransaction().commit();
	em.close();

}

private static Autor geraAutor(String nome) {
	Autor autor = new Autor();
	autor.setNome(nome);
	return autor;
}

private static Livro geraLivro(String isbn, String titulo, String data,
		double preco, Autor autor) {
	Livro livro = new Livro();
	livro.setIsbn(isbn);
	livro.setTitulo(titulo);
	livro.setDataLancamento(data);
	livro.setPreco(preco);
	livro.adicionaAutor(autor);
	return livro;
}

@SuppressWarnings("unused")
private static Calendar parseData(String data) {
	try {
		Date date = new SimpleDateFormat("dd/MM/yyyy").parse(data);
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar;
	} catch (ParseException e) {
		throw new IllegalArgumentException(e);
	}
}

`

Segue abaixo o conteúdo do meu persistence.xml

`

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
  http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
  version="2.0">

  <persistence-unit name="livrariadb" transaction-type="RESOURCE_LOCAL">
    
  <provider>org.hibernate.ejb.HibernatePersistence</provider>

  <class>br.com.caelum.livraria.modelo.Livro</class>
  <class>br.com.caelum.livraria.modelo.Autor</class>

  <properties>
    <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
    <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3310/livrariadb"/>
    <property name="javax.persistence.jdbc.user" value="root"/>
    <property name="javax.persistence.jdbc.password" value="vivi2012"/>
  
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
    <property name="hibernate.hbm2ddl.auto" value="update" />  
    <property name="hibernate.show_sql" value="true" />
    <property name="hibernate.format_sql" value="true" />
  </properties>

</persistence-unit>
`

Segue o meu arquivo .xhtml.

`

<?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-      transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:f="http://java.sun.com/jsf/core">

 <h:body>

    <h1>Novo Livro</h1>
    
    <h:form>
        <fieldset>
            <legend>Dados do Livro</legend>
            <h:panelGrid columns="2">
                <h:outputLabel value="Titulo:" for="titulo" />
                <h:inputText id="titulo" value="#{livroBean.livro.titulo}" />
                <h:outputLabel value="ISBN:" for="isbn" />
                <h:inputText id="isbn" value="#{livroBean.livro.isbn}" />
                <h:outputLabel value="Preço:" for="preco" />
                <h:inputText id="preco" value="#{livroBean.livro.preco}" />
                <h:outputLabel value="Data de Lançamento:" for="dataLancamento" />
                <h:inputText id="dataLancamento" value="#{livroBean.livro.dataLancamento}" />
                <h:commandButton value="Gravar" action="#{livroBean.gravar}"/>
            </h:panelGrid>
        </fieldset> 
        
        <fieldset>
			    <legend>Dados do Autor</legend>
			    <h:outputLabel value="Selecione Autor:" for="autor"/>
			    <h:selectOneMenu value="#{livroBean.autorId}" id="autor">
				    <f:selectItems value="#{livroBean.autores}" var="autor" itemLabel="#{autor.nome}" itemValue="#{autor.id}"/>	    
			    </h:selectOneMenu>
				
				<h:dataTable value="#{livroBean.autoresDoLivro}" var="autor">
			        <h:column>
			            <h:outputText value="#{autor.nome}"/>
			        </h:column>
			    </h:dataTable>
			    <h:commandButton value="Gravar Autor" action="#{livroBean.gravarAutor}"/>
	    </fieldset>
    </h:form>
    
</h:body>

</html>

`
Essa seria a estrutura das minhas pastas.

Sendo assim, estou meio perdido sobre como resolver esse problema, visto que aparentemente está tudo ok e era pra carregar o meu formulário normalmente. Desde já agradeço por qualquer ajuda dos colegas.

2 Respostas

B

Bom dia galera,

Será que alguem poderia me dar pelo menos uma pista de como corrigir esse erro? Já pesquisei bastante tanto aqui no forum como na net porem não achei nada muito claro… desde já agradeço por qualquer ajuda.

G

Posta o stacktrace inteiro, facilita encontrar o erro, pelo que você postou só dá pra ver que ele não conseguiu criar o EntityManager, mas isso pode ter dezenas de motivos, talvez você não tenha este banco de dados criado(ele cria as tabelas em um banco existente), talvez alguma biblioteca esteja faltando, talvez haja algum erro de digitação em alguma configuração, de toda forma a impressão do stacktrace é o caminho para achar a solução.
Só por questão de desencargo de consciência, a porta do seu mysql é mesmo 3310?

Criado 21 de março de 2016
Ultima resposta 23 de mar. de 2016
Respostas 2
Participantes 2