Webwork - Session

:?: Amigos javarianos, qual a diferença do Map para o HttpSession?
Estou perguntando isso pq quando utilizo o WW estou usando uma váriável do tipo Map (vi essa variável em um exemplo dentro do WW, i18n) para gravar dados da sessão enquanto sempre vi o HttpSession.
Pq map e não httpSession?

:arrow: Tive um problema com durante a abertura de uma página usando java script para exibir uma janela com um relatório. Tive que criar lá no views.properties um action para poder pegar as váriáveis que estavam na sessão.

:?: Alguem por ai sabe o que pode ter acontecido?
:?: Posso mudar o tipo da váriável Map para HttpSession?

Valeu galera,
Um grande abraço para todos.

Um Map eh soh uma estrutura de dados chave-valor. Uma HttpSession…uhh…bom, eh a mesma coisa, mas tá amarrada na API de Servlets :wink:

[quote=“black_fire”]Estou perguntando isso pq quando utilizo o WW estou usando uma váriável do tipo Map (vi essa variável em um exemplo dentro do WW, i18n) para gravar dados da sessão enquanto sempre vi o HttpSession.
Pq map e não httpSession?[/quote]

Isso eh uma feature: pq as Actions do WebWork não são amarradas à Web ou a um Servlet container. Se vc der uma olhada na documentação do WebWork, vc vai ver que tem um ClientDispatcher, que te permite executar as Actions sem estar rodando num Servlet container (por exemplo, de dentro de uma aplicação Swing).

Sobre ter que pegar as variáveis na sessão (o Map que o WebWork te dá quando vc pede ActionContext.getSession()), não consegui entender muito bem a sua explicação… vc poderia dar mais detalhes?

:?: Não sei se a forma que eu entendi está correta, da um look:

:arrow: Quando eu uso Map do WW, estou atrelado ao contexto que o webwork me envia.
Se eu usar o HttpSerssion poderei ver a sessão do browser, ou seja, se eu abrir uma nova janela sem um action, poderei mapear a sessão enquanto que com o WW preciso estar dentro de um contexto válido para o WW.
Todos os meus relatórios são exibidos em uma janela separada da aplicação (uso JavaScript para abrir esta janela).
Com o HttpSession posso ter apenas um JavaBean para exibir os dados do relatório?

:arrow: Estou tendo também problemas para atribuir o time-out da session usando o Map.

Acho que embananei tudo né… :shock:

O Map do WW nao eh mais do que uma versao “generica” do HttpSession, e, portanto, tem as mesmas caracteristicas e funcionamento geral, a diferenca eh que vc nao precisa amarrar tua Action ao HTTP.

Mas, ateh aih, eu jah tinha explicado isso no outro post… bom, voltando ao assunto, o que eu quero dizer eh: nao existe uma “sessao do browser”, uma “sessao do application server” e uma “sessao do webwork”. Eh tudo a mesma coisa, a diferenca eh que o WW te da uma visao mais generica da sessao do appserver.

Ah, lembrando - HTTP eh um protocolo sem estado. A API de Servlets faz um otimo trabalho em te dar controle de sessao, mas tome cuidado pra nao confiar demais nele - geralmente, o web container brinca com cookies pra fazer o controle de sessao. Quando se esta com cookies desabilitados, vc acaba tendo que usar URL rewriting, ou a aplicacao comeca a ficar doida. Dê uma olhada na <webwork:url> :wink:

Valeu kra, agora clareou. :smiley: