Hoje estou fazendo um sistema distribuido mas, gostaria de fazer isso de forma transparente! Nao quero programadores fique quebrando a cabeca para tratar objetos remotos de uma forma e objetos locais de outra!
Hoje tentando fazer as primeiras distribuicoes dos objetos atraves de RMI toda minha transparencia foi para o buraco! Tudo isso gracas a:
- Se eu quero tornar uma interface remota todas as interfaces acima dela devem ser remotas. Com isso interfaces que eu nem usarei remotamente acabam tendo que ser, so porque esta acima de uma interface remota;
- Todos os metodos que sao de uma interface QUE PODE ser usada remotamente deve gerar RemoteException. Com isso mesmo que use essa interface em um sistema nao remoto eu vou ter que tratar RemoteException mas, pra que? meu sistema nao e remoto!
RemoteException poderia pelo menos ser uma excecao nao checada, assim eu poderia marcar minhas interfaces como remotas e so tratalas como remotas onde eu quiser. Nos outros lugares eu as trataria de uma forma unica independendo elas serem remotas ou nao.
Bom solucoes que eu pensei:
-
Colocar minhas interfaces como remote mas em vez dos metodos lancarem RemoteException, lancar Exception. Assim eu nao preciso me preocupar se um objeto e remoto ou nao, se eu quiser trata-lo como remoto so basta eu tratar RemoteException na cadeia. O unico problema e que metodos que nao geram excecao passam a poder gerar para o caso deles serem utilizados remotamente; E vai rolar gatilho vai rolar… Gatilhoooo Gatilhooo…
-
Colocar uma camada de integracao onde eu tenho adaptadores de objetos locais para objetos remotos e tambem o inverso adaptadores de objetos remotos para objetos locais.
O que voces acham de tudos isso? Dos problemas? Das solucoes? Comos vcs ja fizeram?
Aguardo a ajuda de vcs um abraco…