Help Spring Propagando Transacao 2 Projetos Diferentes  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
fabioebner
GUJ Ranger
[Avatar]

Membro desde: 10/06/2005 14:07:00
Mensagens: 821
Offline

Pessoal, estou com o seguinte problema, tenho 2 projetos (Projeto1 e Projeto2) eles podem, tanto rodar separadamente, como o Projeto1 dentro do Projeto2, ate ai perfeito, porem qual e o problema nao sei como posso fazer para propagar a minha transacao entre eles, eu coloquei no meu projeto 1

significa que eu preciso de uma transacao ja aberta,
o coloquei no meu Projeto2


porem nao esta funcionando, qdo eu rodo o meu projeto 2 ele da erro qdo chega no primeiro :
org.springframework.transaction.IllegalTransactionStateException: No existing transaction found for transaction marked with propagation 'mandatory'


nao sei se tem q refernciar alguma coisa no xml do projeto 1 falando q utiliza o projeto2 ou alguma outra coisa

alguem pode me ajudar??


valeu
Leozin
JWizard
[Avatar]

Membro desde: 18/06/2005 21:01:26
Mensagens: 2310
Localização: São Paulo/SP
Online

É que é o seguinte cara.

Todo bean que você cria como @Transactional DEVE ser criado pelo Spring.

Além disso, o maior problema está nessa linha aqui:



O que tu pode tentar é fazer isso:

- Colocar o teu segundo projeto no mesmo classpath do primeiro
* Se for no eclipse, botão direito no teu projeto > Properties > Java Build Path. Clique na aba Project e clique em Add.
- Adicionar uma propriedade na classe que tem a transação required

- No teu applicationContext.xml (ou sei lá, beans.xml ou o nome que tu achou legal), declarar a classe que terá a Transaction mandatory

- Pra finalizar, ao invéz de chamar o método main, chame o método "novo" diretamente na ClasseQueTemMandatory

Vê aí se dá certo.

Abraço

http://www.leozin.com.br/blog
[ICQ]
leosouzabh
JavaTeenager
[Avatar]

Membro desde: 28/03/2006 12:04:34
Mensagens: 193
Offline

aproveitando o assunto vai ai uma duvida!
Sempre usei transação por aspecto criando um tx:advice no meu application-context.xml
Esta forma que o fabioebner esta trabalhando com transação é uma forma digamos que manual de controlar as transações ?

Procure sempre o melhor!!
[MSN]
fabioebner
GUJ Ranger
[Avatar]

Membro desde: 10/06/2005 14:07:00
Mensagens: 821
Offline

Leozin entendi voutentar fazer isso.. porem tenho uma duvida no meu Main e aonde eu dou o Context cx = .. antes de chamar a classe q tem o MANDATORY eu nao tenho q ler o meu xml?? por isso chamei a main pq como estou so testando e nela q eu chamo isso entendeu??

abracos
fabioebner
GUJ Ranger
[Avatar]

Membro desde: 10/06/2005 14:07:00
Mensagens: 821
Offline

mulhekao.. consegui. fiz aquilo q vc falou q ao invez de chamar a main chamar direto a classe q insere. porem tive q no meu applicationContext.xml do projeto 1 mapear as classes para o hibernate do projeto2.. mas foi certinho, ele propagou, qdo eu dei rollback no projeto1 ele voltou no projeto 2 tbm..
perfeito


valeu
Leozin
JWizard
[Avatar]

Membro desde: 18/06/2005 21:01:26
Mensagens: 2310
Localização: São Paulo/SP
Online

leosouzabh wrote:aproveitando o assunto vai ai uma duvida!
Sempre usei transação por aspecto criando um tx:advice no meu application-context.xml
Esta forma que o fabioebner esta trabalhando com transação é uma forma digamos que manual de controlar as transações ?


Não, manual seria se tu usasse um TransactionTemplate.

Essa maneira que ele faz é quase igual a tua. A diferença é que ele define quais os métodos que serão transacionais usando as anotações, você usa pointcuts do aop. Eu até me arriscaria a dizer que tanto o @Transactional e aop-based são declarativos, mas como o @Transactional tu precisa alterar a classe, então deixa de ser declarativo.

Se o sistema é pequeno, usar anotações eu acho que é mais sussa. Mas se tiver várias classes transacionais, acho que usar aop fica mais enxuto. Só um detalhe: você pode combinar as transações, por exemplo:



Imagina que em uma das classes você quer que ela não seja transacional. O que você pode fazer é ativar com que as transações possam ser configuradas por Annotations



Aí é só ir na tua classe e colocar um



E pronto

http://www.leozin.com.br/blog
[ICQ]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team