JavaのEJB

WBOY
リリース: 2024-08-30 16:22:10
オリジナル
923 人が閲覧しました

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 パッケージを使用してアプリケーションを開発するための基本的な手順です。

Java Works で EJB を使用するには?

  • EJB では、Java Bean クラスは ejb 仕様に複数のアノテーションを使用します。これは、ビジネス目的に基づいてユーザー要件を満たすのに役立ちます。EJB にはさまざまなバージョンのセットがあり、JNDI のような機能に従っています。 (Java ネーミング ディレクトリ インターフェイス)。サーバー jndi 内のリソースの 1 つはディレクトリ サービスであり、ejb、データ ソース、JMS キュー サービスなどのリソースの検索または割り当てに使用されます。サーバーには jndi リソースのデフォルトのスキーム名がありますが、構成部分の名前を変更した場合は上書きする必要があります。
  • EJB は Java Bean 上で動作します。 1. セッション Bean と 2. メッセージ駆動型 BeanSession Bean の 2 つの異なるタイプがあります。セッション Bean はクライアントとサーバーの対話に使用されます。クライアントによってプログラム的にアプリケーションのビジネス ロジックがカプセル化されます。呼び出しはローカル マシンまたはリモート マシンによって実行され、Bean はクライアントによって Web サービスの助けを借りて使用されます。セッション Bean は 3 つの異なるカテゴリになります。1. ステートレス Bean、2. ステートフル Bean、および 3. シングルトン.ステートレス Bean。クライアントがこれらのタイプの Bean を使用する場合、Web コンテナーには永続的な状態がないため、比較するとスレッドセーフなパフォーマンスが非常に高速です。ステートフル Bean に。これらの Bean は同時に複数のクライアントと共有されます。
  • ステートフル Bean はコンテナに状態を保存できます。クライアントがセッションを終了すると、これらの状態もサーバー内で破棄されます。 Singelton Bean には、アプリケーションのライフサイクル全体に対して 1 つのインスタンス セッションがあります。これらの Bean は複数のクライアントと状態を共有しました。これらの Bean はスレッドセーフであるため、開発者はより簡単に使用でき、ステートフル Bean と比較してパフォーマンスも高速です。
  • Message Driven Beans(MDB) は、JMS メッセージ リスナーと同様に非同期メッセージのタイプとして使用される Bean のタイプですが、メッセージの応答をイベントではなく JMS メッセージとして受け取ります。メッセージを受信するたびに、コンテナがその後の処理のために onMessage() メソッドを使用して MDB Bean を呼び出すたびに、jndi サービスを使用してメッセージをマップできます。 onMessage() メソッドを使用する MDB のプロセス全体が 1 つのトランザクションになります。メッセージ処理がロールバックであると仮定すると、受信側メッセージは再び再配信されます。

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;
}
}
ログイン後にコピー

顧客インターフェース:

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());
}
}
}
}
ログイン後にコピー

サンプル出力:

JavaのEJB

例 #2

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();
}
}
ログイン後にコピー

例 #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"?>
<!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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート