boa tarde.
tenho um atributo dentro do managed bean, só que este atributo está sendo compartilhado entre outras session’s. o managed bean está com o scopo de session, fiz um teste rodei a aplicação em 2 máquinas diferentes e coloquei para ser exibido o id da session, o id é diferente, então para cada session é criado um managed bean, o problema está sendo o atributo dele. esse atributo é um objeto.
configuração do faces-config:
<managed-bean>
<managed-bean-name>agenteControle</managed-bean-name>
<managed-bean-class>br.com.winbooks.controle.Agente</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
manage bean:
public class Agente extends Generico {
private String descricaoPesquisa; // armazena o criterio de pesquisa.
private String opcaoPesquisaSelecionada; // armazena a condição de pesquisa.
private boolean montaResultadoPesquisa; // se true a tela renderiza a grade com o resultado da pesquisa.
private Map opcoesPesquisa; // armazena as opções de pesquisa.
private wb.src.bean.Bagente agente;
private wb.src.bean.Bendereco endereco;
private wb.src.bean.Btelefone telefone;
private wb.src.bean.BunidadeFederal unidadeFederal;
private DataModel listaAgente; // armazena o resultado da pesquisa.
private List<SelectItem> tiposTelefone; // armazena uma lista com os tipos de telefone, preparada para ser usada dentro do combo.
private List<SelectItem> tiposEndereco; // armazena uma lista com os tipos de endereço, preparada para ser usada dentro do combo.
private List<SelectItem> unidadesFederais; // armazena uma lista com as unidades federais, preparada para ser usada dentro do combo.
private String tipoEnderecoSelecionado; // armazena o tipo de endereço selecionado na tela.
private String tipoTelefoneSelecionado; // armazena o tipo de telefone selecionado na tela.
private String unidadeFederalSelecionada; // armazena a unidade federal selecionado na tela.
private boolean exibeTelefone = true;
public Agente() {
this.opcoesPesquisa = new HashMap();
this.opcoesPesquisa.put("Apelido", "Apelido");
this.opcoesPesquisa.put("Nome Completo", "Nome Completo");
this.opcaoPesquisaSelecionada = "Nome Completo";
}
// ////////////////////////////////////////////////////////////////////////////
public String getMsgCampoObrigatorio(){
return super.getMsgCampoObrigatorio();
}
// ////////////////////////////////////////////////////////////////////////////
public void setExibeTelefone(boolean exibeTelefone){
this.exibeTelefone = exibeTelefone;
}
public boolean getExibeTelefone(){
return this.exibeTelefone;
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Abre a tela para incluir um novo registro.
* @return
* String com o status.
*/
public String novo() {
this.agente = wb.src.facade.Fagente.getBeanAgente();
return "incluiNovoAgente";
}
/**
* Apaga o registro atual.
* @return
* String com o status.
*/
public String apaga() {
wb.src.bean.Bagente beanAgente =
(wb.src.bean.Bagente) listaAgente.getRowData();
if (wb.src.facade.Fagente.apagaPk(beanAgente.getPk())) {
return "sucessoApagaAgente";
}
return "falhaApagaAgente";
}
/**
* Salva o registro.
* @return
* String com o status.
*/
public String salva() {
if (wb.src.facade.Fagente.salva(this.agente)) {
return "sucessoSalvaAgente";
}
return "falhaSalvaAgente";
}
/**
* Abre a tela para alterar o registro atual.
* @return
* String com o status.
*/
public String altera() {
// String xx = this.getSessao();
wb.src.bean.Bagente beanAgente =
(wb.src.bean.Bagente) listaAgente.getRowData();
this.setAgente(wb.src.facade.Fagente.pesquisaPk(beanAgente.getPk()));
return "alteraAgente";
}
/**
* @return
* Bean com as informações atuais do registro.
*/
public wb.src.bean.Bagente getAgente() {
return this.agente;
}
/**
* @param agente
*/
public void setAgente(wb.src.bean.Bagente agente) {
this.agente = agente;
}
/**
* @return
* Bean com as informações do telefone.
*/
public wb.src.bean.Btelefone getTelefone() {
return this.telefone;
}
/**
* @param beanTelefone
*/
public void setTelefone(wb.src.bean.Btelefone beanTelefone) {
this.telefone = beanTelefone;
}
/**
* @return
* Bean com as informações do endereço.
*/
public wb.src.bean.Bendereco getEndereco() {
return this.endereco;
}
/**
* @param beanTelefone
*/
public void setEndereco(wb.src.bean.Bendereco beanEndereco) {
this.endereco = beanEndereco;
}
// ////////////////////////////////////////////////////////////////////////////
/**
* @return
* Resultado da pesquisa.
*/
public DataModel getResultadoPesquisa() {
return this.listaAgente;
}
public void setResultadoPesquisa(DataModel lista){
this.listaAgente = lista;
}
// ////////////////////////////////////////////////////////////////////////////
public void setDescricaoPesquisa(String descricao) {
this.descricaoPesquisa = descricao.trim();
}
public String getDescricaoPesquisa() {
return this.descricaoPesquisa;
}
// ////////////////////////////////////////////////////////////////////////////
public void setOpcaoPesquisaSelecionada(String opcao) {
this.opcaoPesquisaSelecionada = opcao;
}
public String getOpcaoPesquisaSelecionada() {
return this.opcaoPesquisaSelecionada;
}
// ////////////////////////////////////////////////////////////////////////////
public void setTipoEnderecoSelecionado(String tipoEndereco) {
this.tipoEnderecoSelecionado = tipoEndereco;
}
public String getTipoEnderecoSelecionado() {
return this.tipoEnderecoSelecionado;
}
// ////////////////////////////////////////////////////////////////////////////
public void setTipoTelefoneSelecionado(String tipoTelefone) {
this.tipoTelefoneSelecionado = tipoTelefone;
}
public String getTipoTelefoneSelecionado() {
return this.tipoTelefoneSelecionado;
}
// ////////////////////////////////////////////////////////////////////////////
public void setUnidadeFederalSelecionada(String unidadeFederal) {
this.unidadeFederalSelecionada = unidadeFederal;
}
public String getUnidadeFederalSelecionada() {
return this.unidadeFederalSelecionada;
}
// ////////////////////////////////////////////////////////////////////////////
public String pesquisa() {
this.setMontaResultadoPesquisa(true);
wb.src.bean.Bagente beanAgente = wb.src.facade.Fagente.getBeanAgente();
if (this.opcaoPesquisaSelecionada.equalsIgnoreCase("apelido")) {
beanAgente.setApelido(this.descricaoPesquisa);
}
if (this.opcaoPesquisaSelecionada.equalsIgnoreCase("nome completo")) {
beanAgente.setNome(this.descricaoPesquisa);
}
this.listaAgente = new ListDataModel(wb.src.facade.Fagente.listaPesquisaBean(beanAgente));
return "sucessoPesquisaAgente";
}
// ////////////////////////////////////////////////////////////////////////////
public void setMontaResultadoPesquisa(boolean montaResultado) {
this.montaResultadoPesquisa = montaResultado;
}
public boolean getMontaResultadoPesquisa() {
return this.montaResultadoPesquisa;
}
// ////////////////////////////////////////////////////////////////////////////
public void setOpcoesPesquisa(Map opcoesPesquisa) {
this.opcoesPesquisa = opcoesPesquisa;
}
public Map getOpcoesPesquisa() {
return this.opcoesPesquisa;
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Prepara os tipos de endereço, para ser usados em um combo.
* @return
* Lista com varios items.
*/
public List<SelectItem> getTiposEndereco() {
if (this.tiposEndereco == null) {
this.tiposEndereco = new ArrayList<SelectItem>();
List resultado = this.getListaTipoEndereco();
Iterator it = resultado.iterator();
while (it.hasNext()) {
wb.src.bean.BtipoEndereco beanTipoEndereco =
(wb.src.bean.BtipoEndereco) it.next();
this.tiposEndereco.add(
new SelectItem(beanTipoEndereco.getPk(), beanTipoEndereco.getDescricao()));
}
}
return this.tiposEndereco;
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Prepara os tipos de telefone, para ser usados em um combo.
* @return
* Lista com varios items.
*/
public List<SelectItem> getTiposTelefone() {
if (this.tiposTelefone == null) {
this.tiposTelefone = new ArrayList<SelectItem>();
List resultado = this.getListaTipoTelefone();
Iterator it = resultado.iterator();
while (it.hasNext()) {
wb.src.bean.BtipoTelefone beanTipoTelefone =
(wb.src.bean.BtipoTelefone) it.next();
this.tiposTelefone.add(
new SelectItem(beanTipoTelefone.getPk(), beanTipoTelefone.getDescricao()));
}
}
return this.tiposTelefone;
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Prepara as unidades federais, para ser usados em um combo.
* @return
* Lista com varios items.
*/
public List<SelectItem> getUnidadesFederais() {
if (this.unidadesFederais == null) {
this.unidadesFederais = new ArrayList<SelectItem>();
List resultado = this.getListaUnidadeFederal();
Iterator it = resultado.iterator();
while (it.hasNext()) {
wb.src.bean.BunidadeFederal beanUnidadeFederal =
(wb.src.bean.BunidadeFederal) it.next();
this.unidadesFederais.add(
new SelectItem(beanUnidadeFederal.getPk(), beanUnidadeFederal.getSigla()));
}
}
return this.unidadesFederais;
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Remove o telefone da lista. JSF.
* @return
*/
public String removeTelefone() {
if (this.agente.removeTelefone(this.converteInteiro(
this.getParamentro("idTelefoneApaga")))) {
return "sucessoApagaAgente";
}
return "falhaApagaAgente";
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Inclui um novo endereço na lista. JSF.
* @return
*/
public String novoEndereco() {
this.endereco = wb.src.facade.Fagente.getBeanEndereco();
return "incluiNovoAgenteEndereco";
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Edita o endereço atual. JSF.
* @return
*/
public String editaEndereco() {
this.setEndereco(this.agente.buscaEndereco(
this.converteInteiro(this.getParamentro("idEnderecoAltera"))));
this.tipoEnderecoSelecionado = "";
if (this.endereco.getTipoEndereco() != null) {
this.tipoEnderecoSelecionado = String.valueOf(this.endereco.getTipoEndereco().getPk());
}
this.unidadeFederalSelecionada = "";
if (this.endereco.getUnidadeFederal() != null) {
this.unidadeFederalSelecionada = String.valueOf(this.endereco.getUnidadeFederal().getPk());
}
return "sucessoManutencaoAgenteEndereco";
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Coloca ou altera o endereco na lista. JSF.
* @return
*/
public String manipulaEndereco() {
this.trataTipoEnderecoSelecionado();
this.trataUnidadeFederalSelecionada();
if (this.endereco.getPk() == 0) {
this.agente.setEndereco(this.endereco);
}
return "salvaManutencaoAgenteEndereco";
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Trata o tipo de endereco selecionado na tela.
*/
private void trataTipoEnderecoSelecionado() {
if (this.tiposEndereco != null) {
if (this.endereco == null ||
this.converteInteiro(this.tipoEnderecoSelecionado) !=
this.endereco.getTipoEndereco().getPk()) {
this.endereco.setTipoEndereco(this.getBuscaTipoEnderecoLista(
this.converteInteiro(this.tipoEnderecoSelecionado)));
}
}
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Trata o tipo de endereco selecionado na tela.
*/
private void trataUnidadeFederalSelecionada() {
if (this.unidadesFederais != null) {
if (this.unidadeFederal == null ||
this.converteInteiro(this.unidadeFederalSelecionada) !=
this.unidadeFederal.getPk()) {
this.endereco.setUnidadeFederal(this.getBuscaUnidadeFederalLista(
this.converteInteiro(this.unidadeFederalSelecionada)));
}
}
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Inclui um novo telefone na lista. JSF.
* @return
*/
public String novoTelefone() {
this.telefone = wb.src.facade.Fagente.getBeanTelefone();
return "incluiNovoAgenteTelefone";
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Edita o telefone atual. JSF.
* @return
*/
public String editaTelefone() {
this.setTelefone(this.agente.buscaTelefone(
this.converteInteiro(this.getParamentro("idTelefoneAltera"))));
this.tipoTelefoneSelecionado = String.valueOf(this.telefone.getTipoTelefone().getPk());
return "sucessoManutencaoAgenteTelefone";
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Coloca ou altera o telefone na lista. JSF.
* @return
*/
public String manipulaTelefone() {
this.trataTipoTelefoneSelecionado();
if (this.telefone.getPk() == 0) {
this.agente.setTelefone(this.telefone);
}
return "salvaManutencaoAgenteTelefone";
}
// ////////////////////////////////////////////////////////////////////////////
/**
* Trata o tipo de telefone selecionado na tela.
*/
private void trataTipoTelefoneSelecionado() {
if (this.tiposTelefone != null) {
if (this.telefone == null ||
this.converteInteiro(this.tipoTelefoneSelecionado) !=
this.telefone.getPk()) {
this.telefone.setTipoTelefone(this.getBuscaTipoTelefoneLista(
this.converteInteiro(this.tipoTelefoneSelecionado)));
}
}
}
// ////////////////////////////////////////////////////////////////////////////
}
obrigado a ajuda.