Boa tarde pessoal, estou criando uma aplicação que utilizará EJB, JPA, Mysql com o JBoss 7.1.1.
O que acontece é que ao realizar o persist de um objeto, o mesmo não lança nenhuma exceção mas também não grava nada no banco. Vou postar os trechos de código e configurações que acho mais importante para ver se podem me ajudar.
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="nycstorePU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:jboss/datasources/MySqlDSNYCStore</jta-data-source>
<class>br.com.nycstore.core.entities.Sale</class>
<class>br.com.nycstore.core.entities.Email</class>
<class>br.com.nycstore.core.entities.PaymentType</class>
<class>br.com.nycstore.core.entities.City</class>
<class>br.com.nycstore.core.entities.Purchase</class>
<class>br.com.nycstore.core.entities.Grade</class>
<class>br.com.nycstore.core.entities.Payment</class>
<class>br.com.nycstore.core.entities.PaymentParcel</class>
<class>br.com.nycstore.core.entities.Register</class>
<class>br.com.nycstore.core.entities.SaleItem</class>
<class>br.com.nycstore.core.entities.Receipt</class>
<class>br.com.nycstore.core.entities.Address</class>
<class>br.com.nycstore.core.entities.ReceiptType</class>
<class>br.com.nycstore.core.entities.Groups</class>
<class>br.com.nycstore.core.entities.ReceiptParcel</class>
<class>br.com.nycstore.core.entities.Phone</class>
<class>br.com.nycstore.core.entities.Product</class>
<class>br.com.nycstore.core.entities.PurchaseItem</class>
<class>br.com.nycstore.core.entities.States</class>
<class>br.com.nycstore.core.entities.Login</class>
<properties>
<property name="jboss.as.jpa.providerModule" value="org.eclipse.persistence.jpa" />
</properties>
</persistence-unit>
</persistence>
datasource e driver dentro de standalone.xml (JBoss)
<datasource jta="true" jndi-name="java:jboss/datasources/MySqlDSNYCStore" pool-name="MySQLDSNYCStore" enabled="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:mysql://localhost:3306/NYCStore</connection-url>
<driver>mysql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<prefill>true</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<security-domain>security-encrypted-NYCStore</security-domain>
</security>
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="mysql" module="mysql.jdbc">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
Assinatura da classe de business
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
@Stateless
public class RegisterBusinessImpl extends GenericBusiness implements RegisterBusiness {
Assinatura do método no business
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void save(Register register, ApplicationType applicationType) throws BusinessException, ValidateException {
Classe de persistencia
@PersistenceContext(unitName="nycstorePU")
private EntityManager entityManager;
@Override
public void persist(T entity) throws DAOException {
try {
log.debug("Start save entity " + entity);
this.entityManager.persist(entity);
log.debug("End save entity " + entity);
} catch (javax.persistence.PersistenceException pe) {
log.debug("Erro ao salvar entity = " + entity, pe);
throw new DAOException("Erro ao salvar", pe);
} catch (Exception e) {
log.debug("Erro ao salvar entity = " + entity, e);
throw new DAOException("Erro ao salvar", e);
}
}
Aparentemente é como se ele não estivesse trabalhando com transação, mas o mais estranho é que não lança nenhuma Exception.
Qualquer ajuda é bem vinda.