Bruno,
Na verdade nao eh uma desconexao. Na verdade a cada solicitacao feita ao
servlet sera checado se este usurario esta em um tipo de lista (o
usuario sera incluido nesta lista se seu login estiver ok). Se nao ele
tera que logar novamente para continuar o acesso.
Acho que vou tentar algo com o URL rewriting.
Obrigado,
Heider
>
>>=20
>> Caros,
>>=20
>> Dei uma olhada na na HttpSession como sugerido pelo Bruno e o
Handerson=
>=20
>> (jah aproveitando para agradecer), mas nao gostaria de ter que
baixar=20
>> nenhum cookie. Um outro problema eh que gostaria de poder desconectar
um=
>=20
>> usuario a qualquer momento, ou seja, existe tambem uma pagina que
me=20
>> lista os usuarios ativos e da a possiblidade de encerrar qualquer=20
>> conexao.
>> Li algo sobre URL rewriting, vcs saberiam dizer se a aplicacao
desse=20
>> recurso no meu caso???
>
>A forma de controle de sessao fornecidos pos HttpSession pode
>ser feita tanto por cookies como por URL rewriting.
>
>Para quem nao sabe, URL rewriting eh o processo de, ao se devolver
>uma pagina para o browser, voce muda a URL, e inclui um identificador
>nessa URL (sao aquelas filas de numeros encontradas no final de
>URLs em variso sites). Isso permite a identificacao de usuario
>em browsers que nao suportam cookies.
>
>HttpSession faz um ou outro, de forma configuravel. A forma padrao
>eh usar cookies (que sao mais confiaveis alem de permitir gravar
>algum tipo de informacao no cliente), mas estes nao sao suportados
>nos browser mais antigos.
>
>Quanto aa questao de desconectar o usuario automaticamente, o que
>voce quer dizer com isso? O HTTP eh um protocolo "sem conexao"
>(connectionless), e o cliente so mantem a conexao enquanto recebe
>a informacao (eh por isso que esquemas como HttpSession sao
>necessarios...). Como eu ja havia dito, quem mantem a sessao aberta
>eh o seu servlet, e portanto, eh la que voce tera o codigo que
>mantera ou nao a secao aberta. A logica para isso eh voce que ira
>criar. Se voce quiser fazer com que seu servlet mostre quem
>esta com a sessao aberta, e permita com que voce "feche" uma sessao,
>isso eh voce que ira fazer. E isso independe de se utilizar URL
>rewriting ou cookies...
>
>Como o Handerson mostrou, o controle de sessao sera feito
>atraves dos metodos de HttpSession:
>
>> >
>> >Na interface javax.servlet.http.HttpSession voc=EA encontrar=E1 os
m=E9t=
>odos:
>> >- getCreationTime()=20
>> > Returns the time at which this session representation was
created,
>> >in milliseconds since midnight, January 1, 1970 UTC.=20
>> >- getId()=20
>> > Returns the identifier assigned to this session.=20
>> >- getLastAccessedTime()=20
>> > Returns the last time the client sent a request carrying the
>> >identifier assigned to the session.=20
>
>e seu servlet eh que ira controlar por exemplo quanto tempo voce
>quer manter a sessao.
>
>Eu sugeriria que voce utilizasse as referencias sugeridas pelo
>Handerson, que parecem cobrir tudo isso...
>
>Espero que isso tenha ficado claro.
>
>Bruno.
>
>
>>=20
>> Novamente obrigado,
>>=20
>> Heider
>>=20
>>=20
>> >Heider,
>> >
>> >o que vc pode fazer =E9 utilizar alguns dos m=E9todos dispon=EDveis
para
>> >cookies que definem o tempo de vida de um cookie e quando ele foi
>> >acessado pela =FAltima vez.
>> >
>> >Na interface javax.servlet.http.HttpSession voc=EA encontrar=E1 os
m=E9t=
>odos:
>> >- getCreationTime()=20
>> > Returns the time at which this session representation was
created,
>> >in milliseconds since midnight, January 1, 1970 UTC.=20
>> >- getId()=20
>> > Returns the identifier assigned to this session.=20
>> >- getLastAccessedTime()=20
>> > Returns the last time the client sent a request carrying the
>> >identifier assigned to the session.=20
>> >
>> >J=E1 na classe javax.servlet.http.Cookie voc=EA ter=E1 m=E9todos
como:
>> >
>> >- public void setMaxAge(int expiry)
>> > Sets the maximum age of the cookie. The cookie will expire
after
>> >that many seconds have passed. Negative values indicate the default
>> >behaviour: the cookie is
>> > not stored persistently, and will be deleted when the user
agent
>> >(web browser) exits. A zero value causes the cookie to be
deleted.=20
>> >
>> >- public int getMaxAge()
>> > Returns the maximum specified age of the cookie. If none was
>> >specified, a negative value is returned, indicating the default
>> >behaviour described with setMaxAge.
>> >
>> >Se n=E3o me engando voc=EA econtrar=E1 exemplos de identifica=E7=E3o
usa=
>ndo
>> >session e cookie em algum JDC (http://java.sun.com/jdc/
>> >) e tamb=E9m:
>> >(Servlet Cookie) -
>>=20
>>http://jserv.javasoft.com/products/java-server/documentation/toolkit/sessi=
>on_tr
>ack/SessionTr.html
>> >(Cookie Monster) -
>> >http://style.webreview.com/wr/pub/97/10/24/webdev/index.html
>> >(Servlet Session Tracking) -
>>
>http://www.sigs.com/publications/docs/jro/articles/9710/jv10.stateofart.=
>html
>> >
>> >Outras refer=EAncias:
>> >http://www.servlet.com=20
>> >http://www.servletcentral.com=20
>> >http://www.servletsource.com
>> >http://i.am/oiservletworld=20
>> >
>> >
>> >Heider Maciel wrote:
>> >>=20
>> >> Bruno,
>> >>=20
>> >> Meu problema e o seguinte:
>> >>=20
>> >> Estou desenvolvendo um servlet que passa por uma conexao com
>> >> autenticacao, uma lista de relatorios disponiveis e a execucao do
>> >> relatorio selecionado.
>> >> Para garantir que alguem nao salve uma pagina de relatorios e a=20
>> execute
>> >> posteriormente sem logar, resolvi desenvolver um mecanismo
(tipo=20
>> Timer)
>> >> que mantem uma lista de quem se logou e tempo sem atualizacao (se
nao
>> >> houver atualizacao por 10 min pex o usuario eh desconectado).
Esta=20
>> lista
>> >> contem entre outras coisas o IP e informacoes pessoais do usuario
mas
>> >> preciso agora de algo com a porta para o caso de dois usuarios=20
>> abrirem
>> >> uma secao na mesma estacao, pois senao nao terei como identificar
de
>> >> quem sao as informacoes que armazenei no logon.
>> >>=20
>> >> Uma outra duvida eh se devo dividir a parte de login, lista e=20
>> execucao
>> >> em servlets distintos pois muitos metodos terao que ser
synchronized,
>> >> impactando muito em performance. Ufa!!!!
>> >>=20
>> >> Obrigado pela atencao,
>> >>=20
>> >> Heider
>> >>=20
>> >> >>
>> >> >> Caros,
>> >> >>
>> >> >>
>> >> >> Gostaria de saber como posso identificar as requisicoes de uma
>> >> estacao
>> >> >> com dois browsers abertos, ou seja como eh possivel saber
para=20
>> quem
>> >> >> responder. Tenho o IP mas ainda preciso de mais um
identificador.
>> >> Alguem
>> >> >> sabe???
>> >> >>
>> >> >>
>> >> >> Obrigado,
>> >> >>
>> >> >> Heider
>> >> >>
>> >> >
>> >> >Quem faz a relacao com a aplicacao que esta fazendo a requisicao
>> >> >eh o TCP/IP, atraves do mecanismos de "portas". Cada conexao
possui
>> >> >um endereco IP e uma "porta", essa ultima em ultima instancia
>> >> >identifica a aplicacao.
>> >> >
>> >> >Em geral, voce nunca necessita se preocupar com isso, dado que
>> >> >ao receber a conexao do browser, voce sabera com que browser esta
>> >> >falando, mas isso fica "escondido" no TCP/IP. Quando voce
responde
>> >> >(ou seja, envia dados de volta pela conexao iniciada pelo
browser),
>> >> >voce automagicamente estara respondendo para o browser correto,
ja
>> >> >que o TCP/IP sabe que aplicacao abriu a conexao (ou seja, o
TCP/IP
>> >> >sabe que "porta" de que endereco IP fez a requisicao).
>> >> >
>> >> >Se o seu problema eh identificar em varias conexoes HTTP
diferentes
>> >> >qual eh o browser, a resposta eh utilizando o suporte a secoes da
>> >> >api de servlets, que mantera (em ultima analise, via cookies ou
>> >> >via chave de secao na URL) a relacao do browser com o servidor.
>> >> >Isso so eh necessario se voce estiver falando de conexoes=20
>> diferentes,
>> >> >ja que o HTTP eh um protocolo "stateless" (ou seja, nao mantem=20
>> estado),
>> >> >e cada conexao eh independente de qualquer outra anterior.
>> >> >
>> >> >Bruno.
>> >>=20
>>
>______________________________________________________________________
>> >> >Bruno Peres Ferreira de Souza Sun=20
>> Microsystems
>> >> >System Engineer - Java Technologist =20
>> [EMAIL PROTECTED]
>> >> > if I fail, if I succeed, at least I live as I believe
>> >> >
>> >> >
>> >> >
>> >>=20
>> >> ______________________________________________________
>> >> Get Your Private, Free Email at http://www.hotmail.com
>> >> * Para n=E3o receber mais e-mails desta lista envie um e-mail
para=20
>> [[EMAIL PROTECTED]]
>> >> e no corpo do email escreva [unsubscribe <seu-email>]
>> >
>> >--=20
>> >**********************************************************
>> >Handerson Ferreira Gomes, Analista de Sistemas
>> >CITS - Centro Internacional de Tecnologia de Software
>> >Depto: CNTS - Centro de Novas Tecnologias de Software
>> >Parque de Software de Curitiba
>> >81230-000 Curitiba, PR, Brasil
>> >+55 41 317 2086, fax: 337 1002
>> >http://www.cits.br
>> >**********************************************************
>> >
>>=20
>>=20
>> ______________________________________________________
>> Get Your Private, Free Email at http://www.hotmail.com
>> * Para n=E3o receber mais e-mails desta lista envie um e-mail para=20
>[[EMAIL PROTECTED]]
>> e no corpo do email escreva [unsubscribe <seu-email>]
>
>
>Bruno.
>______________________________________________________________________
>Bruno Peres Ferreira de Souza Sun Microsystems
>System Engineer - Java Technologist [EMAIL PROTECTED]
> if I fail, if I succeed, at least I live as I believe =20
> =20
>
>
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
* Para nao receber mais e-mails da lista, acesse
<http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail, escolha a
lista <[EMAIL PROTECTED]> e de um <submit>.