Transações - MySQL + EJB

1 resposta
A

Oá, pessoal
To com um problema. Uso EJB para fazer controle de transações na minha aplicação, sobre banco de dados MySQL 5.

Pois bem … a idéia é fazer vários updates e inserts no mesmo método do EJB, e SÓ comitar se tudo correr bem, ou seja, ao final do processo. Ocorrendo qualquer problema, em circunstâncias normais, o próprio EJB deveria fazer esse controle e rolbecar tudo.
Configurei o EJB pra fazer isso, mas não tá acontecendo …

Meu ejb-jar

<session >
         <description><![CDATA[Description for Recebimento]]></description>
         <display-name>Name for Recebimento</display-name>
         <ejb-name>Recebimento</ejb-name>
         <home>com.business.session.interfaces.RecebimentoHome</home>
         <remote>com.business.session.interfaces.Recebimento</remote>
         <ejb-class>com.business.session.ejb.RecebimentoSession</ejb-class>
         <session-type>Stateless</session-type>
         <transaction-type>Container</transaction-type>
      </session>

Meu método, que quero executar, no EJB.

public boolean incluirDocumento(DocumentoVO documentoVO) throws EJBException {
		try {
			PrcRecebimentoDAO prcRecebimentoDAO = new PrcRecebimentoDAO();
			if (prcRecebimentoDAO.insertDocumento(documentoVO)) {
				PrcContabilidadeDAO prcContabilidadeDAO;
				
				Iterator itPlanilhas = documentoVO.getListaPlanilhas().iterator();
				while (itPlanilhas.hasNext()) {
					PlanilhaVO planilhaVO = (PlanilhaVO)itPlanilhas.next();
					prcContabilidadeDAO = new PrcContabilidadeDAO();
					if (!prcContabilidadeDAO.insertPlanilha(planilhaVO)) {		
								throw new EJBException();
						}	
				}
				return true;
			} else {
				return false;
			}
		} catch (DAOException e) {
			e.printStackTrace();
			throw new EJBException();
		}
	}

Como dá pra ver, há dois INSERTS. Um em DOCUMENTO (primeira chamada ao DAO), e outro em PLANILHAS. Acontece, que, ocorrendo erro no INSERT em PLANILHAS, ainda assim o INSERT em DOCUMENTO é comitado, quando não deveria.

Não sei se é problema no EJB, no MySQL, ou no JDBC. Já pesquisei, mas não achei nada que possa me ajudar.

Obrigado.

1 Resposta

M

Por favor não duplique tópicos, desta forma estara contribuindo para que sua dúvida não seja esclarecida. :joia:

Acompanhe neste tópico: http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=28426&highlight=

:okok:

Criado 24 de junho de 2006
Ultima resposta 25 de jun. de 2006
Respostas 1
Participantes 2