Ajuda para configuar Spring + hibernate + jsf

16 respostas
alves.Felipe

Bom dia…

Estou tentando integrar Spring 2.5 e hibernate 3 e jsf

e estou tendo problemas para fazer essa configuração… quando eu vou iniciar o TomCat 6 da um erro que,
no arquivo de configuração do Spring não consegue achar o persistence-unit do hibernate…

alguém sabe como pode ser feito essa configuração???

segue o erro…

org.springframework.beans.factory.BeanCreationException: Error creating bean with name entityManagerFactory defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No persistence unit with name ecommerce found

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1336)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)

at java.security.AccessController.doPrivileged(Native Method)



Caused by: java.lang.IllegalArgumentException: No persistence unit with name ecommerce found

at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainPersistenceUnitInfo(DefaultPersistenceUnitManager.java:371)

at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:247)

at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:199)

at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:273)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)

 30 more

16 Respostas

Javabuntu
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No persistence unit with name 'ecommerce' found

neste seu erro, o spring está tentando acessar sua unidade de persistência ‘ecommerce’, e não está achando.

Seu persistence.xml realmente tem uma unidade de persistencia chamada ‘ecommerce’?
se tiver ele não está achando o xml, onde você inseriu o persistence.xml?

alves.Felipe

sim… esta acontecendo isso mesmo…
pois não sei como faço para arrumar… meu persistence.xml esta no META-INF… é la que tem que ficar não??

Javabuntu

alves.Felipe:
sim… esta acontecendo isso mesmo…
pois não sei como faço para arrumar… meu persistence.xml esta no META-INF… é la que tem que ficar não??

lá mesmo, e seu applicationContext está onde?

o name da persistence-unit confere com ‘ecommerce’?

alves.Felipe

meu applicationContext.xml esta no WEB-INF…
sim esta com o mesmo nome…

cara deixa eu te falar uma coisa… eu tinha criado um projeto para deixar as entidades ,o dao e as interfaces…
e no meu projeto web eu adicionava esse modulo… assim funcionava…

ai eu quero deixar tudo (entidades,dao,interface)no projeto web…ai eu só passei essas coisas(entidades,dao,interface) pro projeto web… adicionei o persitence.xml no Meta-inf ,e pra mim teoricamente estaria correto…???

sabe me dizer se eu deixar separado mesmo, é uma boa prática de programação?

Javabuntu

alves.Felipe:
meu applicationContext.xml esta no WEB-INF…
sim esta com o mesmo nome…

cara deixa eu te falar uma coisa… eu tinha criado um projeto para deixar as entidades ,o dao e as interfaces…
e no meu projeto web eu adicionava esse modulo… assim funcionava…

ai eu quero deixar tudo (entidades,dao,interface)no projeto web…ai eu só passei essas coisas(entidades,dao,interface) pro projeto web… adicionei o persitence.xml no Meta-inf ,e pra mim teoricamente estaria correto…???

sabe me dizer se eu deixar separado mesmo, é uma boa prática de programação?

não é uma boa prática, é uma excelente prática!

porquê?

imagine que você automaticamente você fica impossibilitado de criar algumas dependências, porque tudo estará num jar.

Agora imagine que agora o sistema não vai mais ser o web, e sim destop, concorda que agora é só pegar o mesmo jar, e construir as views em swuing, essa outra parte não mudará nada, esse jar não precisa saber onde será usada e já vai estar compilado.

Eu usei spring + jsf + hibernate num projeto bem grande, e utilizamos exatamente assim em módulos separados depois gerados o .jar e adicionados na lib do web.

faça isso.

mas ai antes de gerar o jar, faça pelo menos os testes unitarios em TODOS os métodos pra garantir que eles estarão 100% funcionando.

J

Cara, num sei se ajuda, mas tem o livro do autor Edson que ele disponibiliza o projeto para download:

