Oi Luiz,


     Desculpe a demora, mas e que estou fazendo um curso e o tempo para
     dar vazao nos e-mails esta bastante curto.

     Bom, com relacao ao RMI no Netscape nao testei ainda, portanto nao
     tenho nada a acrescentar nesta questao.

     Agora vamos ao exemplo que voce solicitou:

    Sugiro voce faca uma consulta Tutorial,

    http://java.sun.com/docs/books/tutorial/rmi/index.html

    Existe um exemplo interessante la e foi baseado nele que fiz
    minha implementacao.

    Como ja havia dito antes, com RMI a conversa entre as camadas
    se reduz a uma simples chamada de metodo de um objeto .
    . 

    Tentei colocar no exemplo apenas as  linhas chaves do processo  : 


    1) Codigo a ser colocado na Applet:

       import java.rmi.*;

       public class FrameInvSistemas extends JApplet {

         ObjPessoaInterface  objPessoa;

           ....
        // Este trecho obtem uma referencia para um Objeto remoto cujos metodos
        // podem ser acesados como se fosse um obj criado localmente. 
        try {
            objPessoa = (ObjPessoaInterface) Naming.lookup("//jupi/Pessoa");
        } catch (Exception e) {
           System.err.println(e.getMessage());
           e.printStackTrace();
        }


       // Este objeto remoto possui metodo chamado obtemNomesDependentes( String 
matricula );

       String mat = new String("R12345");
       Vector dependentes  = objPessoa.obtemNomesDependentes( mat );
       System.out.println(dependentes);
       
 
       }

      2) Codigo da Interface ObjPessoaInterface:

     import java.rmi.Remote;
     import java.rmi.RemoteException;
   
      public interface ObjPessoaInterface
                                     extends java.rmi.Remote {

       // Metodos de Consulta
       public Vector obtemNomesDependentes( String matricula ) throws RemoteException; 
     

    }


   3) Codigo do Objeto da Camada de Negocio:
       ------------------------------------------------------------

    import java.rmi.*;
    import java.rmi.server.UnicastRemoteObject;
    import java.util.*;
    import java.io.*;
    import java.sql.*;

    
    public class Pessoa
             extends UnicastRemoteObject
             implements ObjPessoaInterface{


  public Passoa( String s ) throws RemoteException {
       super();
       nomeServidor = s;
        try {
 
             // Conecta ao banco via JDBC/Thin
             DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver ());
             System.out.println("Registrei Driver JDBC - Oracle Thin" );
             con = DriverManager.getConnection (
                             urlJDBC, "R20972", "GUSTAVO");

             con.setAutoCommit(false);
  
        }catch (SQLException ex) {
             procPadraoSqlException( ex );
        }catch (java.lang.Exception ex) {
                   // trata alguma outra exception.
                   ex.printStackTrace ();
        }
  }


  public static void main( String[] args ){
 
       //  carrega Security manager
      System.setSecurityManager( new RMISecurityManager());

      try {
           Passoa obj = new Pessoa( "Pessoa Server" );
           System.out.println("Instanciei Pessoa");
           Naming.rebind("//jupi/Pessoa", obj );
           System.out.println("PessoaServer bound in registry" );
      }catch ( Exception e ){
           System.out.println("InvSistemasServer err: " + e.getMessage()
           + " Nome da Classe===> " + e.getClass());
           e.printStackTrace();
      }

  }

  public Vector obtemNomesDependentes( String matricula ){
         Vector depndentes = new Vector(0,10);
         Statement stmt = null;
         ResultSet rs   = null;
         try{
           stmt = con.createStatement();
           rs = stmt.executeQuery( Select deps.nome from pessoa pes , dependentes deps 
where pes.matricula = " + matricula );
           while (rs.next()){
              dependentes.addElement( new String( rs.getString(1) ) );
           }
           rs.close();
           stmt.close();

         }catch (SQLException ex) {
             procPadraoSqlException( ex, selectBibliotecas );
         }catch ( Exception e ){
              System.err.println("InvSistemasServer exception: " + e.getMessage());
              e.printStackTrace();
         }
          return dependentesv;
  }

  
    Antes de montar este exemplo sugiro que voce coloque para funcionar o exemplo
    do tutorial antes, la estao as dicas de como compilar e colocar em producao uma 
    app RMI.
 
    Atenciosamente, 


     Helio

 
----- Mensagem original -----
De:             LUIZ CARLOS FILIPPI JUNIOR [SMTP:[EMAIL PROTECTED]]
Enviada em:             Terca-feira, 25 de Janeiro de 2000 10:12
Para:           'Helio Rugani Brandao'
Cc:             [EMAIL PROTECTED]
Assunto:                RES: RE: [SouJava-J] Applet no Netscape X Internet Explorer

Legal Helio,

Obrigado pea atencao !

Pois e, e mesmo um saco a preocupacao com a passagem dos "bagulhos" entre as
camadas.

Voce poderia me mandar um "pedaco" so servidor "objeto de negocio" e do
client "Applet ou App" ?

Gostaria de testar isso ?

Voce sabe se no Netscape o RMI funciona ?

[]?s

             Junior

> ----- Mensagem original -----
> De:           Helio Rugani Brandao [SMTP:[EMAIL PROTECTED]]
> Enviada em:           Terca-feira, 25 de Janeiro de 2000 10:18
> Para:         'LUIZ CARLOS FILIPPI JUNIOR'
> Assunto:              RES: RE: [SouJava-J] Applet no Netscape X Internet
> Explorer
> 
>      Luiz,
> 
>      No meu projeto implrmentei iniciamente comunicacao via Socket.
>     Examente como voce sugeriu para a Luciana.
> 
>     A comunicacao funcionou mas percebia que para grandes projetos eu
> precisava
>    de uma abordagem de nivel mais elevado para a comunicacao entre a
> camada
>    visual ( Applet ou mesmo uma AppJava ) e a camada central que costumo
> chamar de 
>    camada de objetos de negocio. Usando Sockets a passagem de dados ocorre
> via
>    streams ( de bytes, caracteres, ou mesmo de objetos serializados ) e
> voce absorve toda 
>    responsabilidade de codificar estas "baixarias" que normalmente nao
> teem nada
>    a ver com o problema a ser resolvido e portanto dispersam sua atencao
> em relacao
>    a essencia do problema a ser resolvido pelo sistema. 
> 
>    Aprofundando mais meus conhecimentos, verifiquei que o Java ( como
> sempre )
>    ja tinha uma solucao para o este problema. O RMI me oferecia exatamente
> o que eu
>   precisava. Em vez de Streams era possivel passar objetos inteiros de uma
> camada
>   para outra. Na realidade tudo acontece e via Sockets mesmo mas o RMI me
> abstraia
>   de toda aquela "baixaria" descrita acima e usando uma sintaxe limpa. Com
> RMI
>   toda a comunicacao entre as camadas reduziu-se a uma simples chamada
>   de metodo passando seus respectivos parametros e recebendo o devido
> retorno.
> 
>   Com RMI praticamente pode-se instanciar um objeto em outra maquina e
> trata-lo
>   como se fosse um objeto local de sua aplicacao.
> 
>    Quanto ao problema com os browsers. Aqui o browser padrao da empresa e
>    o Internet Explorer da Microsoft, que omitia as classes de suporte a
> RMI
>    de sua maquina virtual. Via lista de discussao acabei descobrindo que a
> 
>    Microsoft disponibilizava para Download as classes RMI que deveriam ser
> colocadas
>    num deteminado diretorio de sistema para que as coisas funcionassem.
>    Nao cheguei a testar esta opcao, pois ja havia solucionado o problema
> via
>    Plug-in Java. Eu precisava usar objetos Swing na applet tambem e so 
>   o Plug-in me oferecia solucao para os dois problemas.
> 
>    
>   Abracos
>   
>   Helio
>    
> 
> ----- Mensagem original -----
> De:           LUIZ CARLOS FILIPPI JUNIOR [SMTP:[EMAIL PROTECTED]]
> Enviada em:           Segunda-feira, 24 de Janeiro de 2000 14:27
> Para:         '[EMAIL PROTECTED]'; 'Helio Rugani Brandao'
> Assunto:              RES: RE: [SouJava-J] Applet no Netscape X Internet
> Explorer
> 
> Helio,
> 
>     Como ja sugeri a Luciana, eu criei um "Servidor SQL", que so faz
> acesso
> ao Oracle e devolve o resultado
> ao Applet ou Aplicacao Cliente que solicita, e devolve isso via Socket,
> pois
> algumas versoes de Browser, tinham
> problemas em suportar  RMI. Voce passou por isso ? Que browsers voce usa ?
> Qual seria a melhor alternativa para este caso ? Socket ou RMI ?
> 
> Oque os nossos JAmigos acham ???
> 
> 
> 
> []?s
> > ----- Mensagem original -----
> > De:         Helio Rugani Brandao [SMTP:[EMAIL PROTECTED]]
> > Enviada em:         Segunda-feira, 24 de Janeiro de 2000 10:28
> > Para:               '[EMAIL PROTECTED]'
> > Assunto:            RES: RE: [SouJava-J] Applet no Netscape X Internet
> > Explorer
> > 
> >     Luciana,
> > 
> >     O acesso a banco de dados via applet, por questao de seguranca
> >     esta sugeito a uma serie de restricoes que podem ser contornadas
> >     via signed applets e alteracoes no arquivo javapolicy do JRE
> >     das maquinas clientes.
> > 
> >     Caminhar na direcao acima citada pode ser uma saida, 
> >     mas eu sugiro que voce nao faca acesso a BD diretamente da applet.
> >     De certo modo voce sempre se deparara com problemas de seguranca
> >     alem de onerar demais o sistema pois cada applet se transformara
> >     em uma ou mais conexoes com o BD.
> > 
> >     Aqui fiz uma pequena aplicacao que funciona tanto stand alone como
> >    dentro de browser acessando o Oracle 7.
> > 
> >    Coloquei na applet apenas a logica da camada visual e esta applet
> >    conecta-se via RMI com uma outra app java ( esta sim devidamente
> >    conectada ao Banco e sem nenhuma restricao pois nao esta submissa
> >    as restricoes do security manager da JVM dos browsers ) que busca
> >    os dados solicitados e os envia para o applet popular os devidos
> >    componetes visuais com seus respectivos conteudos.
> >    Tal procedimento alivia o banco pois apenas esta app java central
> >    conecta-se ao banco e pode compartillar esta conexao ( ou seu
> >    pool de conexoes ) com todos os applets clientes. 
> > 
> >    Esta abordagem tambem possui o beneficio de deixar as applets
> >    menores aliviando seu download e se voce lancar mao de
> >   apenas componentes visuais padroes da Maquina Vitual utilizada
> >   elas ficam ainda menores porque praticamente 99 %
> >   das classes visuais ja estariam presentes na maquina local e nao
> >   precisariam ser baixadas.
> > 
> >   Abracos,
> > 
> >   Helio 
> > 
> >   
> >    
> >   
> >     
> > 
> > ----- Mensagem original -----
> > De:         [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED]]
> > Enviada em:         Segunda-feira, 24 de Janeiro de 2000 9:22
> > Para:               [EMAIL PROTECTED]
> > Assunto:            Re: RE: [SouJava-J] Applet no Netscape X Internet
> > Explorer
> > 
> > Caros amigos,
> > 
> > Acredito que o JAVA perde muito em 
> > credibilidade frente a comunidade de 
> > desenvolvedores por problemas como estes 
> > relatados por voces. 
> > Quem ja nao passou horas tentando 
> > debugar(applet)
> > um problema, e quando apenas mudou de 
> > visualizado(Netscape para I.E, ou 
> > vice-versa) tudo comecou a funcionar?
> > Tenho uma  applet ao qual gostaria de usar 
> > o LayoutManager CardLayout, quando uso o 
> > I.E funciona legal, mas quando uso o 
> > netscape simplesmente nao funciona. 
> > 
> > Quando cheguei nesse ponto, pensei em 
> > simplesmente usar o I.E, mas ai neste 
> > Browse o meu procedimento de acesso a dados 
> > simplesmente nao funciona(diz que nao 
> > tenho acesso a classe 
> > sun.jdbc.odbc.JdbcOdbcDriver)?
> > 
> > Alguem ja teve esse problema???
> > 
> > Atenciosamente,
> > Luciana Paiva
> > 
> > OBS. Estou tentando acessar uma base em
> > DB2
> > 
> >     --------------------------- LISTA SOUJAVA
> ---------------------------
> >     http://www.soujava.org.br  -  Sociedade de Usuarios Java da
> Sucesu-SP
> >     [para sair da lista:
> http://www.soujava.org.br/forum/cadastrados.htm]
> >
> ---------------------------------------------------------------------
> > 
> >     --------------------------- LISTA SOUJAVA
> ---------------------------
> >     http://www.soujava.org.br  -  Sociedade de Usuarios Java da
> Sucesu-SP
> >     [para sair da lista:
> http://www.soujava.org.br/forum/cadastrados.htm]
> >
> --------------------------------------------------------------------- <<
> Arquivo: ATT00000.htm >>  << Arquivo: ATT00006.htm >> 

    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a