Fonte do artigo: Silicon Valley Power Autor: Mainstay
1. Introdução
EJB (Enterprise JavaBeans) é um conteúdo relativamente avançado em programação Java e também é o limite para os programadores Java avançarem do nível inicial ao nível especializado. Uma diferença significativa entre o SUN Certified Java Programmer (SCJP) e o SUN Certified Java Developer (SCJD) é que o SCJP não faz o teste EJB, enquanto o SCJD o faz. À medida que mais e mais empresas adotam a plataforma J2EE para desenvolver sistemas de aplicativos de comércio eletrônico, o desenvolvimento de EJB se tornou um problema que os programadores Java de hoje devem enfrentar.
Este artigo primeiro apresenta os princípios básicos de aplicativos gerais de objetos distribuídos com uma rotina e, em seguida, começa com download, instalação e configuração básicos e introduz gradualmente o método de programação EJB, tornando o aprendizado de EJB algo fácil e interessante.
2. Programa típico de objeto distribuído
Seja CORBA ou RMI, as estratégias para implementar objetos distribuídos são semelhantes. Podemos usar um exemplo de programa simples para simular a composição de um programa de objetos distribuídos.
Este exemplo simula o processo de solicitação remota de propriedades de objetos. Há um objeto remoto Dog na rede e agora precisamos obter seu atributo name (strName). O programa configura uma classe stub (Dog_Stub) no lado do cliente e inicia uma classe esqueleto (dog_Skeleton) no lado do servidor. Ambas as classes implementam a interface Dog_Stub e Dog_Skeleton se comunicam remotamente através do Socket. Quando o programa cliente DogClient envia uma solicitação para Dog_Stub para obter o atributo name, o objeto Dog_Stub envia o nome do método "getName ()" como uma string para o objeto Dog_Skeleton remoto através do Socket. content executa o método getName() do objeto DogServer para obter o nome do Dog e, em seguida, o retorna ao objeto DogStub por meio do Socket. Todo o processo é implementado através da rede, mas para o programa cliente DogClient, ele não sabe onde está o objeto Dog real, ou mesmo sabe que esse processo passou pela rede. Ele só sabe que a solicitação para obter o atributo name. obteve um resultado satisfatório.
Na verdade, a implementação de CORBA ou Java RMI é semelhante a esta, mas é muito menos simples. Este programa é útil para ilustrar o mecanismo de execução de aplicativos de objetos distribuídos.
O código fonte do programa é o seguinte:
ArquivoDog.java
interface pública Cachorro
{
public String getName() lança exceção;
}/* Cachorro */
ArquivoDogClient.java
classe pública DogClient
{
public static void main(String[] args) lança exceção
{
Cachorro cachorro = new Dog_Stub();
String strNome = dog.getNome();
System.out.println("Nome:" + strNome);
}//principal()
}/* DogClient */
FileDogServer.java
classe pública DogServer implementa Dog
{
String strNome;
int idade;
public String getName() lança exceção
{
return strNome;
}//getNome()
public DogServer (String strNomeInput)
{
strNome = strNomeInput;
}//DogServer()
public static void main(String[] args) lança exceção
{
Novo Dog_Skeleton( novo DogServer( "TOMCAT" ) );
}//principal()
}/* DogServer */
Arquivo Dog_Skeleton.java
importar java.io.*;
importar java.net.*;
classe pública Dog_Skeleton estende Thread
{
ServerSocket estático ss = null;
DogServerds;
public Dog_Skeleton (DogServer dsInput) lança exceção
{
ds = dsInput;
se(ss==nulo)
ss = novo ServerSocket(8000);
this.start();
}//Cão_Esqueleto()
execução nula sincronizada pública()
{
Tentar
{
enquanto (ss! = nulo)
{
Soquete soquete = ss.accept();
ObjectInputStream ois = new ObjectInputStream(soquete.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
String strMethodName = (String)ois.readObject();
if (strMethodName.equals("getNome()" ) )
oos.writeObject(ds.getName());
oos.flush();
ois.close();
oos.close();
soquete.close();
}//enquanto
}//tentar
pegar(Exceção e)
{
e.printStackTrace();
}//pegar
}//correr()
}/* Cachorro_Esqueleto */
ArquivoDog_Stub.java
importar java.io.*;
importar java.net.*;
A classe pública Dog_Stub implementa Dog
{
Tomada de soquete;
ObjectOutputStream oos;
ObjectInputStream ois;
public Dog_Stub() lança exceção
{
soquete = novo Soquete("wudi", 8000);
Oos = new ObjectOutputStream(soquete.getOutputStream());
Ois = new ObjectInputStream(soquete.getInputStream());
}//Dog_Stub()
public String getName() lança exceção
{
Oos.writeObject("getNome()");
Oos.flush();
return (String)ois.readObject();
}//getNome()
}/* Cachorro_Stub */
Ao executar este programa de objeto distribuído, primeiro execute DogServer e, em seguida, execute DogClient no cliente para ver os resultados.