Tenho  um cliente que gera uma data (Classe tipo Data).No construtor de DataImpl no servidor coloco a data disponivel no BOA. Boa.obj_is-Ready(DataGeradaNoCliente).
 
Quando saio do cliente e entro novamente, o cliente nao conseque reconhecer minha data. Se eu utlizar uma data que foi carregada no servidor dá certo.
Gostaria de entender como funciona este processo de disponibilizacao de objetos no BOA. do Visibroker.
Coloco a classe Servidor no ar, este carrega alguns objetos e datas.
 
Em outro prompt do DOS, executo o Cliente.Quando gero uma nova data no Cliente e saio deste, quando entro novamente(sem tirar o Servidor do ar) ele não reconhece minha  data gerada no Cliente, nao consegue por exemplo executar o metodo da classe Data - diamesano().
 
Abaixo segue o codigo:
 
Public class DataImpl extends SOS._DataImplBase {
   private int dia;
   private int mes;
   private int ano;
  /** Construct a persistently named object. */
  public DataImpl(java.lang.String name, int dia, int mes, int ano ) {
    super(name);
    this.dia=dia;
    this.mes=mes;
    this.ano=ano;
    org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init();
    org.omg.CORBA.BOA boa = orb.BOA_init();
    boa.obj_is_ready(this);
 
  }
  /** Construct a transient object. */
  public DataImpl() {
    super();
  }
 
A logica do cliente
 
  Data transformaStringEmData(String datastr)
  {
    int diai =0;
    int mesi = 0;
    int anoi = 0;
    int delim =0;
    String s1= null;
    String s2= null;
    String s3= null;
 
    try
    {
 
      delim = datastr.indexOf("/");
      s1 = datastr.substring(delim-2,delim); // dia
      delim = datastr.indexOf("/", delim+1);
      s2 = datastr.substring(delim-2,delim); //mes
      s3 = datastr.substring(delim+1,delim+5); //ano
      //
    Integer dia = new Integer(s1);
    diai = dia.intValue();
    Integer mes = new Integer(s2);
    mesi = mes.intValue();
    Integer ano = new Integer(s3);
    anoi = ano.intValue();
    }
    catch (java.lang.NumberFormatException e)
            {
              return null;
            }
   catch (java.lang.StringIndexOutOfBoundsException be)
            {
              return null;
            }
    if (!validaData(diai,mesi,anoi))  // se data errada
        return null;
    if (s1.length() < 2)
        s1 = 0 + s1;
    if (s2.length() < 2)
        s2 = 0 + s2;
    String name = s1+s2+s3;
  Data dataretorno = new DataImpl(name, diai,mesi,anoi);
 
    return dataretorno;
  }
 
Quando tento acessar a data:
 
  this.solicitacoes = usuario.consultaSolicitacao(estab,numeroint, situacao, palavra, dtiniexec, dtfimexec, dtiniprog, dtfimprog, nomeexec, areasolic, areaexec,nomesolic);
  // Monta o multList com os dados das Solicitacaoes que estao no array
 
   textField1.setText("Carregando a Lista de Solicitações ");
 
  for (int i = 0; i< solicitacoes.length; i++)
  {
    try {
 
      if (solicitacoes[i] != null)
        {
 
             // numero da Solic
            org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init();
           try {
              nrint = new Integer(solicitacoes[i].numero());
              multiList1.addTextCell(i,0,nrint.toString());
          }
          catch (java.lang.NumberFormatException e){}
            // descricao da solic
            String desc = null;
            nrint = new Integer(solicitacoes[i].numero());
          String numerostr = nrint.toString();
            nrint = new Integer(0);
          String seqstr = nrint.toString();
            String descricao = numerostr + seqstr;
 
            try
            {
              Descricao descref = DescricaoHelper.bind(orb,descricao);
              if (descref !=null)
                 desc = descref.descricao();
            } //fecha try
            catch (org.omg.CORBA.SystemException se ){}
            //desc = solicitacoes[i].descricoes()[0].descricao();
            multiList1.addTextCell(i,1,desc);
            //textField1.setText(descref.descricao()  + " Solic " + solicitacoes[i].numero() + solicitacoes[i].descricoes()[5].sequencia());
            //
          // Situacao
            multiList1.addTextCell(i,2,solicitacoes[i].situacao());
          Usuario ususolic = solicitacoes[i].ususolic();
 
          multiList1.addTextCell(i,3,ususolic.usu());
          // Data solicitacao
          Data datasolic = solicitacoes[i].datasolic();  //aqui o nabo
            //
            multiList1.addTextCell(i,4," ");
          try{
              Integer dtint = new Integer(datasolic.diamesano());
              multiList1.addTextCell(i,4,dtint.toString());
          }
          catch (java.lang.NumberFormatException e){}
          //Nome executante
          Executante exec = solicitacoes[i].usuexec();
            multiList1.addTextCell(i,5,exec.usu());
 
          multiList1.addTextCell(i,6," ");
          try{
              Integer priori = new Integer(solicitacoes[i].prioridade());
                multiList1.addTextCell(i,6,priori.toString());
          }
          catch (java.lang.NumberFormatException e){}
            //
          // Data inicio
            Data datainic = solicitacoes[i].datainicio();
            if (datainic !=null)
            {
                    Integer dtint = new Integer(datainic.diamesano());
                  multiList1.addTextCell(i,7,dtint.toString());
          }
          else
          {
             multiList1.addTextCell(i,7, " ");
          }
 
         }
       }//fecha try
       catch (java.lang.NullPointerException ne){}
     } // fecha for
    textField1.setText(" ");
  }
O exception que ocorre é que nao consegue executar o metodo diamesano().
 
 
Espero que alguem me ajude....
 
Obrigado

Responder a