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.
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.
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.
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.
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.