Ejb全稱為Enterprise Java Bean Component,也稱為伺服器端軟體元件;它將主要用作應用程式的業務邏輯。用於執行時間環境的 Web 容器包括軟體元件、電腦安全、servlet 生命週期管理、事務處理和 Web 服務。 EJb 是運行在電腦網路伺服器端的 Java 程式語言編寫的架構風格,因此它在應用程式中遵循客戶端-伺服器模型。而且,ejb 是一種在客戶端分發 Web 元件的 Java bean 技術,它具有在多個 Web 應用程式中稱為可重複使用元件的功能。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
文法:
java程式設計中EJB模型的基本語法如下。
import javax.ejb.*; import java packages; class classname { Main method() { -----Some programming logics---- } }
以上程式碼是使用ejb套件開發應用程式的基本步驟。
如何在Java Works中使用EJB?
- 在EJB中,java bean類別將使用多個ejb規範的註釋,這將有助於根據業務目的滿足使用者需求。 EJB有一組不同的版本,並且遵循了JNDI的功能(java命名目錄介面)。伺服器jndi中的資源之一是目錄服務,用於定位或分配資源,如ejb、資料來源和JMS佇列服務。伺服器對 jndi 資源有一個預設方案名稱,但如果我們更改配置部分的名稱,它應該被覆蓋。
- EJB 將在 Java bean 上工作;它有兩種不同的類型 1. Session beans 和 2.Message Driven BeansSession beans。會話 bean 將用於客戶端-伺服器互動;它透過客戶端呼叫以程式設計方式封裝應用程式的業務邏輯,該呼叫將由本機或遠端電腦完成,客戶端將在 Web 服務的協助下使用 bean。會話bean將分為三種不同的類別1.無狀態,2.有狀態和3.單例。無狀態bean當客戶端使用這些類型的bean時,Web容器中沒有永久狀態,因此相比之下,它們是線程安全的,性能方面非常快有狀態的 Bean。這些 Bean 同時與多個客戶端共用。
- 有狀態bean可以將狀態儲存在容器中;一旦客戶端終止會話,這些狀態也會在伺服器中被破壞。 Singelton beans 在該應用程式的整個生命週期中都有一個實例會話;這些 bean 也與多個客戶端共用狀態。這些 Bean 是線程安全的,因此開發人員可以更輕鬆地使用它們,並且與有狀態 Bean 相比,效能也更快。
- 訊息驅動Bean(MDB)是一種像JMS訊息監聽器一樣用作非同步訊息類型的bean,但它將接收訊息回應作為JMS訊息而不是事件。每當訊息接收到容器時,我們就可以使用 jndi 服務來映射訊息,容器使用 onMessage() 方法呼叫 MDB bean 進行進一步處理。 MDB 使用 onMessage() 方法的整個過程將是一個事務。如果假設訊息處理是回滾,則接收方訊息會再次重新投遞。
用 Java 實作 EJB 的範例
以下是提到的範例:
範例#1
介面:
package JPAEJB; import java.util.List; import javax.ejb.Remote; @Remote public interface CustomerInterface { void addBooks(String name); List getBooks(); }
實作:
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; } }</string></string></string>
顧客介面:
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 system.out.println books1.get customerinterface cust1='(CustomerInterface)ctx.lookup("cust/remote");' list>books2 = cust.getBooks(); System.out.println(books2.size()); for (inti = 0; i<books2.size system.out.println books2.get catch e e.printstacktrace finally try if brconsolereader.close ex> <p><strong>範例輸出:</strong></p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172500613249868.png?x-oss-process=image/resize,p_40" class="lazy" alt="Java 中的 EJB" ></p> <h4 id="範例">範例#2</h4> <p><strong>Web 服務中的 EJB:</strong></p> <pre class="brush:php;toolbar:false">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(); } }</customerinterface>
範例#3
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:
<?xml version="1.0"encoding="UTF-8"?> <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></enterprise-beans> </ejb-jar>
說明:以上三個範例是相同的輸出,我們使用了ejb的不同功能,第一個範例我們使用客戶將使用jndi(java命名目錄介面)新增和刪除書籍第二個範例我們使用客戶的Web 服務透過Web 完成操作最後一個範例我們使用了額外的安全性。
結論
通常,EJB 充當業務邏輯應用程式之外的介面;與其他業務邏輯框架相比,它具有更多安全方面的瀏覽器相容性功能。它還維護系統級交易。
以上是Java 中的 EJB的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具