Caros,
Valeu pelas respostas.
Li o artigo sugerido pelo Daniel e acredito que uma das quatro soluções descritas no artigo está indo ao encontro do que você disse na frase "prefira sempre deixar bem definido qual será o retorno dos seus serviços do que deixar que o framework exponha todos os relacionamento".
Escolher quais atributos do meu bean devem ser marcados EAGER por Default (tais como pequenas listas, ou, mesmo atributos @OneToOne que por padrão já são EAGER), e, utilizar "Join Query" para fazer o fetch de atributos LAZY quando necessários.
Como minha aplicação mantém a sessão no browser, não preciso de uma sessão web ou mesmo de um bean statefull.
1) Por HSQL (que foi também o exemplo do artigo sugerido pelo Daniel);
2) Por CriteriaQuery, chamando o método "fetch" e passando o atributo que deseja buscar; e
3) Por TypedQuery.
Ainda não testei usando o HSQL, porém o meu "findAll" (da classe AbstractBean) está implementado usando o CriteriaQuery, porém seu uso do "fetch", conforme abaixo:
CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList();
Acho estranho ele dar o erro, e acredito que se trocar por HSQL o erro irá continuar. Andei lendo que o Hibernate (implementação do JPA no Wildfly) utiliza o conceito de Proxy e que por mais que o atributo esteja anotado como LAZY, o Hibernate irá forçar que todos os atributos seja EAGER.
P.S: Estou tentando corrigir com base no HSQL, obrigado.