• 検索結果がありません。

WEBシステムのセキュリティ技術

N/A
N/A
Protected

Academic year: 2021

シェア "WEBシステムのセキュリティ技術"

Copied!
38
0
0

読み込み中.... (全文を見る)

全文

(1)

EJB

(Enterprise Java Beans)

棚橋沙弥香

(2)

テーマ選定の背景

現在携わっているJava開発案件で、EJBが使われ

ておりますが、私自身がEJBを扱うのが初めてで

知らない技術でしたので、勉強してみたいと思い、

今回はこのテーマを選定しました。

(3)

1 • EJBとは

2 • EJBの利点

3 • EJBの歴史

4 • EJBの開発環境の作成

5 • Enterprise Bean

6

• 非同期処理の実装

目次

(4)

EJBとは①

 EJB(Enterprise Java Beans)は、Java EEフレームワーク

に含まれる機能の1つ。

Java EEは、企業システムのアプリケーション開発に

必要なさまざまな機能を1つにまとめた包括仕様の総称。

JPA JMS Batch JavaMail JCA

DI/CDI/EJB JTA JSP/JSTL JPA EL Servlet WebSocket JAX-RS JSF Bea n V al id ati on M anag ed Bea n Co m m on Annot ati on Inte rce p tors Co nc urrenc y Ut ili ti es Java EE 7

(5)

アプリケーションサーバー

EJBとは②

 EJBは、アプリケーションサーバー上で動作するJavaの プログラムのうち、特に「ビジネスロジック」を担当す る部品を指す。 データ ベース プレゼンテーション層 ビジネスロジック層 データ ストア層 ユーザー データ 処理を 依頼 結果 DBの 読み 書き WEBコンテナ JSP・サーブレット ・・・ JSP・サーブレット JSP・サーブレット EJBコンテナ Enterprise Bean ・・・ Enterprise Bean Enterprise Beanを管理し、 動作させる EJBの規約に 則った特別な Bean WEBア プリケー ションを 稼働させ る

(6)

1 • EJBとは

2 • EJBの利点

3 • EJBの歴史

4 • EJBの開発環境の作成

5 • Enterprise Bean

6

• 非同期処理の実装

目次

(7)

EJBの利点①

 EJBコンテナが、トランザクションの制御や、EJBとして

記述したクラスのインスタンスの生成/実行と破棄と

いったシステムレベルのサービスを提供してくれるため、 開発者はビジネスロジックの構築に集中できる。

(8)

EJBのトランザクション管理

 EJBでは、何も指定しなくても、メソッドを実行すると トランザクションを利用するようになっている。 何も指定しなかった場合は、以下の状態になっている。 ・トランザクションをEJBコンテナ管理に任せる。 ・トランザクションがない場合は開始され、 ある場合はそのトランザクションを引き継ぐ。 別途、@TransactionManagementアノテーション、 @TransactionAttributeアノテーションにより、 トランザクション仕様を指定することもできる。

(9)

アプリケーションサーバー

EJBの利点②

 EJBでは、プレゼンテーション層の差し替えが行えるため、 アプリケーションをさまざまな方法で利用できる。 WEBコンテナ JSP・サーブレット ・・・ JSP・サーブレット JSP・サーブレット EJBコンテナ Enterprise Bean ・・・ Enterprise Bean Webユーザー HTML Webサーバー XML データ ベース Javaアプリ ケーション

(10)

EJBの利点③

 Java EE準拠のアプリケーションサーバー上であれば どこでも動く。商用アプリケーションサーバーの多く では、EJBの拡張機能を提供している。 ・・・ Java EE準拠のアプリケーションサーバーの例として、 GlassFish、JBoss、WebSphere、WebLogic などがある。

(11)

1 • EJBとは

2 • EJBの利点

3 • EJBの歴史

4 • EJBの開発環境の作成

5 • Enterprise Bean

6

• 非同期処理の実装

目次

(12)

EJBの誕生

EJBは元々、OMGのCORBAやSunのRMIといった 分散オブジェクトに由来する技術であり、RMIをベースに ビジネスロジックを実装するコンポーネントとして誕生した。 Javaの誕生から3年後の1998年頃に登場している。 ・CORBA 様々なプラットフォームでの分散処理の連携を実現するための基本仕様 ・RMI ネットワークを通じてプログラム同士が通信を行ない、異なる コンピューター上にあるオブジェクト(リモートオブジェクト)の メソッドを呼び出すための技法

(13)

欠点が多かったEJB2.1以前

EJBは、EJB2.1以前は、複雑で扱いにくいと批判されていた。  通常のJavaプログラミングにはない規約が多数あり、 開発者はその規約をよく知っていることが必要で、開発 やメンテナンスがしにくかった。  EJBのコンポーネントは,アプリケーションサーバー上に 配置しなければ実際に動かせなかったため、単体テストを 行いにくかった。  トランザクションやセキュリティといったEJBの実行時 情報を、XMLの設定ファイルに記述する必要があった。

(14)

大きく改良されたEJB3.0

