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);
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();
}
/** 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;
{
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);
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
// 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 {
{
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;
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();
{
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());
// 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, " ");
}
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(" ");
}
}//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
