Qual a diferença e relação entre persistence.xml e o arquivo datasource do jboss?

Pessoa,
qual e a relação entre esses dois arquivos no jboss? Eu configurei meu persistence.xml e ao iniciar o jboss ele me solicita o datasource configurado tambem, porém não entendi, pq as informações que ele me solicita tambem estão no persistence.xml, por isso fiquei com dúvida a respeito das responsabilidades de cada arquivo e suas relações…

Vi em alguns tutoriais que o jboss necessita do arquivo datasource e ate configurei mais a minha duvida é esta citada acima.

persistence.xml você guarda as informações sobre o persistence unit que é o contexto de classes, conexões e tudo mais.

O jboss para fazer o trabalho bem feito solicita que o datasource esteja dentro do domínio dele (em um arquivo a parte) para melhorar desempenho, fazer pool e assim vai.

datasource tem configurações de DB, persistence pode ter também mas por boa prática é melhor apontar para um DS que está dentro do servidor.

[quote=jakefrog]persistence.xml você guarda as informações sobre o persistence unit que é o contexto de classes, conexões e tudo mais.

O jboss para fazer o trabalho bem feito solicita que o datasource esteja dentro do domínio dele (em um arquivo a parte) para melhorar desempenho, fazer pool e assim vai.

datasource tem configurações de DB, persistence pode ter também mas por boa prática é melhor apontar para um DS que está dentro do servidor.[/quote]
Certo,
então eu posso remover o driver e a url de conexao com o banco do meu persistence e colocar no ds ?

