Rumah  >  Artikel  >  Java  >  EJB di Jawa

EJB di Jawa

WBOY
WBOYasal
2024-08-30 16:22:10905semak imbas

Ejb dilambangkan sebagai Enterprise Java Bean Component, juga dipanggil komponen perisian bahagian pelayan; ia akan digunakan terutamanya sebagai logik perniagaan aplikasi. Bekas web yang digunakan untuk persekitaran masa jalan termasuk komponen perisian, keselamatan komputer, pengurusan kitaran hayat servlet, pemprosesan transaksi dan perkhidmatan web. EJb ialah gaya seni bina yang ditulis dalam bahasa pengaturcaraan Java yang dijalankan pada bahagian pelayan rangkaian komputer, jadi ia telah mengikuti model pelayan-pelanggan dalam aplikasi. Dan juga, ejb ialah teknologi kacang java untuk mengedarkan komponen web pada bahagian pelanggan yang mempunyai ciri yang dipanggil komponen boleh guna semula dalam berbilang aplikasi web.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks:

Sintaks asas model EJB dalam pengaturcaraan java seperti berikut.

import javax.ejb.*;
import java packages;
class classname
{
Main  method()
{
-----Some programming logics----
}
}

Kod di atas adalah langkah asas untuk membangunkan aplikasi menggunakan pakej ejb.

Bagaimana untuk menggunakan EJB dalam Java Works?

  • Dalam EJB, kelas kacang java akan menggunakan lebih daripada satu anotasi untuk spesifikasi ejb, yang akan membantu untuk memenuhi keperluan pengguna berdasarkan tujuan perniagaan.EJB mempunyai set versi yang berbeza dan telah mengikuti ciri seperti JNDI (antara muka direktori penamaan java). Salah satu sumber dalam pelayan jndi ialah perkhidmatan direktori yang digunakan untuk mencari atau memperuntukkan sumber, seperti ejb, sumber data dan perkhidmatan baris gilir JMS. Pelayan mempunyai nama skema lalai untuk sumber jndi, tetapi ia harus ditindih jika kami menukar nama bahagian konfigurasi.
  • EJB akan berfungsi pada kacang java; ia mempunyai dua jenis yang berbeza 1. Kacang Sesi dan 2. Kacang Dipacu Mesej Kacang Sesi. Kacang sesi akan digunakan untuk interaksi pelanggan-pelayan; ia merangkum logik perniagaan aplikasi melalui pengaturcaraan oleh invokasi pelanggan akan dilakukan oleh sama ada mesin tempatan atau kacang mesin jauh akan digunakan oleh pelanggan dengan bantuan perkhidmatan web. Kacang sesi akan menjadi tiga kategori berbeza 1. Stateless,2.Stateful dan 3.Singleton.Stateful kacang apabila pelanggan menggunakan jenis kacang ini tiada keadaan kekal dalam bekas web, jadi mereka adalah prestasi selamat benang dengan sangat pantas jika dibandingkan kepada kacang stateful. Kacang ini dikongsi dengan berbilang pelanggan pada masa yang sama.
  • Kacang stateful boleh menyimpan keadaan dalam bekas; sebaik sahaja pelanggan menamatkan sesi, keadaan ini juga dimusnahkan dalam pelayan. Kacang Singelton ia mempunyai satu sesi contoh untuk keseluruhan kitaran hayat aplikasi itu; kacang ini juga berkongsi negeri dengan berbilang pelanggan. Kacang ini selamat untuk benang, jadi pembangun akan menggunakannya dengan lebih mudah dan prestasinya juga pantas berbanding kacang stateful.
  • Message Driven Beans(MDB) ialah jenis kacang yang digunakan sebagai jenis mesej tak segerak seperti pendengar mesej JMS, tetapi ia akan menerima respons mesej sebagai mesej JMS dan bukannya acara. Kami boleh memetakan mesej menggunakan perkhidmatan jndi apabila mesej menerima bekas memanggil kacang MDB menggunakan kaedah onMessage() untuk proses selanjutnya. Keseluruhan proses MDB menggunakan kaedah onMessage() akan menjadi satu transaksi. Jika andaikan proses mesej adalah pemulangan semula, mesej penerima dihantar semula.

Contoh untuk Melaksanakan EJB di Jawa

Di bawah adalah contoh yang dinyatakan:

Contoh #1

Antara Muka:

