Sumber Artikel: Silicon Valley Power Penulis: Andalan
1. Pendahuluan
EJB (Enterprise JavaBeans) adalah konten yang relatif canggih dalam pemrograman Java, dan juga merupakan ambang batas bagi pemrogram Java untuk maju dari tingkat pemula ke tingkat ahli. Perbedaan yang signifikan antara SUN Certified Java Programmer (SCJP) dan SUN Certified Java Developer (SCJD) adalah SCJP tidak mengikuti tes EJB, sedangkan SCJD yang mengikuti. Karena semakin banyak perusahaan yang mengadopsi platform J2EE untuk mengembangkan sistem aplikasi e-commerce, pengembangan EJB telah menjadi masalah yang harus dihadapi oleh programmer Java saat ini.
Artikel ini pertama-tama memperkenalkan prinsip-prinsip dasar aplikasi objek terdistribusi umum secara rutin, kemudian dimulai dengan pengunduhan dasar, instalasi, dan konfigurasi, dan secara bertahap memperkenalkan metode pemrograman EJB, menjadikan pembelajaran EJB menjadi hal yang mudah dan menarik.
2. Program objek terdistribusi yang khas
Baik itu CORBA atau RMI, strategi untuk mengimplementasikan objek terdistribusi serupa. Kita dapat menggunakan contoh program sederhana untuk mensimulasikan komposisi program objek terdistribusi.
Contoh ini menyimulasikan proses permintaan properti objek dari jarak jauh. Ada objek jarak jauh Dog di jaringan, dan sekarang kita perlu mendapatkan atribut namanya (strName). Program ini menyiapkan kelas stub (Dog_Stub) di sisi klien dan memulai kelas kerangka (dog_Skeleton) di sisi server. Kedua kelas mengimplementasikan antarmuka Dog_Stub dan Dog_Skeleton berkomunikasi dari jarak jauh melalui Socket. Ketika program klien DogClient mengirimkan permintaan ke Dog_Stub untuk mendapatkan atribut nama, objek Dog_Stub mengirimkan nama metode "getName()" sebagai string ke objek Dog_Skeleton jarak jauh melalui Socket. Setelah objek Dog_Skeleton menerima string ini, ia akan melakukan The content mengeksekusi metode getName() pada objek DogServer untuk mendapatkan nama Anjing, dan kemudian mengembalikannya ke objek DogStub melalui Socket. Seluruh proses diimplementasikan melalui jaringan, tetapi untuk program klien DogClient, ia tidak mengetahui di mana objek Dog sebenarnya berada, atau bahkan mengetahui bahwa proses ini telah melewati jaringan. Ia hanya mengetahui permintaan untuk mendapatkan atribut nama telah memperoleh hasil yang memuaskan.
Faktanya, implementasi CORBA atau Java RMI serupa dengan ini, namun tidak sesederhana itu. Program ini berguna untuk mengilustrasikan mekanisme eksekusi aplikasi objek terdistribusi.
Kode sumber programnya adalah sebagai berikut:
FileDog.java
antarmuka publik Anjing
{
public String getName() memunculkan Pengecualian;
}/* Anjing */
FileDogClient.java
DogClient kelas publik
{
public static void main( String[] args ) memunculkan Pengecualian
{
Anjing anjing = baru Dog_Stub();
String strNama = anjing.getName();
System.out.println("Nama: " + strNama );
}//utama()
}/*Klien Anjing */
FileDogServer.java
DogServer kelas publik mengimplementasikan Dog
{
String strNama;
int usia ke dalam;
String publik getName() memunculkan Pengecualian
{
kembalikan strNama;
}//dapatkanNama()
DogServer publik( String strNameInput )
{
strNama = strNamaInput;
}//Server Anjing()
public static void main( String[] args ) memunculkan Pengecualian
{
Dog_Skeleton Baru( DogServer baru( "TOMCAT" ) );
}//utama()
}/* Server Anjing */
File Dog_Skeleton.java
import java.io.*;
impor java.net.*;
kelas publik Dog_Skeleton memperluas Thread
{
ServerSocket statis ss = null;
DogServer ds;
public Dog_Skeleton( DogServer dsInput ) memunculkan Pengecualian
{
ds = dsMasukan;
jika(ss==batal)
ss = ServerSocket baru(8000);
ini.mulai();
}//Anjing_Skeleton()
run void tersinkronisasi publik()
{
Mencoba
{
sementara ( ss != nol )
{
Soket soket = ss.accept();
ObjectInputStream ois = ObjectInputStream baru( socket.getInputStream() );
ObjectOutputStream oos = ObjectOutputStream baru( socket.getOutputStream() );
String strMethodName = ( String )ois.readObject();
jika ( strMethodName.equals( "getName()" ) )
oos.writeObject( ds.getName() );
oos.flush();
ois.close();
oos.close();
soket.close();
}//ketika
}//mencoba
menangkap (Pengecualian e)
{
e.printStackTrace();
}//menangkap
}//berlari()
}/* Kerangka_Anjing */
FileDog_Stub.java
import java.io.*;
impor java.net.*;
Kelas publik Dog_Stub mengimplementasikan Dog
{
soket soket;
ObjectOutputStream oos;
ObjectInputStream juga;
public Dog_Stub() melempar Pengecualian
{
soket = Soket baru("wudi", 8000 );
Oos = ObjectOutputStream baru( socket.getOutputStream() );
Ois = ObjectInputStream baru( socket.getInputStream() );
}//Anjing_Stub()
String publik getName() memunculkan Pengecualian
{
Oos.writeObject( "getName()" );
Oos.flush();
kembali (String)ois.readObject();
}//dapatkanNama()
}/* Anjing_Stub */
Saat menjalankan program objek terdistribusi ini, jalankan DogServer terlebih dahulu, lalu jalankan DogClient di klien untuk melihat hasilnya.