Ejb は Enterprise Java Bean コンポーネントとして示され、サーバー側ソフトウェア コンポーネントとも呼ばれます。主にアプリケーションのビジネス ロジックとして使用されます。ランタイム環境に使用される Web コンテナには、ソフトウェア コンポーネント、コンピュータ セキュリティ、サーブレット ライフサイクル管理、トランザクション処理、および Web サービスが含まれます。EJb は、コンピュータ ネットワークのサーバー側で実行される Java プログラミング言語で書かれたアーキテクチャ スタイルであるため、アプリケーションではクライアント/サーバー モデルに従っています。また、ejb は Web コンポーネントをクライアント側に配布するための Java Bean 技術であり、複数の Web アプリケーションで再利用可能なコンポーネントと呼ばれる機能を持っています。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
構文:
Java プログラミングにおける EJB モデルの基本構文は次のとおりです。
import javax.ejb.*; import java packages; class classname { Main method() { -----Some programming logics---- } }
上記のコードは、ejb パッケージを使用してアプリケーションを開発するための基本的な手順です。
以下に挙げる例を示します:
インターフェース:
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; } }
顧客インターフェース:
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()); } } } }
サンプル出力:
Web サービスの EJB:
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(); } }
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"?> <!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>
説明: 上記の 3 つの例は、ejb の異なる機能を使用した同じ出力です。最初に使用する例は、顧客が jndi(Java ネーミング ディレクトリ インターフェイス) を使用して書籍を追加および削除します。2 番目の例は、使用します。顧客向けの Web サービスは Web を通じて操作を実行しました。追加のセキュリティを使用した最後の例です。
一般に、EJB はビジネス ロジック アプリケーションの外部のインターフェイスとして機能します。他のビジネス ロジック フレームワークと比較して、セキュリティ面でブラウザ互換性機能が優れています。また、システムレベルのトランザクションも維持します。
以上がJavaのEJBの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。