EJB3.0(2007年~)では、以前のバージョンに比べ、 アノテーションが利用できるようになり、プログラミング が格段に簡単になった。主な特徴は以下の通り。  EJBのコンポーネントをJavaオブジェクトとして記述で きるようになった。XMLによる設定は不要になった。  EJBのコンポーネントを簡単に呼び出せるようになった。  Javaオブジェクトとデータベース間のデータ変換を、

「JPA(Java Persistence API)」というデータベース・ アクセス方法により、簡潔に行えるようになった。

(15)

1 • EJBとは

2 • EJBの利点

3 • EJBの歴史

4 • EJBの開発環境の作成

5 • Enterprise Bean

6

• 非同期処理の実装

目次

(16)

EJB開発環境の作成①

EJBの開発は「JBoss Developer Studio」で行える。 「JBoss Developer Studio」は、JBOSSによるJava EE アプリケーションを構築するための統合開発環境。

「JBoss Developer Studio」のインストーラは、 以下のサイトからダウンロードできる。

http://developers.redhat.com/products/devstudio/download/ ・Installerの「WithEAP」のリンクを選択

→「devstudio-(バージョン)-installer-eap.jar」が インストーラ。

(17)

EJB開発環境の作成②

 「JBoss Developer Studio」の動作には、Oracle JDK

1.8.0をインストールしておく必要がある。

 「JBoss Developer Studio」のダウンロードには、

JBoss Communityのアカウントが必要である。

 「JBoss Developer Studio」の利用は、無償で行える。

 「JBoss Developer Studio」のインストール手順は、

以下を参照のこと。

(18)

EJB開発環境の作成③

「JBoss Developer Studio」を起動すると、以下のような 画面が起動する。

(19)

1 • EJBとは

2 • EJBの利点

3 • EJBの歴史

4 • EJBの開発環境の作成

5 • Enterprise Bean

6

• 非同期処理の実装

目次

(20)

Enterprise Beanの種類

 セッションBean ビジネスロジックを実装するためのEnterprise Bean。 詳しくは後述する。  メッセージドリブンBean(MDB) キューまたはトピックからメッセージを受け取ることで 起動する、用途が限定的なEnterprise Bean。 受信 アプリケーションA アプリケーションB MDB Enterprise Bean 送信 メッセージ キューまたは トピック

(21)

セッション

Beanの種類

 ステートレスセッションBean ステート(状態)をもたないセッションBean。 Webページのオンライン処理と相性が良い。  ステートフルセッションBean ステート(状態)をもつセッションBean。 クライアント毎にインスタンスが作成される。  シングルトン アプリケーション上に1つだけ存在するセッションBean。  タイマー 時間を指定して起動する部品。

(22)

ステートレスセッション

Bean

 ステート(状態)をもたないセッションBean。 EJBクライアントからの呼び出しの量に応じて作成される。 最もよく利用されるEJB。 アプリケーションサーバー EJBコンテナ プール クライアント @EJB MyStateless bean; 処理が終われば 戻され、再利用 される リクエストとEJBのインスタンス に固定の関係はなく、呼ばれた 数だけ利用される 足りなければ作る

(23)

ステートレスセッションBeanの定義例

import javax.ejb.Stateless; @Stateless

public class MyStatelessBean { public String sayHello(){

return “Hello EJB!!”; }

}

ステートレスセッション Beanとして取り扱う

(24)

ステートレスセッションBeanの

呼出例

import javax.ejb.EJB;

public class CallEJBServlet extends HttpServlet { @EJB

MyStateless bean; @Override

protected void doGet(HttpServletRequest request ,HttpServletResponse response)

throws ServletException, IOException { String msg = bean.sayHello(); } } EJBのメソッドを呼び出す 呼び出すEJBを定義 ※Servlet関連のimport句や処理は 省略している

(25)

ステートレスセッションBeanの

サンプル作成

 ステートレスセッションBeanのサンプル作成は、

以下のように行った。

1. 動的Webプロジェクト(Dynamic Web Project)を 新規作成する。 2. 通常のJavaクラスとして、ステートレスセッション Bean(MyStatelessBean.java)を作成する。 4. サーブレットクラス(CallEJBServlet.java)を作成し、 2.のクラスを呼び出し、3.のJSPに遷移する処理を 記述する。 3. 2.の結果を表示するためのJSPを作成する。

(26)

ステートレスセッションBeanの

サンプル実行

 ステートレスセッションBeanのサンプル実行は、 以下のように行った。 1. サーバービュー(Servers)に、JBOSSサーバーが表示 されていることを確認する。 2. 1.のJBOSSサーバーに、作成した動的Webプロジェクト を追加する。 3. 1.のJBOSSサーバーを起動する。 4. Webブラウザから、以下のURLでアクセスする。 http://localhost:8080/(動的Webプロジェクト名)/(サーブレットアクセスパス)

(27)

ステートフルセッション

Bean①

 ステート(状態)をもつセッションBean。 画面遷移に紐付く情報などを保持する。 クライアント毎にインスタンスが作成される。 アプリケーションサーバー EJBコンテナ プール クライアント @EJB MyStateful bean; リクエストとEJBのインスタンス に固定の関係があり、保持される クライアント @EJB MyStateful bean; クライアント @EJB MyStateful bean;

