亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
Java Works で EJB を使用するには?
Java で EJB を?qū)g裝する例
例 #3
結(jié)論

JavaのEJB

Aug 30, 2024 pm 04:22 PM
java

Ejb は Enterprise Java Bean コンポーネントとして示され、サーバー側(cè)ソフトウェア コンポーネントとも呼ばれます。主にアプリケーションのビジネス ロジックとして使用されます。ランタイム環(huán)境に使用される Web コンテナには、ソフトウェア コンポーネント、コンピュータ セキュリティ、サーブレット ライフサイクル管理、トランザクション処理、および Web サービスが含まれます。EJb は、コンピュータ ネットワークのサーバー側(cè)で実行される Java プログラミング言語で書かれたアーキテクチャ スタイルであるため、アプリケーションではクライアント/サーバー モデルに従っています。また、ejb は Web コンポーネントをクライアント側(cè)に配布するための Java Bean 技術(shù)であり、複數(shù)の Web アプリケーションで再利用可能なコンポーネントと呼ばれる機能を持っています。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構(gòu)文:

Java プログラミングにおける EJB モデルの基本構(gòu)文は次のとおりです。

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

上記のコードは、ejb パッケージを使用してアプリケーションを開発するための基本的な手順です。

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

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

Java で EJB を?qū)g裝する例

以下に挙げる例を示します:

例 #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 を通じて操作を?qū)g行しました。追加のセキュリティを使用した最後の例です。

結(jié)論

一般に、EJB はビジネス ロジック アプリケーションの外部のインターフェイスとして機能します。他のビジネス ロジック フレームワークと比較して、セキュリティ面でブラウザ互換性機能が優(yōu)れています。また、システムレベルのトランザクションも維持します。

以上がJavaのEJBの詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravel Raw SQLクエリの例 Laravel Raw SQLクエリの例 Jul 29, 2025 am 02:59 AM

Laravelは、ネイティブSQLクエリの使用をサポートしていますが、安全性を確保するためにパラメーターバインディングを優(yōu)先する必要があります。 1。DB:: Select()を使用して、SQL注入を防ぐためにパラメーターバインディングを使用して選択クエリを?qū)g行します。 2。db:: update()を使用して更新操作を?qū)g行し、影響を受ける行の數(shù)を返します。 3。DB::挿入()を使用してデータを挿入します。 4。db:: delete()を使用してデータを削除します。 5。DB:: Statement()を使用して、Create、Alterなどの結(jié)果セットなしでSQLステートメントを?qū)g行します。 6. QueryBuilderでWhereraw、SelectRaw、およびその他の方法を使用して、ネイティブ表現(xiàn)を組み合わせてセキュリティを改善することをお勧めします

Junit 5とMockitoを使用したJavaでのユニットテストとモッキング Junit 5とMockitoを使用したJavaでのユニットテストとモッキング Jul 29, 2025 am 01:20 AM

Junit5とMockitoを使用して、単體テストの依存関係を効果的に分離します。 1. @mockを介して模擬オブジェクトを作成します。@injectmocksテスト済みインスタンスを挿入@extendwithを有効にします。 2。when()。sonreturn()を使用してシミュレーションの動作を定義し、()を検証してメソッド呼び出しとパラメーターの數(shù)を確認します。 3。例外シナリオをシミュレートし、エラー処理を確認できます。 4.コンストラクターの注入を推奨し、過剰なシミュレーションを避け、テスト原子性を維持します。 5。ASSERTALL()を使用してアサーションをマージし、@Nestedはテストシナリオを整理して、テストの保守性と信頼性を向上させます。

Jul 29, 2025 am 04:10 AM

CSSテーブルレイアウト修正例 CSSテーブルレイアウト修正例 Jul 29, 2025 am 04:28 AM

テーブルレイアウト:固定は、レイアウトに影響するコンテンツを避けるために、最初の行のセル幅によってテーブル列の幅を強制的に決定します。 1.テーブルレイアウトの設(shè)定:テーブル幅を修正して指定します。 2.最初の行th/tdの特定の列幅比を設(shè)定します。 3。ホワイトスペースを使用:Nowrap、Overflow:Hidden and Text-Overflow:Ellipsisを使用してテキストオーバーフローを制御します。 4。安定したレイアウトと高性能レンダリングを必要とするバックグラウンド管理、データレポート、およびその他のシナリオに適用できます。これは、レイアウトジッターを効果的に防止し、レンダリング効率を向上させることができます。

Python JSONロードの例 Python JSONロードの例 Jul 29, 2025 am 03:23 AM

json.loads()は、JSON文字列をPythonデータ構(gòu)造に解析するために使用されます。 1.入力は二重引用符で包まれた文字列でなければならず、ブール値は真/falseです。 2。NULL→なし、オブジェクト→DICT、配列→リストなどの自動変換をサポートします。 3. APIで返されるJSON文字列を処理するためによく使用されます。たとえば、response_stringは、json.loads()で解析した後に直接アクセスできます。それを使用する場合、JSON形式が正しいことを確認する必要があります。そうしないと、例外がスローされます。

MongoDBのインデックス戦略 MongoDBのインデックス戦略 Jul 29, 2025 am 01:05 AM

選択することは、shoseTheatheApsoSOFRISTEXTYPEBASEDONUSECASE、TINGASSINGLEFIELD、化合物、マルチケイ、テキスト、GEOSPATIAL、ORTTLINDEXES.2.APPLYTHEESRRULEWHENCREATINGCOMPoundExes

Javaプロジェクト管理のためのMavenの開発者ガイド Javaプロジェクト管理のためのMavenの開発者ガイド Jul 30, 2025 am 02:41 AM

Mavenは、Javaプロジェクト管理と建設(shè)の標準ツールです。答えは、POM.xmlを使用してプロジェクト構(gòu)造、依存関係管理、建設(shè)ライフサイクルの自動化、プラグイン拡張機能を標準化するという事実にあります。 1. pom.xmlを使用して、GroupID、artifactid、バージョン、依存関係を定義します。 2。MVNCLEAN、コンパイル、テスト、パッケージ、インストール、展開などのマスターコアコマンド。 3.依存関係管理と除外を使用して、依存関係バージョンと競合を管理します。 4.マルチモジュールプロジェクト構(gòu)造を通じて大規(guī)模なアプリケーションを整理し、親POMによって均一に管理されます。 5。

參照例によるPythonパス 參照例によるPythonパス Jul 29, 2025 am 12:31 AM

Pythonでは、関數(shù)引數(shù)の転送は「オブジェクト參照を渡す」、つまり1です。可変オブジェクト(リストや辭書など)の場合、関數(shù)內(nèi)のin-situ変更(付録など)は元のオブジェクトに直接影響します。 2。不変のオブジェクト(整數(shù)、文字列など)の場合、元のオブジェクトを関數(shù)で変更することはできず、再割り當ては新しいオブジェクトのみを作成します。 3.パラメーターは、參照のコピーを渡します。変數(shù)が関數(shù)(LST = [...]など)で反省されている場合、元のオブジェクトとの接続は影響を受けず、外部変數(shù)は影響を受けません。したがって、変更可能なオブジェクトを変更すると元のデータに影響しますが、不変のオブジェクトと再割り當てはそうではありません。これは、関數(shù)內(nèi)の変更後にリストが外部から表示される理由を説明しますが、整數(shù)の変更はローカルでのみです。

See all articles