Oi Pessoal


Gostaria de compartilhar com os colegas javaneses os resultados positivos 
obtidos na implementacao de um exemplo usando RMI, pois a duvida que 
enfrentei pode ser a duvida futura de outros profissionais.

Meu objetivo aqui nao e ensinar RMI, mas apenas facilitar a
implementacao de um exemplo completo que pode ser conseguido no endereco 
abaixo:

http://java.sun.com/products/jdk/1.1/docs/guide/rmi/getstart.doc.html

Fiz algumas adaptacoes nos fontes originais,
como a eliminacao da primeira linha que referencia "packages".
Fiz isso apenas por questao de teste.

Outras alteracoes foram realmente necessarias, pois havia referencia
a objetos que nao existiam.

Aqui estao os programas alterados

*************
* Hello.java
*************
import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Hello extends Remote {
    String sayHello() throws RemoteException;
}



***********************
HelloImpl.java
***********************

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.server.UnicastRemoteObject;

public class HelloImpl extends UnicastRemoteObject
    implements Hello {

    public HelloImpl() throws RemoteException {
        super();
    }

    public String sayHello() {
        return  "Hello World!";
    }

    public static void main(String args[]) {

        // Create and install a security manager
        if (System.getSecurityManager() == null) {
            System.setSecurityManager(new RMISecurityManager());
        }
        try {
//            HelloImpl obj = new HelloImpl();
            Hello obj = new HelloImpl();
            // Nesta linha voce coloca o numero do seu IP
            Naming.rebind("//192.168.0.2/Hello", obj);
            System.out.println("HelloServer bound in registry");
        } catch (Exception e) {
            System.out.println("HelloImpl err: " + e.getMessage());
            e.printStackTrace();
        }
    }
}



*************************
* HelloApplet.java
*************************
import java.applet.Applet;
import java.awt.Graphics;
import java.rmi.Naming;
import java.rmi.RemoteException;

public class HelloApplet extends Applet {

    String message = "blank";

    // "obj" is the identifier that we'll use to refer
    // to the remote object that implements the "Hello"
    // interface
    Hello obj = null;

    public void init() {
        try {
            String nome =  "Hello";
            System.out.println("EMILIO:"+nome);
            obj = (Hello)Naming.lookup(nome);
            message = obj.sayHello();
        } catch (Exception e) {
            System.out.println("HelloApplet exception: " +
                                    e.getMessage());
            e.printStackTrace();
        }
    }

    public void paint(Graphics g) {
        g.drawString(message, 25, 50);
    }
}


*****************************************************************************
java.policy    (preste bem atencao no nome deste arquivo)
Este arquivo nao aparece no exemplo. Descobri sua utilidade por acaso
analisando outro exemplo. Ele pode ser conseguido em
http://developer.java.sun.com/developer/onlineTraining/Programming/BasicJava1/rmi.html
************************************************************************
grant {
        // Allow everything for now
        permission java.net.SocketPermission "*:1024-65535", 
"connect,accept,resolve";
        permission java.net.SocketPermission "*:80", "connect";
        permission java.awt.AWTPermission "accessEventQueue";
        permission java.awt.AWTPermission "showWindowWithoutWarningBanner";
        permission java.util.PropertyPermission "user.home", "read";
        permission java.io.FilePermission "${user.home}/text.txt", "write";
        permission java.io.FilePermission "${user.home}/text2.txt", "read";

};



*************************
hello.html
*************************

HTML
<title>Hello World</title>
<center> <h1>Hello World</h1> </center>

A mensagem do Servidor eh:
<p>
<applet codebase="classes/"
code="HelloApplet"
        width=500 height=120>
</applet>
<HTML>



Os resultados positivos comecaram a aparecer depois que instalei um
servidor web local(no meu caso, o Personal Web Server).


Apos a instalacao do Personal Web Server realizei os seguintes passos:

No ambiente de rede configurei o IP para 192.168.0.2 (este numero pode 
mudar)

Criar um diretorio
MD C:\HOME
Configurar diretorio root do web server para
C:\HOME
Criar os diretorios
MD C:\home\hello
md c:\home\hello\classes
MD C:\home\hello\public_html
MD C:\home\hello\public_html\classes

Copiar todos os arquivos *.java para c:\home\hello\classes

Copiar o arquivo hello.html para c:\home\hello\public_html

Copiar o arquivo java.policy para c:\home\hello\public_html\classes


cd\home\hello\classes
Neste diretorio crie um arquivo .BAT que contenha
as seguintes linhas:

javac Hello.java
javac HelloImpl.java
javac HelloApplet.java
rmic HelloImpl
copy Hello*.class ..\public_html\classes
del Hello*.class
cd..\public_html

Salvar e executar o arquivo .BAT

Abra uma nova janela do MS-DOS sem fechar a janela atual

cd\home\hello\public_html\classes
set classpath=
start rmiregistry


retorne a janela anterior do MS-DOS
cd\home\hello\public_html\classes
crie um arquivo .BAT neste diretorio com a seguinte linha
java -Djava.rmi.server.codebase=http://localhost/hello/public_html/classes/ 
-Djava.security.policy=java.policy HelloImpl
Salve o arquivo e execute-o.
Aguarde uns instantes ate que ele mostre uma mensagem indicando que o 
servidor esta funcionando

Abra uma nova janela do MS-DOS
cd\home\hello\public_html
appletviewer hello.html
Aguarde alguns instantes ate que o applet mostre a mensagem "Hello World"

*********************************************
Um Agradecimento Especial para os amigos
Luis Fernando e
Ricardo Santiago
*********************************************
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com

    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
    [dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a