package JPAEJB;
import java.util.List;
import javax.ejb.Remote;
@Remote
public interface CustomerInterface {
void addBooks(String name);
List getBooks();
}

Pelaksanaan:

import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import JPAEJB.CustomerInterface;
@Stateless
public class CustomerClass implements CustomerInterface {
List<String>books;
public CustomerClass() {
books = new ArrayList<String>();
}
public void addBooks(String name) {
books.add(name);
}
public List<String> getBooks() {
return books;
}
}

Antara Muka Pelanggan:

import JPAEJB.CustomerInterface;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Properties;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class CustomerInterfaceImplem {
BufferedReader brConsoleReader = null;
Properties p;
InitialContext c;
{
p = new Properties();
try {
p.load(new FileInputStream("jndi.properties"));
} catch (IOException ex) {
ex.printStackTrace();
}
try {
c = new InitialContext(p);
} catch (NamingException ex) {
ex.printStackTrace();
}
brConsoleReader =
new BufferedReader(new InputStreamReader(System.in));
}
public static void main(String[] args) {
CustomerInterfaceImplem cust = new CustomerInterfaceImplem();
cust.testStatelessEjb();
}
private void show() {
System.out.println("Welcome to my domain");
System.out.print("Options \n1. Add the Books\n2. Exit \nEnter your Choice: ");
}
private void StatelessEjb() {
try {
intc = 1;
CustomerInterface cust =
(CustomerInterface)ctx.lookup("CustomerInterface/remote");
while (c != 2) {
String books;
show();
String str = brConsoleReader.readLine();
c = Integer.parseInt(str);
if (c == 1) {
books = brConsoleReader.readLine();
cust.addBooks(books);
}elseif (c == 2) {
break;
}
}
List<String>books1 = cust.getBooks();
System.out.println(books1.size());
for (inti = 0; i<books1.size(); ++i) {
System.out.println((i+1)+". " + books1.get(i));
}
CustomerInterface cust1 =
(CustomerInterface)ctx.lookup("cust/remote");
List<String>books2 = cust.getBooks();
System.out.println(books2.size());
for (inti = 0; i<books2.size(); ++i) {
System.out.println((i+1)+". " + books2.get(i));
}
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
} finally {
try {
if(brConsoleReader !=null) {
brConsoleReader.close();
}
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
}

Sampel Output:

EJB di Jawa

Contoh #2

EJB dalam Perkhidmatan Web:

package JPAEJB;
import java.util.List;
import Customers.CustomerInterfaceImplem;
public class Ejbclients{
public static void main(String[] args) {
for(CustomerInterface cust:getBooks()) {
System.out.println(cust.getBooks());
}
}
private static List
<CustomerInterface> getBooks() {
CustomerInterfaceImplem s =
new CustomerInterfaceImplem();
CustomerInterface c =
s.getCustomerInterfacePort();
return c.getBooks();
}
}

Contoh #3

Keselamatan EJB:

import javax.ejb.*
@Stateless
@DeclareRoles({"customer""books"})
public class CustSecurity implements CustomerInterface {
@RolesAllowed({"books"})
public void delete(CustomerInterface cust) {
System.out.println("customer delete the books");
}
@PermitAll
public void showBooks(CustomerInterface cust) {
System.out.println("customer viewed the books");
}
@DenyAll
public void deleteAll() {
System.out.println("customer delete all the books in libraries");
}
}

XML Keselamatan:

<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN""http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<ejb-jar>
<security-role-mapping>
<role-name>customer</role-name>
<group-name>customer-groups</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>Books</role-name>
<group-name>Books-group</group-name>
</security-role-mapping>
<enterprise-beans/>
</ejb-jar>

Penjelasan: Tiga contoh di atas adalah output yang sama kami menggunakan ciri yang berbeza bagi contoh pertama ejb yang kami gunakan pelanggan akan menambah dan memadam buku menggunakan jndi(antara muka direktori penamaan java) contoh kedua yang kami gunakan perkhidmatan web untuk pelanggan melakukan operasi melalui contoh akhir web kami menggunakan keselamatan tambahan.

Kesimpulan

Secara amnya, EJB bertindak sebagai antara muka di luar aplikasi logik perniagaan; ia mempunyai ciri keserasian penyemak imbas yang lebih bijak jika dibandingkan dengan rangka kerja logik perniagaan yang lain. Ia juga mengekalkan urus niaga peringkat sistem.

Atas ialah kandungan terperinci EJB di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:E-mel JavaArtikel seterusnya:E-mel Java