[quote=diegohsi]Certo,
então eu posso remover o driver e a url de conexao com o banco do meu persistence e colocar no ds ?[/quote]Você tentou? Deu algum erro? [=

[quote=jakefrog][quote=diegohsi]Certo,
então eu posso remover o driver e a url de conexao com o banco do meu persistence e colocar no ds ?[/quote]Você tentou? Deu algum erro? [=[/quote]
Voltei,
fiz algumas tentativas, mais não esta construindo minha aplicação corretamente no jboss.

de uma olhada por favor pra ver se pode me dar uma luz…
persistence.xml
tentei com java:/ sem e ainda persiste.

[code]

<persistence-unit name="catalogoclientes" 	transaction-type="JTA">
	<provider>org.hibernate.ejb.HibernatePersistence</provider>
	<jta-data-source>java:/sqlite-ds</jta-data-source>
	<class>br.com.catalogoclientes.model.Pessoa</class>
	<class>br.com.catalogoclientes.model.PessoaFisica</class>
	<class>br.com.catalogoclientes.model.PessoaJuridica</class>
	<properties>
		<property name="hibernate.connection.driver_class" value="org.sqlite.JDBC"/>
		<property name="hibernate.connection.url" value="jdbc:sqlite:cliente"/>
		<!-- <property name="javax.persistence.jdbc.driver" value="org.sqlite.JDBC" /> -->
		<!-- <property name="javax.persistence.jdbc.url" value="jdbc:sqlite:cliente" /> -->
		<property name="hibernate.dialect" value="br.com.catalogoclientes.util.SQLiteDialect" />
		<property name="hibernate.show_sql" value="true" />
		<property name="hibernate.format_sql" value="true" />
		
		<!-- Opção habilitada apenas para teste - Retirar em produção -->
		<property name="hibernate.hbm2ddl.auto" value="update"/>
	</properties>
</persistence-unit>

[/code]

sqlite-ds.xml

<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>jdbc/catalogoclientes-ds</jndi-name> <connection-url>jdbc:sqlite:cliente</connection-url> <driver-class>org.sqlite.JDBC</driver-class> <user-name></user-name> <password></password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name> <metadata> <type-mapping></type-mapping> </metadata> </local-tx-datasource> </datasources>

log do jboss

[code]persistence.units:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,unitName=catalogoclientes
State: NOTYETINSTALLED
I Depend On:
jboss.jca:name=sqlite-ds,service=DataSourceBinding

2012-07-27 16:28:28,917 DEBUG [org.jboss.system.ServiceController] removing jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3 from server
2012-07-27 16:28:28,917 DEBUG [org.jboss.system.ServiceController] Context not removed, it is recording dependencies: ObjectName: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3
State: NOTYETINSTALLED
Depends On Me:
jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=br/com/catalogoclientes/remote/PessoaBO,service=EJB3

2012-07-27 16:28:28,917 DEBUG [org.jboss.system.ServiceController] removing service: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3
2012-07-27 16:28:28,917 DEBUG [org.jboss.system.ServiceController] no need to remove jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3 from server
2012-07-27 16:28:28,917 WARN [org.jboss.ejb3.JmxKernelAbstraction] jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3 is not registered
2012-07-27 16:28:28,917 DEBUG [org.jboss.system.ServiceController] stopping service: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=br/com/catalogoclientes/remote/PessoaBO,service=EJB3
2012-07-27 16:28:28,917 DEBUG [org.jboss.system.ServiceController] destroying service: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=br/com/catalogoclientes/remote/PessoaBO,service=EJB3
2012-07-27 16:28:28,917 DEBUG [org.jboss.system.ServiceController] removing service: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=br/com/catalogoclientes/remote/PessoaBO,service=EJB3
2012-07-27 16:28:28,917 DEBUG [org.jboss.system.ServiceController] Removing context for nonexistent service it is no longer recording dependencies: ObjectName: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3
State: NOTYETINSTALLED

deployer: null
status: null
state: CONSTRUCTED
watch: file:/C:/jboss-4.2.3/server/default/tmp/deploy/tmp5824689318659151130catalogoClientesEAR.ear-contents/catalogoClientesEJB.jar
altDD: null
lastDeployed: 0
lastModified: 0
mbeans:
, isDirectory: false

2012-07-27 16:28:28,974 DEBUG [org.jboss.deployment.MainDeployer] Begin deployment start file:/C:/jboss-4.2.3/server/default/tmp/deploy/tmp5824689318659151130catalogoClientesEAR.ear-contents/catalogoClientesEJB.jar
2012-07-27 16:28:28,974 DEBUG [org.jboss.ejb3.EJB3Deployer] start application, deploymentInfo: org.jboss.deployment.DeploymentInfo@fda0982 { url=file:/C:/jboss-4.2.3/server/default/tmp/deploy/tmp5824689318659151130catalogoClientesEAR.ear-contents/catalogoClientesEJB.jar }
deployer: MBeanProxyExt[jboss.ejb3:service=EJB3Deployer]
status: Starting
state: START_DEPLOYER
watch: file:/C:/jboss-4.2.3/server/default/tmp/deploy/tmp5824689318659151130catalogoClientesEAR.ear-contents/catalogoClientesEJB.jar
altDD: null
lastDeployed: 1343417308932
lastModified: 1343417308927
mbeans:
, short name: catalogoClientesEJB.jar, parent short name: catalogoClientesEAR.ear

— MBeans waiting for other MBeans —
ObjectName: persistence.units:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,unitName=catalogoclientes
State: NOTYETINSTALLED
I Depend On:
jboss.jca:name=sqlite-ds,service=DataSourceBinding

ObjectName: persistence.units:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,unitName=catalogoclientes
State: NOTYETINSTALLED
I Depend On:
jboss.jca:name=sqlite-ds,service=DataSourceBinding
Depends On Me:
jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3

ObjectName: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3
State: NOTYETINSTALLED
I Depend On:
persistence.units:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,unitName=catalogoclientes
Depends On Me:
jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=br/com/catalogoclientes/remote/PessoaBO,service=EJB3

ObjectName: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=br/com/catalogoclientes/remote/PessoaBO,service=EJB3
State: NOTYETINSTALLED
I Depend On:
jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3

— MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM —
ObjectName: jboss.jca:name=sqlite-ds,service=DataSourceBinding
State: NOTYETINSTALLED
Depends On Me:
persistence.units:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,unitName=catalogoclientes
persistence.units:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,unitName=catalogoclientes[/code]

É muito ruim quando não sabemos direito o porque das coisas, ainda to boiando nessa arquitetura do jboss, ejb, jpa. Comprei o livro ejb3 in action e chegará dia 30, mais ate espero que vcs me ajudem…

Só faltou falar qual o erro! =D

myRemoteObj not bound
seguido de NullPointerException

Dá uma olhada aqui na página 6:
Aplicação Web Completa JSF EJB JPA JAAS.
Mostra como criar datasource e persistence.xml

Se você estiver utilziando jboss 7.1 você terá que adicionar o java:/ alguma coisa no standalone.xml. Vai aparecer na mensagem de erro.

[quote=jakefrog]Dá uma olhada aqui na página 6:
Aplicação Web Completa JSF EJB JPA JAAS.
Mostra como criar datasource e persistence.xml

Se você estiver utilziando jboss 7.1 você terá que adicionar o java:/ alguma coisa no standalone.xml. Vai aparecer na mensagem de erro.[/quote]
Obrigado jakefrog, eu tinha vasculhado seu blog e tirei muitas duvidas la, porém minha aplicação é desktop mvc, ainda sim. Mesmo assim da pra tirar muitas duvidas la, e estou
utilizando jboss 4.2.3

[quote=diegohsi][quote=jakefrog]Dá uma olhada aqui na página 6:
Aplicação Web Completa JSF EJB JPA JAAS.
Mostra como criar datasource e persistence.xml

Se você estiver utilziando jboss 7.1 você terá que adicionar o java:/ alguma coisa no standalone.xml. Vai aparecer na mensagem de erro.[/quote]
Obrigado jakefrog, eu tinha vasculhado seu blog e tirei muitas duvidas la, porém minha aplicação é desktop mvc, ainda sim. Mesmo assim da pra tirar muitas duvidas la, e estou
utilizando jboss 4.2.3[/quote]Eita, calma aí que agora eu ñ entendi nada.
Sua aplicação é Desktop ou Web?

Se for desktop, aí você coloca as configs dentro do persistence. Se for web você coloca dentro do datasource, no caso do jboss 4.2 é um arquivo que deve ficar junto do EAR se for do 7+ aí vocÊ coloca no standalone.xml.

[quote=jakefrog][quote=diegohsi][quote=jakefrog]Dá uma olhada aqui na página 6:
Aplicação Web Completa JSF EJB JPA JAAS.
Mostra como criar datasource e persistence.xml

Se você estiver utilziando jboss 7.1 você terá que adicionar o java:/ alguma coisa no standalone.xml. Vai aparecer na mensagem de erro.[/quote]
Obrigado jakefrog, eu tinha vasculhado seu blog e tirei muitas duvidas la, porém minha aplicação é desktop mvc, ainda sim. Mesmo assim da pra tirar muitas duvidas la, e estou
utilizando jboss 4.2.3[/quote]Eita, calma aí que agora eu ñ entendi nada.
Sua aplicação é Desktop ou Web?

Se for desktop, aí você coloca as configs dentro do persistence. Se for web você coloca dentro do datasource, no caso do jboss 4.2 é um arquivo que deve ficar junto do EAR se for do 7+ aí vocÊ coloca no standalone.xml.[/quote]
Minha aplicação é Desktop swing + ejb + jpa, e o pessoal aqui utiliza o persistence.xml + o datasource, fiz as configs aqui até que mudou o aviso do jboss, e confirmando estou usando o 4.2.3

Achei estranho isso aqui:

[code] <jta-data-source>java:/sqlite-ds</jta-data-source>

<jndi-name>jdbc/catalogoclientes-ds</jndi-name>
[/code]

Os nomes devem coincidir pra você usar o datasource. O java: antes você pode obter usando a tag use-java-context no datasource.

Outra coisa: se você configura a conexão no JBoss não precisa configurar no persistence.xml, então pode remover o driver e a url de conexão deste.

Ah! E o log que você postou é o boot.log, é melhor olhar o server.log também.

Uma dúvida: algum motivo pra você não utilizar um JBoss mais recente (nem que seja o 5.x)?

[quote=Ataxexe]Achei estranho isso aqui:

[code] <jta-data-source>java:/sqlite-ds</jta-data-source>

<jndi-name>jdbc/catalogoclientes-ds</jndi-name>
[/code]

Os nomes devem coincidir pra você usar o datasource. O java: antes você pode obter usando a tag use-java-context no datasource.

Outra coisa: se você configura a conexão no JBoss não precisa configurar no persistence.xml, então pode remover o driver e a url de conexão deste.

Ah! E o log que você postou é o boot.log, é melhor olhar o server.log também.

Uma dúvida: algum motivo pra você não utilizar um JBoss mais recente (nem que seja o 5.x)?[/quote]
Eu havia feito a correção nos nomes já. Utilizo o 4.2.3 devido a aplicação do pessoal aqui utilizar. Estou imergindo na tecnologia deles ainda, e meu primeiro contato com servidor de aplicação e essas arquiteturas EE. entao estão brotando duvidas sobre isso, por isso compre um livro pra ver se me atento a essas caracteristicas do java EE. Agora o problema mudou,

[code]— MBeans waiting for other MBeans —
ObjectName: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3
State: FAILED
Reason: java.lang.RuntimeException: It is illegal to inject an EXTENDED PC into something other than a SFSB
I Depend On:
persistence.units:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,unitName=catalogoclientes
Depends On Me:
jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=br/com/catalogoclientes/remote/PessoaBO,service=EJB3

ObjectName: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=br/com/catalogoclientes/remote/PessoaBO,service=EJB3
State: NOTYETINSTALLED
I Depend On:
jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3

— MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM —
ObjectName: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3
State: FAILED
Reason: java.lang.RuntimeException: It is illegal to inject an EXTENDED PC into something other than a SFSB
I Depend On:
persistence.units:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,unitName=catalogoclientes
Depends On Me:
jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=br/com/catalogoclientes/remote/PessoaBO,service=EJB3[/code]

Pessoal,
removi essa anotação do meu controller

removi ela o erro mudou, e se eu deixo mostra o aviso no server.log acima

MBeans waiting for other MBeans --- ObjectName: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=PessoaHBDAO,service=EJB3 State: FAILED Reason: java.lang.RuntimeException: It is illegal to inject an EXTENDED PC into something other than a SFSB I Depend On: persistence.units:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,unitName=catalogoclientes Depends On Me: jboss.j2ee:ear=catalogoClientesEAR.ear,jar=catalogoClientesEJB.jar,name=br/com/catalogoclientes/remote/PessoaBO,service=EJB3