EJB - org.xml.sax.SAXException - problemas com persistence.xml

Olá pessoal,
estou com problema ao tentar montar meus modelos usando o EJB 3.1 no jboos6.0, quem puder me ajudar agradeço.

Meu projeto EJB de nome DA_Core.jar está sendo contruido:

META-INF
-------persistence.xml
-------MANIFEST.MF
modelo e ejbs
log4j.properties

Meu arquivo persistence.xml:

[code]<?xml version=“1.0” encoding=“UTF-8”?>
<persistence version="1.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_1_0.xsd”>
<persistence-unit name=“JPA” transaction-type=“RESOURCE_LOCAL”>

	&lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
	&lt;!-- quem vai fornecer a implementacao da JPA - no caso, o Hibernate --&gt;
	&lt;properties&gt;

		&lt;property name="hibernate.archive.autodetection" value="class, hbm" /&gt;

		&lt;!-- opcional - estrategia de geracao das tabelas --&gt;
		&lt;property name="hibernate.hbm2ddl.auto" value="update" /&gt;

		&lt;!-- driver JDBC utilizado para conectar no banco banco --&gt;
		&lt;property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /&gt;
		
		&lt;property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/teste" /&gt;

		&lt;property name="hibernate.connection.username" value="root" /&gt;

		&lt;property name="hibernate.connection.password" value="123" /&gt;

		&lt;!-- variacao de SQL utilizada pelo banco --&gt;
		&lt;property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /&gt;

		&lt;!-- mostra as consultas enviadas para o banco --&gt;
		&lt;property name="hibernate.show_sql " value="true" /&gt;

		&lt;!-- formata as consultas mostradas --&gt;
		&lt;property name="hibernate.format_sql" value="true" /&gt;

	&lt;/properties&gt;
&lt;/persistence-unit&gt;

</persistence>
[/code]
meu projeto está sendo construído por um build.xml e é deployado para a pasta do jboss6.0. Mas ao tentar subir o projeto, o jboss lança um o seguinte erro:

ERROR [AbstractKernelController] Error installing to Parse: name=vfs:/jboss-6.0/server/default/deploy/DA_Core.jar state=PreParse mode=Manual requiredState=Parse: org.jboss.deployers.spi.DeploymentException: Error creating managed object for vfs:///infra/jboss-6.0/server/default/deploy/DA_Core.jar

Caused by: org.xml.sax.SAXException: Content is not allowed in prolog. @ vfs:///jboss-6.0/server/default/deploy/DA_Core.jar/META-INF/persistence.xml[1,1]

ERROR [org.jboss.system.server.profileservice.ProfileServiceBootstrap] Failed to load profile: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
DEPLOYMENTS IN ERROR:
Deployment “/jboss-6.0/server/default/deploy/DA_Core.jar” is in error due to the following reason(s): org.xml.sax.SAXException:
Content is not allowed in prolog. @ /infra/jboss-6.0/server/default/deploy/DA_Core.jar/META-INF/persistence.xml[1,1]

Parte do erro foi por causa de uns mapeamentos errados que eu fiz no modelo, outra parte do erro eu na verdade não descobri ainda. Mas não era no persistence.xml como eu pensava.

Fazendo:

@PersistenceContext(unitName = "JPA") private EntityManager em;

não consigo fazer funcionar, mas se eu substituo isso por:

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("JPA"); EntityManager em = entityManagerFactory.createEntityManager();

Dá certo.

Não sei ainda o porque não funciona, imagino que seja algum jar do ejb desatualizado ou algo assim.

Quando você tem transaçoes gerenciadas pela aplicação (RESOURCE_LOCAL) no persistence.xml você não pode injetar o EntityManager…

Você deve obter ele através de um EntityManagerFactory, por isso que seu segundo exemplo de código deu certo… Além disso com RESOURCE_LOCAL suas transações devem ser demarcadas por um EntityTransaction obtido pelo seu EntityManager…

O problema aqui foi que jboss não conseguiu ler o persistence.xml. Não foi preciso mudar nada do conteúdo do meu persistence.xml, era só criar um outro arquivo persistence.xml. Imagino que quando eu criei o arquivo .xml a assinatura que o sistema deu pro meu arquivo não tenha sido a de um arquivo xml, logo o jboos não o entendia como tal.