(28)

ステートフルセッション

Bean②

 ステートフルセッションBeanは、ライフサイクルをもつ。 クライアント @EJB MyStateful bean; アプリケーションサーバー EJBコンテナ プール 1.生成 2.活性化/3.非活性化 4.破棄 セッションBeanのインスタンスに 対する呼び出しが一定時間ないと、 非活性化される。

(29)

ステートフルセッション

Bean③

アノテーション名 呼ばれるタイミング @PostConstruct コンストラクタが呼ばれた後 @PostActive 活性化された後 @PrePassivate 非活性化される前 @PreDestroy 破棄される前 @Remove 破棄を行う際(@PreDestroyの後)  ステートフルセッションBeanは、ライフサイクルの コールバックメソッドをもつ。

(30)

ステートフルセッション

Beanの定義例

import javax.ejb.Stateful;

import javax.annotation.PostConstruct; import java.util.logging.*

@Stateful

public class MyStatefulBean { public String sayHello(){

return “Hello EJB!!”; }

@PostConstruct

public void calledPostConstruct(){

logger.log(Level.INFO, "PostConstruct called."); }

private static final Logger = ・・・以下略・・・ } ステートフルセッション Beanとして取り扱う ライフサイクルのコール バックメソッド利用例 ※呼び出し・作成・実行手順 はステートレスセッション Beanの場合と同じ

(31)

シングルトンセッション

Beanと定義例

import javax.ejb.Singleton; import javax.ejb.Startup; @Singleton

@Startup

public class MySingletonBean{ ・・・以下略・・・ } シングルトンセッション Beanとして取り扱う アプリケーション上に1つだけ存在するセッションBeanを シングルトンセッションBeanという。 デプロイされたアプリケーション が有効化されたタイミングで、 すぐオブジェクトを生成する ※呼び出し・作成・実行手順 はステートレスセッション Beanの場合と同じ

(32)

タイマー

時間に関係する処理や、定期的な処理をアプリケーション サーバー上で実装したい場合に、タイマーを利用できる。 例えば、以下のような場合に用いる。 ・時間帯によって挙動を変えるために内部の設定を変更する。 ・定期的に外部システムから情報を取得したり、 システムの外部に提供する。 ・アプリケーションの情報を定期的に出力する。

(33)

タイマーの定義例

import javax.annotation.PostConstruct; import javax.ejb.*; import java.util.logging.*; @Singleton @Startup

public class LogTimer{ @PostConstruct

@Schedule(hour=“9”, minute=“0-10”, second=“0”) public void myTimer(){

logger.log(Level.INFO, “LogTimer called."); }

private static final Logger = ・・・以下略・・・ } 9:00~9:10まで、1分刻みで ログ出力を行う ※サーバーを起動したタイミングで セッションBeanが生成され、 myTimerメソッドが実行されるよう になる

(34)

1 • EJBとは

2 • EJBの利点

3 • EJBの歴史

4 • EJBの開発環境の作成

5 • Enterprise Bean

6

• 非同期処理の実装

目次

(35)

同期処理と非同期処理

非同期処理は、あるタスクが実行をしている際に、他のタスク が別の処理を実行できるが、同期処理は実行できない。

(36)

非同期処理の定義例

import javax.ejb.Stateless;

import javax.ejb.Asynchronous; import java.util.logging,*;

@Stateless

public class MyAsyncBean { @Asynchronous

public void sendMail (){

logger.log(Level.INFO, “sending mail started.”); }

private static final Logger = ・・・以下略・・・ }

非同期処理を行う

(37)

まとめ

現状のEJB3.2では、トランザクション管理をコンテナで自 動で行ったり、タイマーや非同期処理を行ったりする処理 を、アノテーションを付与するだけで簡単に行えるように なっていることがわかりました。 Java EEには、EJB以外にもいろいろな技術があるようです ので、もっと勉強してみたいと思います。

(38)

参考文献

 Java EE7 徹底入門 標準 Javaフレームワークによる高信頼性Webシステム の構築  EJBの仕組みを知ろう http://www.itmedia.co.jp/enterprise/0401/30/epn11.html

参照

関連したドキュメント

PowerSever ( PB Edition ) は、 Appeon PowerBuilder 2017 R2 日本語版 Universal Edition で提供される PowerServer を示しており、 .NET IIS

ガイダンス: 5G 技術サプライヤと 5G サービスプロバイダは、 5G NR

・「下→上(能動)」とは、荷の位置を現在位置から上方へ移動する動作。

サーバー費用は、Amazon Web Services, Inc.が提供しているAmazon Web Servicesのサーバー利用料とな

操作は前章と同じです。但し中継子機の ACSH は、親機では無く中継器が送信する電波を受信します。本機を 前章①の操作で

・蹴り糸の高さを 40cm 以上に設定する ことで、ウリ坊 ※ やタヌキ等の中型動物

技術士のCPD 活動の実績に関しては、これまでもAPEC

「あるシステムを自己準拠的システムと言い表すことができるのは,そのシ