http://www.integrator.com.br/download_gratis/projeto_livro_dominando_javaserver_faces_facelets_spring_hibernate_jpa.zip

Dá uma olhada lá que se parece muito com o que está fazendo, isso é, se num for o mesmo.

Boa sorte

alves.Felipe

então… vou deixar separado mesmo então… que pelo menos funciona. hehe

e maniaco… estou baixando o exemplo… mas estou seguindo o exemplo do livro dele mesmo…“Dominando JSF e Facelets, utilizando Spring 2.5, Hibernate e JPA”…

mas valeo pelas dicas…
abraco

J

Já terminei esse livro. Muito bacana o projeto, realmente deu uma noção das tecnologias na prática.
Qualquer coisa, podemos trocar idéia.

alves.Felipe

javamaniaco…

vc chegou a fazer outro projeto com base no livro??
tenho problemas para usar o fetch=FetchType.LAZY

da a seguinte msg:

...
Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
...

sabe pq ele diz no Session??

J

alves.Felipe:
javamaniaco…

vc chegou a fazer outro projeto com base no livro??
tenho problemas para usar o fetch=FetchType.LAZY

da a seguinte msg:

...
Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
...

sabe pq ele diz no Session??


Cara, desculpa ter visto somente agora sua mensagem. Estive de férias e longe do mundo :D.
Bom, isso ocorre porque você não configurou a sessão do Hibernate para ser aberta na view. Após uma transação, ela se fechou e vc a perdeu.
No Spring, nossa, super fácil, ele gerencia isso pra vc. Mas dá pra fazer sem o Spring (no livro não se usa o Spring apenas pra isso), usando Filtro, Listener ou PhaseListener do JSF.
Depois do livro, onde estou trabalhando, já fizemos 1 projeto usando como base o conhecimento adquirido.

alves.Felipe

então… eu vi por ai que isso é problema de configuração de sessão…
mas o exemplos que vi são diferentes dos livros…(eles abrem e fecham a sessão manualmente…)

no nosso caso o Spring gerencia… como vc falou… mas então… como, onde posso fazer alguma coisa para ele “consertar” essa sessão???
eu tb fiz um projeto… e esta pipocando nisso…

valeo
abraco

J

alves.Felipe:
então… eu vi por ai que isso é problema de configuração de sessão…
mas o exemplos que vi são diferentes dos livros…(eles abrem e fecham a sessão manualmente…)

no nosso caso o Spring gerencia… como vc falou… mas então… como, onde posso fazer alguma coisa para ele “consertar” essa sessão???
eu tb fiz um projeto… e esta pipocando nisso…

valeo
abraco


Tem um e-mail fácil ai pra mim te mandar um PDF? Eu também num sabia, mas fui perguntar ao autor Edson, já que fiquei curioso, e ele me mandou um PDF que o cara faz um exemplo com JSF e Hibernate, mas sem Spring, é o que você quer, certo?

alves.Felipe

valeo

M

Pessoal,

Estou seguindo o mesmo livro e estou tendo a mesma dificuldade. do Lazy.

Como foi solucionado ???

No livro ele diz na página 181 que colocando o filtro já resolveria este problema.

[code]


openEntityManager
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter


openEntityManager
/*

[code]

mas comigo não esta funcionando, recebo o erro

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

Gostária de mater o spring trantando isso.

Obrigado

Marcelo Gomes

rjdiogo

Alvez.Felipe estou com o mesmo problema que você teve de persistence-unit, estou me baseando nesse livro do edson gonçalves também. O que você fez para resolver o problema?

alves.Felipe

alves.Felipe:
meu applicationContext.xml esta no WEB-INF…
sim esta com o mesmo nome…

cara deixa eu te falar uma coisa… eu tinha criado um projeto para deixar as entidades ,o dao e as interfaces…
e no meu projeto web eu adicionava esse modulo… assim funcionava…

Criado 1 de outubro de 2008
Ultima resposta 25 de ago. de 2011
Respostas 16
Participantes 5