Exibir dados da sessão - JSF/JAAS

Não estou conseguindo cadastrar um novo usuário e exibir dados da sessão de usuários cadastrados. Vou postar os códigos pra ficar mais fácil de explicar:

telaCadastroPromotor

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="/resources/template.xhtml"
				xmlns="http://www.w3.org/1999/xhtml"
				xmlns:h="http://java.sun.com/jsf/html"
				xmlns:f="http://java.sun.com/jsf/core"
				xmlns:p="http://primefaces.org/ui">

    <ui:define name="Conteudo">
		<h:form>
			<p:growl id="growl" showDetail="true"/>
			<p:panel header="Cadastro Promotor">

				<p:fieldset legend="Identificação" toggleable="true" toggleSpeed="500">  
					<p:ajax event="toggle" listener="#{fieldsetBean.handleToggle}" update="growl" />  
					<h:panelGrid columns="2" cellpadding="10">

						<h:outputLabel styleClass="labelForm" value="Login: " for="login"/>
						<p:inputText id="login" value="#{usuarioMB.promotor.login}"/>

						<h:outputLabel styleClass="labelForm" value="Senha: " for="senha"/>
						<p:inputText id="senha" type="password" value="#{usuarioMB.promotor.senha}"/>

						<h:outputLabel styleClass="labelForm" value="Nome: " for="nome"/>
						<p:inputText id="nome" value="#{usuarioMB.promotor.nome}"/>

						<h:outputLabel styleClass="labelForm" value="Razão Social: " for="razaoSocial"/>
						<p:inputText id="razaoSocial" value="#{usuarioMB.promotor.razaoSocial}"/>

						<h:outputLabel styleClass="labelForm" value="Nome Fantasia: " for="nomeFantasia"/>
						<p:inputText id="nomeFantasia" value="#{usuarioMB.promotor.nomeFantasia}"/>

						<h:outputLabel styleClass="labelForm" value="CNPJ: " for="cnpj"/>
						<p:inputText id="cnpj" value="#{usuarioMB.promotor.CNPJ}"/>
					</h:panelGrid>  
				</p:fieldset>

				<p:fieldset legend="Endereço" toggleable="true" toggleSpeed="500">  
					<p:ajax event="toggle" listener="#{fieldsetBean.handleToggle}" update="growl" />  
					<h:panelGrid columns="4" cellpadding="10">  

						<h:outputLabel styleClass="labelForm" value="Rua: " for="rua"/>
						<p:inputText id="rua" value="#{usuarioMB.promotor.endereco.rua}"/>

						<h:outputLabel styleClass="labelForm" value="Número: " for="numero"/>
						<p:inputText id="numero" value="#{usuarioMB.promotor.endereco.numero}"/>



						<h:outputLabel styleClass="labelForm" value="Bairro: " for="bairro"/>
						<p:inputText id="bairro" value="#{usuarioMB.promotor.endereco.bairro}"/>

						<h:outputLabel styleClass="labelForm" value="CEP: " for="cep"/>
						<p:inputText id="cep" value="#{usuarioMB.promotor.endereco.CEP}"/>

						<h:outputLabel styleClass="labelForm" value="Cidade " for="cidade"/>
						<p:inputText id="cidade" value="#{usuarioMB.promotor.endereco.cidade}"/>

						<h:outputLabel styleClass="labelForm" value="Estado: " for="estado"/>
						<p:inputText id="estado" value="#{usuarioMB.promotor.endereco.estado}" size="2"/>
					</h:panelGrid>  
				</p:fieldset>

				<p:fieldset legend="Contato" toggleable="true" toggleSpeed="500">  
					<p:ajax event="toggle" listener="#{fieldsetBean.handleToggle}" update="growl" />  
					<h:panelGrid columns="2" cellpadding="10">  
						<h:outputLabel styleClass="labelForm" value="Telefone: " for="tel"/>
						<p:inputText id="tel" value="#{usuarioMB.promotor.contato.numeroTelefone}"/>

						<h:outputLabel styleClass="labelForm" value="Celular: " for="cel"/>
						<p:inputText id="cel" value="#{usuarioMB.promotor.contato.numeroCelular}"/>

						<h:outputLabel styleClass="labelForm" value="Email: " for="email"/>
						<p:inputText id="email" value="#{usuarioMB.promotor.contato.email}"/>
					</h:panelGrid>  
				</p:fieldset>

				<p:panel style="text-align: center" collapsed="2">
					<p:commandButton value="Salvar" action="#{usuarioMB.salvar}"/>
					<p:commandButton value="Cancelar" type="reset"/>
				</p:panel>
			</p:panel>
		</h:form>
    </ui:define>
</ui:composition>

UsuarioMB

package com.modelo.managedBean;

import com.modelo.bean.Administrador;
import com.modelo.bean.Promotor;
import com.modelo.bean.Usuario;
import com.modelo.dao.UsuarioDAO;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

@ManagedBean
@SessionScoped
public class UsuarioMB {

	private Integer id;
	private UsuarioDAO usuarioDAO = new UsuarioDAO();
	private Administrador administrador = null;
	private Promotor promotor = new Promotor();
	private List<Usuario> usuarios = new ArrayList<Usuario>();

	public String logOut() {
		getRequest().getSession().invalidate();
		return "logout";
	}

	public boolean isUserAdmin() {
		return getRequest().isUserInRole("admin");
	}

	public boolean isUserPromotor() {
		return getRequest().isUserInRole("promotor");
	}

	private HttpServletRequest getRequest() {
		return (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
	}

	// REGRAS DE NEGOCIO
	public Promotor getPromotor() {
		if (promotor.getLogin().equals("")) {
			return promotor;
		} else if (promotor != null) {
			ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
			String login = context.getUserPrincipal().getName();
                        PEGAR DO BD
		}
		return promotor;
	}

	public Administrador getAdministrador() {
		if (administrador != null) {
			ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
			String login = context.getUserPrincipal().getName();
			administrador = new Administrador();
			administrador.setLogin(login);
			//TERMINARRRR
		}
		return administrador;
	}

	public String salvar() {
		promotor.getGrupoAcesso().setLogin(promotor.getLogin());
		if (usuarioDAO.inserirUsuario(promotor)) {
			return "sucessoOperacao";
		} else {
			return "falhaOperacao";
		}
	}
}

No caso, eu posso cadastrar somente um Promotor mas tipo não consigo fazer funcionar para as duas situações: cadastrar e recuperar do BD.
Por que o método getPromotor é chamado quando estou cadastrando um novo Promotor?

Peguei por base o post do jakefrog http://uaihebert.com/?p=836&page=8

Alguém consegue me dar uma ajuda na lógica, não sei como tratar a questão do cadastro e da recuperação na sessão na mesma classe.