
0

0
22/12/2011 16:23
Oi Maykoone,
quais os principais problemas que você está tendo? O que eu já fiz foi o seguinte: visto que tinha toda a lógica de negócio, persistência, etc pré-pronta em Grails, simplesmente desinstalava o plugin do Hibernate e jogava meu código fonte ou jars dentro do projeto.
Em seguida, definia as configurações do Spring em cima das quais referenciava meu código legaod.
Henrique Lobo Weissmann (Kico)
Pontos: 1485

0

0
22/12/2011 22:57
Então Kico, o estranho que não acontece nada, ou pelo menos o que eu espero! Bom primeiro deu um erro ao tentar importar minha entidade na página, mesmo ela estando na pasta lib, mas tirei esse import só pra ver o que ocorria. Ao chamar a action list no meu controller, tento buscar do banco através do meu service java que injetei no controller e simplesmente vai para a página mais não mostra o grid com os dados.
Também desinstalei o plugin do hibernate. Será que pode ser os nomes que dei para os meus spring beans java, por exemplo, tenho o ContatoService e o método listar dele se chama findAll, será que isso pode estar entrando em conflito com a convenção de nomes do Grails, que pela sua natureza dinâmica não está pegando esse meu bean, porque quando depuro vou ver o que tem na referência
def contatoService
ela aponta para um Object, quando fiz os testes no java ela apontava para um proxy.
Resumindo, acho que o Grails tá criando qualquer objeto na minha referência do service, e como o método que eu estou chamando tem mesmo nome que os métodos dinâmicos do GORM (apesar de ter desinstalado o hibernate) ele simplesmente não faz nada.
Não sei se acabei complicando mais ou tô comendo bola mesmo! mas é errando que se aprende né.
posso postar meus códigos se quiser. vlw
maykoone
Pontos: 16

0

0
29/12/2011 18:07
Tô vendo que essa integração não é nada fácil.
O projeto java funciona que uma beleza, o Spring toma conta de tudo, se integra beleza com o JPA, mas é exportar o jar do projeto colocar no lib do meu projeto grails que o pesadelo começa!
primeiro, achei que o Grails ia reconhecer o meu xml do spring que tá dentro do jar, apenas sendo necessário eu realizar o import do mesmo no resources.xml. Como assim não foi, peguei toda a configuração e joguei no resources.xml mesmo, dai parece que o Spring não encontra o persistence.xml que também está dentro do jar, consequentemente no classpath para criar o transactionManager dando o seguinte erro:
"No persistence provider for EntityManager..."
Como o Grails é construido sobre o Spring, achei que não ia ter problemas já no projeto java funcionou, achei que meu maior desafio ia ser integrar o Spring com o JPA e depois no Grails ia ser mole, mas está sendo ao contrário!!
Bom, se alguém tiver alguma sugestão, pois estou me batendo muito com isso.
maykoone
Pontos: 16

1

0
29/12/2011 20:49
Oi maykoone,
eu já trabalhei em um projeto que é bem próximo do que você está fazendo. Vou te descrever com detalhes como fiz.
No caso, o projeto era dividido em dois componentes: toda a lógica de negócio estava contida em código legado Java que já usava a dobradinha Hibernate + Spring.
Na outra ponta, eu tinha o Grails, que eu usava apenas como interface gráfica do projeto. A idéia era tirar proveito da produtividade que o framework nos oferece nesta parte de controle/visualização.
Então, o que eu fiz: eu já possuia o meu arquivo de configuração do Spring pronto pra trabalhar, e ele já estava dentro dos meus arquivos .jar. Então eu seguia o seguinte procedimento:
1. Desinstalava o plugin hibernate do Grails. Isto tirava o GORM (eu não precisava dele, visto que já tinha tudo no Hibernate funcionando bem)
2. Com o GORM desinstalado, eu incluia as dependências do Hibernate (APENAS DO HIBERNATE) no projeto.
3. Em seguida, tendo feito isto, importava o meu conteúdo do XML original do Spring para o arquivo de configuração do Spring do próprio Grails (usando a tag import mesmo).
Feito isto, eu referenciava as classes do código legado sem problemas de dentro dos meus controladores e serviços quando necessário. E toda classe de domínio eu incluia apenas no código legado quando necessário.
Lembro de ter funcionado muito bem na época.
Henrique Lobo Weissmann (Kico)
Pontos: 1485

0

0
29/12/2011 23:11
Oh vlw kico.
Até consegui importar o meu xml do spring no grails, o problema agora tá sendo a questão do JPA.
como eu disse antes, o arquivo persistence.xml, com minhas configurações de acesso ao banco e tudo mais está dentro do jar, mas ao rodar o projeto grails, não está conseguindo criar o bean transactionManager, que está declarado na minha configuração do spring, ele dá sempre aquele erro de "No persistence provider for EntityManager blá blá..." parece que ele não encontra o persistence.xml. Já coloquei as dependências do hibernate no meu lib, já que ele é meu provider. Vou continuar tentando! qualquer progresso eu posto aqui.
maykoone
Pontos: 16

0

0
06/01/2012 20:25
Enfim consegui, com alguns poréns...
primeiro tive que mudar o meu spring bean do entityManagerFactory de LocalEntityManagerFactoryBean para LocalContainerEntityManagerFactoryBean, assim eu consigo ter acesso a propriedade que permite especificar onde se encontra o arquivo persistence.xml.
o segundo problema que eu tive que resolver foi a desinstalação do plugin do hibernate que parece que no grails 2 deve ter algum bug ou algo que não entendi, pq rodava o comando uninstall-plugin, parecia tudo certo, mas ia rodar o projeto (run-app) o plugin tava lá, com isso o Grails coloca o seu jar do hibernate.core no classpath do projeto, pra quem usa hibernate puro tudo bem, mas pra que usa JPA, sem chance, pq eu reparei e não sei dizer o motivo, q o jar do hibernate nas dependências do Grails, não conta com a classe HibernatePersistence (Provider JPA), o que me gerava ClassNotFound toda hora, sei que depois que eu comentei a linha referente ao plugin do Hibernate no BuildConfig.groovy não deu mas esse problema, é claro que tive que adicionar meu jar do hibernate que tinha aquela classe e as dependências.
Mas uma coisa que ainda não rolou, foi tentar executar o projeto com o comando run-app, o que gera um erro estranho com a hibernate.dialect, tentei com e sem essa propriedade mas não rolou, e sei que não está errado porque no meu Junit do projeto java rola beleza.
O fato que só funciona quando eu executo o meu aplicativo grails pelo comando run-war, daí vai que uma maravilha.
Ufa, ficou um pouquinho extendo, mas é pra ninguém passar pelo mesmo problema e tentar resolver os outros. ehehe
Meu objetivo com isso é mais ver a integração do Grails com outras coisas, o que é bom quando você só quer aproveitar a parte web do Grails como Controllers e Views mas deixar a parte com as regras de negócios e entidades fora dele.
maykoone
Pontos: 16