Para demonstração prática neste artigo será utilizado as seguintes ferramentas:
- Eclipse 3.4 (Ganymede),
- plugin JBoos Tools 3.0, e o
- web-container Apache TomCat 6.0.20

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


<br />
<h:outputText value="#{person.meuIP}" /><br />
<h:outputText value="#{person.minhaSession}" />


Testando 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
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