Preparando o Ambiente

Para demonstração prática neste artigo será utilizado as seguintes ferramentas:
- Eclipse 3.4 (Ganymede), que você encontra disponível para download no seguinte endereço:
http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/ganymedesr2

Versões disponíveis:
Windows 32-bit
Mac OS X(Carbon)
Linux 32-bit
Linux 64-bit

- plugin JBoss Tools 3.0, que você encontra disponível para download no seguinte endereço:
http://www.jboss.org/tools/download.html

Versões disponíveis:
Windows 
Linux 32-bit
Linux 64-bit
Mac OS X

 
- Web-container Apache TomCat 6.0.20, que você encontra disponível para download no seguinte endereço:
http://tomcat.apache.org/download-60.cgi
Formato disponíveis:
apache-tomcat-6.0.20.exe (Instalador Windows)
apache-tomcat-6.0.20.zip (Arquivo Compactado)
apache-tomcat-6.0.20.tar.gz (Arquivo Compactado)



Criando o Projeto

Crie um projeto JSF de exemplo em:
File -> New -> JSF Project

Novo Projeto


Em Project Name, digite trabcomjsf

Em JSF Environment, escolha a opção: JSF 1.2 with Facelets

Em Template, escolha a opção: Facelets KickStartWithRILibs, (escolhendo esta opção, todas as bibliotecas necessárias para a aplicação já serão adicionadas automaticamente).

agora localize a classe Person.java no pacote demo conforme figura abaixo:
Adicionando Código

e adicione as seguintes linhas de código:

    /** Identifica o endereço IP remoto*/
    public String getmeuIP() {
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
        return request.getRemoteAddr();
    }
    
    /** Identifica o ID da sessão */
    public String getminhaSession() {
        FacesContext context = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
        return session.getId();
    }


Resolva os erros encontrados importando as respectivas bibliotecas, listadas a seguir:

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;


Agora, aproveite a página que foi criada pela IDE e inclua as seguintes linhas no arquivo inputname.xhtml, conforme figura abaixo:

Código HTML




value="#{person.meuIP}" />

value="#{person.minhaSession}" />


Verificando a aplicação

Clique no projeto com o botão direito do mouse, e escolha:
Run as -> Run on Server

Escolha o servidor Apache TomCat 6
Executando no servidor

OBS: exclua o arquivo "el-api.jar" do diretório: trabcomjsf\WebContent\WEB-INF\lib


Resultado Final:

Resultado Final


IP - executado em localhost (127.0.0.1)
Session ID - número da sessão.


Estes dados podem ser úteis para auditoria e segurança de sistemas, pois podem servir para registrar de onde o usuário está acessando o sistema, principalmente em uma rede interna, e que podem ser complementados com informações adicionais, como por exemplo:
quando? Date data = new java.util.Date();
quem? (nome do usuário)
e o que fez? (inclusão, alteração ou exclusão).

Além que estas informações também podem ser persitidas em banco de dados, para controle interno.

Referências:
Get session and remote ip in managed bean.
http://www.experts-exchange.com/Programming/Languages/Java/J2EE/Frameworks/JSF/Q_24237062.html

Retrieving Session ID value from a JSF Request
http://stackoverflow.com/questions/772541/retrieving-session-id-value-from-a-jsf-request