Saudações a todos,
Estou com o seguinte problema: to desenvolvendo um projeto usando Seam. Uso o JBossDevStudio, que cria quase todos os artefatos como xml's de configuração. A aplicação roda perfeitamente na máquina de desenvolvimento, fazendo conexão com o Mysql. Para a pasta deploy do JBoss mando o EAR e um arquivo que configura o acesso ao banco de dados.
junkDatasourse-dx.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE datasources
PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"
"http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">
<datasources>
<local-tx-datasource>
<jndi-name>junkDatasource</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/base</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>user</user-name>
<password>senha</password>
</local-tx-datasource>
</datasources>
O arquivo persistence.xml está assim:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for dev profile -->
<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_1_0.xsd"
version="1.0">
<persistence-unit name="junk">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/junkDatasource</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:/junkEntityManagerFactory"/>
</properties>
</persistence-unit>
</persistence>
O problema é que quando mando o EAR e o xml acima para o servidor web (hospedado na Locaweb) obtenho a seguinte exceção:
java.lang.IllegalArgumentException: EntityManagerFactory not found in JNDI : java:/junkEntityManagerFactory
Consigo acesar a base de dados fazendo uma busca direta pelo JNDI:
Context lautx = (Context) context.lookup("java:");
ds = (DataSource)lautx.lookup("jdbc/junkDatasource");
<jndi-name>junkDatasource</jndi-name>