Erro na migração de JSF para Facelets

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.

Obrigado.

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.

Bom… encontrei a javax.faces.bean. Estava em mojarra-2.0.0-RC (novo né?). Mas o problema principal persiste. Se alguém puder ajudar… obrigado.

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?