| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/08/2009 10:07:58
|
fabioebner
GUJ Ranger
![[Avatar]](/images/avatar/009c434cab57de48a31f6b669e7ba266.jpg)
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/08/2009 10:20:51
|
Leozin
JWizard
![[Avatar]](/images/avatar/5dca4c6b9e244d24a30b4c45601d9720.png)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/08/2009 11:09:20
|
leosouzabh
JavaTeenager
![[Avatar]](/images/avatar/9b40aee76034c9543ceacba5df759a1d.jpg)
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!! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/08/2009 11:55:00
|
fabioebner
GUJ Ranger
![[Avatar]](/images/avatar/009c434cab57de48a31f6b669e7ba266.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/08/2009 13:16:34
|
fabioebner
GUJ Ranger
![[Avatar]](/images/avatar/009c434cab57de48a31f6b669e7ba266.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/08/2009 16:45:42
|
Leozin
JWizard
![[Avatar]](/images/avatar/5dca4c6b9e244d24a30b4c45601d9720.png)
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 |
|
|
 |
|
|