EJB 3.1 erro com conexão com Banco de dados

Estou com um erro quando tento conectar a minha aplicação com mysql segue as configurações e as classes da aplicação assim como o erro

configuração no arquivo standalno.xml do jboss 7.1

<datasource jndi-name="java:/jdbc/K19" pool-name="K19" jta="true" enabled="true" use-java-context="true" use-ccm="true">
					<connection-url>jdbc:mysql://localhost:3306/k22_jboss</connection-url>
					<driver>com.mysql</driver>
					<security>
						<user-name>root</user-name>
						<password>root</password>
				   </security>
				</datasource>


<driver name="com.mysql" module="com.mysql">
						<xa-datasource-class>
						  com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
						</xa-datasource-class>
					</driver>

a persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
	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">

	<persistence-unit name="K19" transaction-type="JTA">
		<provider>org.hibernate.ejb.HibernatePersistence </provider>
		<jta-data-source>jdbc/K19</jta-data-source>
		<class>persistencia.dao.Livro</class>
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
			<property name="hibernate.hbm2ddl.auto" value="update" />
		</properties>
	</persistence-unit>
</persistence>

a classe Livro

package persistencia.dao;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Livro implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long id;
	
	private String nome;
	
	private Double preco;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Double getPreco() {
		return preco;
	}

	public void setPreco(Double preco) {
		this.preco = preco;
	}
	
	
}

erro encontrado

16:23:24,264 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.unit."PersistenciaWeb.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."PersistenciaWeb.war".INSTALL: Failed to process phase INSTALL of deployment "PersistenciaWeb.war"
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0_25]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0_25]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_25]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011047: Component class persistencia.modelo.LivroRepositorio for component LivroRepositorio has errors: 
JBAS011440: Can't find a persistence unit named null in deployment "PersistenciaWeb.war"
	at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:169)
	at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
	at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:162)
	at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:155)
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
	... 5 more

16:23:24,398 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "PersistenciaWeb.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"PersistenciaWeb.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"PersistenciaWeb.war\".INSTALL: Failed to process phase INSTALL of deployment \"PersistenciaWeb.war\""}}
16:23:24,435 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015877: Stopped deployment PersistenciaWeb.war in 47ms
16:23:24,441 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.deployment.unit."PersistenciaWeb.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."PersistenciaWeb.war".INSTALL: Failed to process phase INSTALL of deployment "PersistenciaWeb.war"

16:23:24,448 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"PersistenciaWeb.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"PersistenciaWeb.war\".INSTALL: Failed to process phase INSTALL of deployment \"PersistenciaWeb.war\""}}}}

Não tenho nem ideia de como resolver isso se alguém tiver uma solução desde já agradeço

Veja esta linha

Can't find a persistence unit named null in deployment "PersistenciaWeb.war"  

Entende o que ela diz?

Poste a entidade do erro: persistencia.modelo.LivroRepositorio

Segue a entidade do erro

package persistencia.modelo;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;

import persistencia.dao.Livro;


@Stateless
public class LivroRepositorio {

	@PersistenceContext
	private EntityManager entityManager;
	
	
	public void adicionar(Livro livro){
		
		this.entityManager.persist(livro);
	}
	
	public List<Livro> getLivros(){
		TypedQuery<Livro> query = this.entityManager.createQuery("select x from Livro x",Livro.class);
		
		return query.getResultList();
	}

	public EntityManager getEntityManager() {
		return entityManager;
	}

	public void setEntityManager(EntityManager entityManager) {
		this.entityManager = entityManager;
	}
	
}

Coloque o unitName no @PersistenceContext

Fiz o que você me falou botei o unitName=“K19” agora o erro é o seguinte

19:17:09,609 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.deployment.unit."PersistenciaWeb.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."PersistenciaWeb.war".INSTALL: Failed to process phase INSTALL of deployment "PersistenciaWeb.war"
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0_25]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0_25]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_25]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011047: Component class persistencia.modelo.LivroRepositorio for component LivroRepositorio has errors: 
JBAS011440: Can't find a persistence unit named K19 in deployment "PersistenciaWeb.war"
	at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:169)
	at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
	at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:162)
	at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:155)
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
	... 5 more

19:17:09,650 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "PersistenciaWeb.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"PersistenciaWeb.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"PersistenciaWeb.war\".INSTALL: Failed to process phase INSTALL of deployment \"PersistenciaWeb.war\""}}
19:17:09,657 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.deployment.unit."PersistenciaWeb.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."PersistenciaWeb.war".INSTALL: Failed to process phase INSTALL of deployment "PersistenciaWeb.war"

19:17:09,677 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015877: Stopped deployment PersistenciaWeb.war in 12ms
19:17:09,692 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"PersistenciaWeb.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"PersistenciaWeb.war\".INSTALL: Failed to process phase INSTALL of deployment \"PersistenciaWeb.war\""}}}}

Estou com o persistence.xml dentro do META-INF

segue a classe alterada

package persistencia.modelo;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;

import persistencia.dao.Livro;


@Stateless
public class LivroRepositorio {

	@PersistenceContext(unitName="K19")
	private EntityManager entityManager;
	
	
	public void adicionar(Livro livro){
		
		this.entityManager.persist(livro);
	}
	
	public List<Livro> getLivros(){
		TypedQuery<Livro> query = this.entityManager.createQuery("select x from Livro x",Livro.class);
		
		return query.getResultList();
	}

	public EntityManager getEntityManager() {
		return entityManager;
	}

	public void setEntityManager(EntityManager entityManager) {
		this.entityManager = entityManager;
	}
	
}

Sinceramente não sei dizer o que está errado, mas creio que ele não está encontrando seu persistence.xml

Como está a estrutura de diretórios do projeto? Tem como printar e upar aqui? Outra coisa, o diretório META-INF em questão deve ser criado na raiz dos fontes.

Segue a estrutura do meu projeto. Realmente ele não encontra o persistence.xml é estranho porque eu acho que está tudo nos locais certos. Eu criei um Dinamic Web Project no eclipse com jsf 2.0

PersistenciaWeb
 -src
     -persistencia.dao
         -Livro.java
      -persistencia.modelo
          -LivroRepositorio.java
       -persistencia.web
            -LivroMB.java
 -WebContent
     -livro.xhtml
     -META-INF
         -MANIFEST.MF
         -persistence.xml
      -WEB-INF
         -faces-config.xml
         -lib
         -web.xml

Ai está a estrutura básica realmente já procurei em outros forums e tudo não acho a resposta ta meio complicado esse problema. Obrigado a todos pelas respostas já tem me dado uma clareada no problema pelo menos.

Finalmente consegui depois de muito esforço e pesquisa vlww pela dica drsmachado realmente o meu meta-inf tava em outro diretório dentro de webcontet tinha que estar dentro do src agora ficou assim a organização dos diretórios

PersistenciaWeb  
-src  
     -persistencia.dao  
         -Livro.java  
      -persistencia.modelo  
          -LivroRepositorio.java  
       -persistencia.web  
            -LivroMB.java  
 -META-INF
     -persistence.xml
-WebContent  
     -livro.xhtml  
     -META-INF  
         -MANIFEST.MF  
      -WEB-INF  
         -faces-config.xml  
         -lib  
         -web.xml  

Fica ai a dica para quem teve o mesmo problema que o meu flwww e vlww a todos pela ajuda

3 curtidas