Olá. Estou migrando um tutorial de JSF (petcatalog) para facelets usando o netbeans. Estou progredindo na conversão do JSP para xhtml, mas agora recebi um erro referente a entity bean “category”
No Stack trace aparece:
Alguém pode dar alguma dica do que está acontecendo? falta alguma configuração no “faces-config.xml” ou “persistence.xml” ou “web.xml” ???
PS: a aplicação original JSF ainda funciona e acessa o mesmo database.
Pesquisando encontrei a seguinte dica: use annotations no lugar do xml.
OK
Fui na classe da Bean e inseri:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name="category")
@SessionScoped
public class CategoryController {
...
O problema agora é que o projeto não possui nenhuma bliblioteca com “javax.faces.bean”. Onde encontro esta biblioteca? Já baixei o mojarra (mojarra-1.2_13-b01-FCS) e também não encontrei.
Pelo que entendi você está colocando JSF 2.0, certo?
A não ser que alguém aí conheça muito bem JSF 2.0, não recomendo, pois acho as referencias dele ainda muito escassas.
Fora isso, pode dizer quais outras configurações são usadas? Reparei o “Oracle TopLink Essentials” nas exceções!
A aplicação original com JSF foi baseada neste tutorial do netbeans: http://www.netbeans.org/kb/docs/web/jsf-jpa-crud-wizard.html
A diferença foi que troquei as tabelas do banco pelas tabelas do petcatalog (famoso tutorial de javaee). Este tutorial usa “Generating the Entity Classes from the Database” e “Generating JSF Pages From Entity Classes” . Funcionou perfeitamente. Agora estou tentando fazer o mesmo, só que usando facelets. Quero trocar o JSP pelo XHTML somente e utilizar os templates do facelets.
Só que nos testes começou a dar este exception já citado. O JSF 2.0 foi incluido somente porque não estava encontrando o javax.faces.bean. Mas posso voltar atrás pois o problema continuou o mesmo.
Realmente, não conheço esse tipo de aplicação… Outra pessoa vai ter que te ajudar ^^
Pelo que consegui entender nesse trecho. Sua aplicação não está conseguindo montar corretamente a EJBQL, ou então não consegue interpretar direito a String (que para mim parece correta).
Quando ele diz “Unknown abstract schema type [Category]”, me parece que a classe não foi mapeada ou que não existe nenhum XML que dite as regras para o JPA…
Refiz a aplicação. Substitui o TopLInk por Hibernate. O projeto avançou, consegui chegar na pagina que “lista categorias”. Agora está acontecendo outro problema: quando clico na ação “Detail” para ver os detalhes de um item específico:
type Exception report
message
descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: failed to lazily initialize a collection of role: com.pet.model.Category.productCollection, no session or session was closed
root cause
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.pet.model.Category.productCollection, no session or session was closed
Estou concluindo que com o hibernate eu tenho que controlar as sessões (abrir e fechar quando conveniente). Alguém sabe se realmente é este o problema? E se for isto, tem algum exemplo de código/classes que posso usar?