[VRaptor3] e JSR-286 (Portlets 2.0)  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
dbdbdb
Thread.start()

Membro desde: 07/07/2010 18:58:52
Mensagens: 38
Offline

Olá,

Aparentemente o VRaptor não reconhece nativamente a especificação JSR-286 (Portlets 2.0)

Basicamente, no lado do servidor, o portlet é uma classe que estende de GenericPortlet, que é um HttpServlet...
Até aí tudo bem, mas o problema é que cada portlet deve ser declarado como um servlet no web.xml... e tenho que ficar trabalhando com request e response.. além de nao ter suporte ao DI.. ou seja, um saco.

Então eu estava pensando em criar um componente no VRaptor que encapsula este GenericPortlet, resolve as dependências e popula sozinho os atributos do método. Tipo transformar um portlet num Controller.

Alguém sabe por onde devo começar?

Abraços!
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

Não conheço essa especificação, mas se ela obriga o registro no web.xml não tem mto que se possa fazer...

o que vc pode fazer é um portlet que faz um dispatch pros controllers do VRaptor...

o que vc ganha usando o portlet?

[]'s

--
Caelum
www.caelum.com.br

dbdbdb
Thread.start()

Membro desde: 07/07/2010 18:58:52
Mensagens: 38
Offline

portlet é um pedacinho de um sistema web...
este pedacinho de sistema pode ser colocado em qualquer portlet container que implementa a especificação.

o que significa que partes do meu sistema podem estar dentro de outros sistemas.
este é o ganho de usar portlet.

essencial para um dashboard corporativo (ele tem varios pedaços de sistemas de vários sistemas diferentes)

ou seja, os meus portlets pode viver dentro do BEA Portal, ou o Portal da Oracle.. ou de qualquer outro Portlet Container que implemente a JSR-286

A especificação nao obriga o registro no web.xml... é que como um portlet é um servlet, se nao usar framework nenhum, tem que registar o portlet (o servlet) no web.xml


acho que simplificando a minha dúvida seria:
Posso fazer um servlet comum (uma classe que estende HttpServlet) "se transformar" numa Controller do VRaptor? Com DI, popular sozinho os atributos, etc?


abraços!
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

o problema é que não é o VRaptor que instanciaria a servlet/portlet, seria o portlet/servlet container...

o que dá pra tentar fazer é injeção por setter, field ou init method... mas daí a gente precisa conseguir capturar qual é o portlet que está servindo a requisição. Sabe se tem como fazer isso a partir de um Filter?

--
Caelum
www.caelum.com.br

dbdbdb
Thread.start()

Membro desde: 07/07/2010 18:58:52
Mensagens: 38
Offline

nao.. nao da pra pegar a instancia do Servlet a partir de um Filter..

mas eu tava imaginando de outra forma:

1) criar um único Servlet/Portlet (a tal classe que estende GenericPortlet) e mapeio no web.xml algo como /portlet/*
2) pela URL da requisição (ex: /portlet/usuarios) eu instancio uma Controller do VRaptor que ta com o método mapeado com @Path("usuarios")
3) coloco essa Controller no "contexto do VRaptor" pra ele tratar da DI, popular os parametros do request sozinho, dar suporte a Interceptor e etc...
4) após terminar o método da Controller, o fluxo volta para o Servlet e eu pego o retorno do método da Controller (ou o Result) e coloco no request/response.. e faço o dispatch para a JSP do portlet


é possivel fazer isso com o VRaptor?

abraços!

This message was edited 1 time. Last update was at 22/02/2011 17:56:16

Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

vc pode simplesmente fazer um forward/requestDispatch pra url do VRaptor...

e vc pode prevenir que o vraptor chame a sua jsp padrão também

--
Caelum
www.caelum.com.br

dbdbdb
Thread.start()

Membro desde: 07/07/2010 18:58:52
Mensagens: 38
Offline

Lucas Cavalcanti wrote:vc pode simplesmente fazer um forward/requestDispatch pra url do VRaptor...

é verdade.. nao pensei nisso...
mas nao ficaria mais lento? pois a requisição teria que passar inteira novamente pelo servidor web e pelo vraptor


Lucas Cavalcanti wrote:e vc pode prevenir que o vraptor chame a sua jsp padrão também

como eu previno que o vraptor chame a jsp e volta o fluxo para meu servlet?


abraços!
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

não ficaria tão mais lento, pq todo o processo seria no servidor, não teria outra requisição web.

pra prevenir que o vraptor chame a jsp vc pode criar um Interceptor simples:


--
Caelum
www.caelum.com.br

 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team