terça-feira, 16 de outubro de 2012

Java RMI


Modelo básico de Java RMI: Execução de objetos distribuídos em Java é possível com a ajuda de Java RMI. Um cliente pode acessar a um Hosted objeto Java que é em uma máquina virtual remoto a partir de qualquer JVM. Trata-se dois procedimentos de passo. O primeiro passo é sobre a execução dos clientes e servidores em Java. Esta vontade permite-lhes uma aparência orientada a objeto inerente e objetos de interagir com todas as características de Java. Então, é dizer que podemos acessar / executar um objeto servidor de qualquer máquina virtual java (JVM), portanto, podemos alcançar a plataforma de forma independente.

O segundo é que o modelo fundamental RMI Java sempre tem um programa cliente, e este programa cliente é usado para aproximar os objetos remotos a partir de qualquer máquina virtual Java. Para a conexão entre um cliente e um objeto remoto precisa de uma referência ao objeto, este é hospedado por um programa servidor. Objeto servidor remoto pode ser localizado pelo servidor de duas maneiras diferentes. Estes dois procedimentos têm seus próprios métodos para dar referência remota para o cliente. Estes são procedimentos são,

• Explicitamente.
• Implicitamente.

Ambos são usados ​​para "obter uma referência remota".

Java RMI Arquitetura:

Para criar um serviço de Matemática usando Java RMI tenho siga estes passos.

1. Definir uma interface remota
2. Implementação do servidor
3. Implementação do cliente
4. Compilar o código fonte
5. Iniciar o Java RMI registro, servidor e cliente.

Criar a interface remota:

Em Java RMI uma interface é usado para estender o "java.rmi.Remote" interface. Interface remota não tem nenhum método próprio, e é usado para a marcação de objectos remotos, o que torna possível identificar como é. (Harold R. E., 2000). Conjunto de métodos remotos também declarado na interface. Cada método único remoto deve declarar "java.rmi.RemoteException" ou uma superclasse do "RemoteException" na sua secção arremessos, além de qualquer excepção específica da aplicação.

Exemplo que eu usar neste parágrafo para interface remota ", bite.example.SampleServer". Ele declara os quatro métodos, "adição", "subtração", "multiplicação" e "Square".

A seguir está o código fonte para "SampleServer.java".

Servidor Amostra
bite.example pacote;
importar java.rmi.Remote;
java.rmi.RemoteException importação;
sampleserver interface pública estende remoto
{
Além public int (int x, int y) lança RemoteException;
public int subtrair (int x, int y) lança RemoteException;
multiplicam public int (int x, int y) lança RemoteException;
public int quadrado (int x) lança RemoteException;
getValue int público () lança RemoteException;
getLastOp public String () lança RemoteException;
}

Implementação de Sever:

Neste contexto o nosso "servidor" classe exporta o objeto remoto e esta classe de servidor contém um método "main", esta produzir uma instância da implementação do objeto remoto. Em seguida, ele combina essa instância para um nome em um registro RMI Java. A classe que ocupa este método "main" possivelmente a classe de implementação, por si só ou de outra classe completamente.

Na classe "Servidor" nós declaramos o método "main" para o servidor, e também realizar a sampleserver interface remota. Nosso servidor método "main" segue essas duas etapas. Um novo objeto remoto é produzido e exportado em primeiro passo, segundo passo é sobre o registro de um objeto com um registro RMI Java.
O código-fonte para a classe "SampleServerImpl.java" é o seguinte.

Impl Servidor amostra.
bite.example pacote;
importar java.rmi.registry.Registry;
importar java.rmi.registry.LocateRegistry;
java.rmi.RemoteException importação;
importação classe java.rmi.server.UnicastRemoteObject;
public class SampleServerImpl implementa sampleserver {
valor private int = 0;
lastOp private String;
SampleServerImpl () {
}
Além public int (int x, int y) lança RemoteException {
valor = x + y;
lastOp = "ADIÇÃO";
valor de retorno;
}
public int subtrair (int x, int y) lança RemoteException {
valor = x - y;
lastOp = "subtração";
valor de retorno;
}
multiplicam public int (int x, int y) lança RemoteException {
valor = x * y;
lastOp = "multiplicar";
valor de retorno;
}
public int quadrado (int x) lança RemoteException {
valor = x * x;
lastOp = "quadrado";
valor de retorno;
}
/ * Propriedades de Recursos * /
getValue int pública () {joga RemoteException
valor de retorno;
}

setValue public void (int valor) {
this.value = valor;
}
getLastOp public String () lança RemoteException {
voltar lastOp;
}
public void setLastOp (String lastOp) {
this.lastOp = lastOp;
}
public static void main (String args []) {
try {
/ / Criar e exportar um objeto remoto
SampleServerImpl obj = new SampleServerImpl ();
Toco sampleserver = (sampleserver) UnicastRemoteObject.exportObject (obj, 0);
/ / Registrar o objeto remoto com um registro de Java RMI
/ / E ligar stub do objeto remoto no registro
Registro Registro LocateRegistry.getRegistry = ();
registry.bind ("sampleserver", stub);

System.out.println ("Servidor pronto");
} Catch (Exception e) {
System.out.println ("exceção do servidor:" + e.toString ());
e.printStackTrace ();
}
}
}

Implementação de Cliente:

Classe cliente adquire um "esboço" para o registro de host do servidor, e é canhoto pesquisas objeto remoto no registro de seus nomes, e, em seguida, ele invoca a "adição", "subtração", "Multiply" e "quadrado" métodos no objeto remoto utilizando topo.
O código fonte para o cliente está seguindo.

Cliente Amostra

bite.example pacote;
import java.io. *;
importar java.rmi.registry.LocateRegistry;
importar java.rmi.registry.Registry;
importar java.util.Scanner;
public class {SampleClient
public static void main (String [] args) {
String host = (args.length início java-Djava.rmi.server.codebase = arquivo: C :/ rmi /-Djava.rmi.server.name = 192.168.0.03 bite.example.SampleServerImpl "
E então eu tenho a saída "Servidor pronto"

Inicie o cliente: Último passo é iniciar o cliente. Quando o servidor estava pronto eu abrir outra janela de linha de comandos e executar o cliente como seguir "C: \ rmi> java bite.example.SampleClient"

Nenhum comentário:

Postar um comentário