Estamos fazendo um projeto a pedido do professor da faculdade onde temos que usar tecnologia RMI.
Estamos com ideia de uma aplicação para gerenciar uma rede locadoras.
Onde a ideia é a seguinte:
O cliente 1, chega na locadora A e pede para locar um DVD. O cliente 1 foi, anteriormente, cadastrado na locadora B, logo, a locadora A, vai requisitar as informações do cliente 1 para o servidor central. O servidor central localizará o cliente e solicitará as informações do mesmo à sua locadora de cadastro. Com as informações em mãos, o funcionário decidirá se o cliente pode ou não locar o DVD.
De acordo com essa ideia acima citada e a modelagem em anexo, qual seria a melhor forma de usar RMI?
Obs: (Seria viável trabalhar com RMI somente nos métodos de manipulação de dados, ou seja aqueles métodos que vão trabalhar com o Banco de Dados?)
Para trabalhar com objetos remotos para manipulação de dados no banco seu banco vai ter que estar disponivel para ser acessado da sua maquina cliente a distância, não aconselho a utlizar RMI para acessar banco. O ideal é que tenha uma interface de comunicação com os DAO´s e é bom que sua RMI utilize Socket´s SSL.
juliosampaio1988
Seria algo mais ou menos assim?
importjava.io.Serializable;importjava.util.HashMap;/** * Esta interface deve ser implementada pelos DAOs das classes * */publicinterfaceDaoextendsSerializable{publicbooleaninsert(Objecto);publicbooleanupdate(Objecto);publicbooleandelete(Objecto);publicObjectgetThis(intid);publicHashMap<String,Object>getAll();publicHashMap<String,Object>getWhere(Stringfield,Stringoperator,Stringvalue);publicHashMap<String,Object>query(Stringquery);}
importjava.rmi.Remote;importjava.rmi.RemoteException;/** * * Definição da Interface Remota, que executará os métodos de uma classe, que implemente a interface Dao, no servidor */publicinterfaceIDataBaseRequestextendsRemote{publicbooleanexecuteInsert(Daodao,Objecto)throwsRemoteException;publicbooleanexecuteUpdate(Daodao,Objecto)throwsRemoteException;.....outrosmétodosqueexecutemasaçõesdeumobjetoqueimpelenteDao}
/** Classe de implementação da interface remota*/publicclassDataBaseRequestextendsUnicastRemoteObjectimplementsIDataBaseRequest{publicDataBaseRequest()throwsRemoteException{super();}publicbooleanexecuteInsert(Daodao,Objecto)throwsRemoteException;returndao.insert(o);}publicbooleanexecuteUpdate(Daodao,Objecto)throwsRemoteException;returndao.update(o);}publicstaticvoidmain(String[]args){if(System.getSecurityManager()==null){System.setSecurityManager(newRMISecurityManager());}Stringname="//localhost/DataBaseRequest";try{DataBaseRequestdbr=newDataBaseRequest();Naming.rebind(name,dbr);System.out.println("ok");}catch(Exceptione){System.err.println("erro"+e.getMessage());e.printStackTrace();}}}
Muito obrigado por estar ajudando!!
Agradeço mais sugestões!