LazyInitializationException e EJB3 - Afinal existe contorno?

Olá povo

Sei que este tema já foi abordado em outros tópicos deste fórum. Ocorre que as soluções postadas até agora não foram satisfatórias tampouco elegantes. Por este motivo estou novamente levantando a questão.
Gostaria de saber como evitar de modo elegante e LazyInitializationException usando ejb3 (JPA) + Stateless Session Beans de fachada. Antes que alguém tente me descrever o problema, saiba que estou perfeitamente ciente dos motivos que fazem o Hibernate (minha opção de JPA) levantar esta exceção. Ocorre que gostaria de dar uma solução elegante para o problema. O OpenSessionInView não é uma opção porque meus objetos Entity serão acessados por uma aplicalção Web (JSF) no mesmo container mas também de fora do container por uma aplicação desktop.
Além disso, arquiteturalmente OpenSessionInView não é exatamente uma solução elegante. É sim, na minha opinião, apenas um contorno pra um problema complicado.
Também não pretendo apenas modificar o mapeamento para Eager por questões óbvias.
Sei que há outras possibilidades como, por exemplo, usar statefull sesion beans, mas isto mudaria radicalmente a arquitetura de nossas aplicações, de modo que também não é uma opção. Há a necessidade de se indicar o método que encerra a sessão. Como fazer isso de modo simples e com pouco ou nenhum impacto no restante da aplicação?
Não conheço o JBoss Seam, embora saiba que ele implementa o conceito de conversação. Gostaria de saber, portanto, se alguém já usou o Seam integrado às suas aplicações e se conseguiu resultado efetivo contra a LazyInitializationException .
Se alguém tiver uma boa saída, elegante principalmente, poste aqui. Penso que será de grande utilidade termos uma saída esperta e definitiva para um problema tão recorrente.

Abraços a todos

Estou no mesmo barco que o seu. Mas não vejo muita escapatória, o EntityManager tem que nascer no início da requisição web e morrer no fim, ou seja, fazer o famigerado Open Session in View, ou melhor, Open Entity Manager in View. Isso, óbvio, se não fosse a necessidade de EJB remoto, que vai ser acessado por dois tipos de aplicações.

Não vai dar pra fazer mágica (talvez um vudu). Se quer ter stateless, o Entity Manager deve morrer após a chamada do método. Isso significa que, dando o exemplo básico do Post e Comment, você vai ter que ter métodos mais ou menos assim:

public Post findPostById(Long id);

public List<Comment> allCommentsOfPost(Long postId);

Mas acho que você queria que para os clientes, a busca de objetos associados fosse algo do tipo:

List<Comment> comments = post.getComments();

ao invés de:

List<Comment> comments = blogRemote.allCommentsOfPost(post.getId());

Existe um jeito (que uma vez imaginei mas nunca pus em prática): usar aspectos do Spring ou do AspectJ (só no lado cliente). No caso, haveria um “join point” antes de getComments(), e nesse ponto seria misturado um aspecto que chamasse o método do EJB. Mas sempre achei isso um canhão para matar mosca.