Olá pessoal, eu estou desenvolvendo como um trabalho universitário o Jogo da Vida distribuído utilizando CORBA e, em tempo de execução, o usuário pode escolhe o número de servidores a serem utilizados. Eu desenlvi aqui o jogo, a distribuição está funcionando, porém o problema é o seguinte: se eu carrego mais de um servidor no meu “orbd” e mando executar a aplicação ele soh utiliza um servidor, ou seja, eu devo chamar explicitamente o método de um servidor específico. Alguem sabe como eu faço isso? Como eu pego os servidores carregados no “orbd”? Alguém tem alguma sugestão de como eu posso mandar cada parte da matriz para um servidor diferente?
Objetos CORBA são mapeados nos servidores que os publicam. Aliás, via de regra e graças a Deus, o cliente nem sabe nem tem como escolher o servidor.
Qual ORB você está usando? De qual “matriz” você está falando? Será que você poderia tentar ser mais claro a respeito de qual o problema?
[]'s
Giuliano
R
RicardoLuis
É que assim, o jogo da vida é uma matriz e tal. O que o problema deve fazer? ele deve dividir a matriz em partes e mandar cada uma destas partes para um dos servidores, porém mesmo eu carregando no servidor de nomes mais de um servidor ele envia todas as requisições apenas para um, então eu gostaria de saber como eu devo fazer para enviar cada uma dessas partes para um servidor diferente…
Alguma sugestão?
Obs: estou utilizando o orb que vem junto com o JDK.
G
Giuliano_Mega
Você está publicando N objetos CORBA distintos (também com nomes distintos) no servidor de nomes, resolvendo N referências diferentes no cliente e encaminhando N requisições (uma para cada referência) e todas estão caindo no mesmo servidor?
R
RicardoLuis
não não, eu estou iniciando os servidores no servidor de nomes todos com o mesmo nome e com a mesma referência, mas não sei se o CORBA consegue trabalhar com isso… Tem como eu trabalhar dessa forma que estou estou fazendo? ou terei que carregar cada servidor com um nome?
G
Giuliano_Mega
A-há! Então descobrimos o problema!
Você definitivamente tem que publicar referências diferentes no servidor de nomes (tipo, servidores/JogoDaVida1, servidores/JogoDaVida2), etc.
Senão ele sobrescreve a referência e despacha tudo para o último servidor que você registrou.
R
RicardoLuis
Não não, ainda temos um problema huauhauha por que assim, é possivel que eu tenha N servidores carregados, então como eu descubro quais são os servidores carregados no servidores de nomes? tem algum método que faz isso? quem me retorna um array com os serviços carregados ou algo do genero?
G
Giuliano_Mega
Tem sim, mas eu não me lembro qual o nome. Só me lembro que ele é meio esquisito de usar.
Você vai ter que dar uma olhada na API de NamingContextExt e NamingContext e tentar descobrir.
Se você puder olhar o livro do Vinosky (Advanced CORBA Programming in C++, o melhor livro que eu já li sobre CORBA), provavelmente tem tudo isso lá.
R
RicardoLuis
ahh tahh, vou dar uma pesquisada neste livro… Só uma última dúvida e esta é um pouco mais simples.
É neste trecho de código que eu defino o nome que o servidor será carregado, certo? Estão eu terei que ter uma versão compilada diferente para cada instância do servidor?
G
Giuliano_Mega
Você pode passar o nome como parâmetro, não precisa compilar uma versão para cada objeto CORBA.
Você pode depois escrever um shell script para lançar um número configurável de servidores.
R
RicardoLuis
Giuliano, muito obrigado pela ajuda… vou dar uma pesquisada no livro que vocêindicou para achar essas dúvidas minhas…