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

Similar documents
WAS V9 アナウンスメント・セミナー資料

メディプロ1 Javaサーブレット補足資料.ppt

1. 検証概要 目的及びテスト方法 1.1 検証概要 Micro Focus Server Express 5.1 J の Enterprise Server が提供する J2EE Connector 機能は JCA 仕様準拠のコンテナとして多くの J2EE 準拠アプリケーションサーバーについて動作

PowerPoint プレゼンテーション

Javaの作成の前に

2

メディプロ1 Javaプログラミング補足資料.ppt

SpringSecurity

rcp-add-01:アーキテクチャ設計書

IBM の Java 活用ガイド_rev2

intra-mart WebPlatform/AppFramework

コンテナでテストをまわせ! Java EE への自動テストの導入 1 小西高之 JBoss Technical Support Engineer Red Hat K.K.

JBoss と Arquillian で実現する 究極のテスト環境 レッドハット株式会社 JBoss サービス事業部 コンサルタント 山 田義和

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

◎phpapi.indd

[HO-2] NetBeansとGlassFishではじめるJava EE7ハンズオン

WTM2019SingleSignOn

改訂履歴 項番版数作成日 / 改訂日変更箇所変更内容. 平成 28 年 5 月 3 日新規章構成の変更, 分冊化に伴い新規作成 (i)

Oracle SOA Suite 11gコンポジットに対するSOASchedulerの構成

intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書   第3版  

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

XMLとXSLT

WebアプリケーションサーバJBoss入門

TestDesign for Web

1. 開発ツールの概要 1.1 OSS の開発ツール本書では OSS( オープンソースソフトウェア ) の開発ツールを使用します 一般に OSS は営利企業ではない特定のグループが開発するソフトウェアで ソースコードが公開されており無償で使用できます OSS は誰でも開発に参加できますが 大規模な

Java言語 第1回

intra-mart im-J2EE Framework

スライド 1

WebOTXマニュアル

目次 第 1 章はじめに... 3 第 2 章ネットワーク設定 DNS の設定 アウトバウンド HTTPS 接続の許可 アウトバウンド SMTP/POP 接続の許可... 4 第 3 章 JDK への追加ライブラリインストール

2. バージョンアップ内容 intra-mart WebPlatform/AppFramework Ver.7.1 および Ver.7.2 に対応いたしました SAP JCo 3.0.x に対応いたしました 3. 製品概要 IM-ERP リアルコネクトは SAP システム内のデータをリアルタイムに取

Android Layout SDK プログラミング マニュアル

C#の基本

Microsoft PowerPoint - JavaFesta.ppt

B2-Servlet-0112.PDF

SystemDirector Developer's Studio(V3.2) 適用ガイド

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

プログラミング基礎I(再)

PowerPoint プレゼンテーション

Oracle Policy Automation 10.0システム要件

WebOTXマニュアル

Microsoft PowerPoint - Lecture_2

1 検証概要 目的及びテスト方法 1.1 検証概要 Micro Focus Server Express 5.1 J の Enterprise Server が提供する J2EE Connector 機能は 多くの J2EE 準拠アプリケーションサーバーについて動作検証がなされています 本報告書は

SinfonexIDaaS機能概要書

Seasar.NET入門

Microsoft PowerPoint - Lecture_3

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

Webコンポーネントのカスタマイズ入門

4. 環境変数の設定実行にあたり 次のように環境変数を設定する必要があります 1)SJIS ロケールの指定コマンド例 )export LANG=ja_JP.sjis 2)MQ 環境の指定コマンド例 ). /opt/mqm/bin/setmqenv s 3)COBOL 実行環境の指定コマンド例 ).

第1章 ビジュアルプログラミング入門

PowerPoint Presentation

JavaプログラミングⅠ

IBM i ユーザーの課題 モバイルや IOT に対応した新しい開発案件への対応 RPG COBOL など既存アプリのメンテナンス 要員の確保 属人化しない運用 管理体制 2

XNA Framework

Apache ActiveMQ における認証処理不備の脆弱性

Microsoft PowerPoint - 04_01_text_UML_03-Sequence-Com.ppt

Delphi/400を使用したWebサービスアプリケーション

Java EE 7 アプリケーション設計ガイド - JSF(JavaServer Faces) 2.2 入門編

オープンソースESB Mule と Seasar2 の連携プロダクト - S2Mule(仮称)

PHP 開発ツール Zend Studio PHP アフ リケーションサーハ ー Zend Server OSC Tokyo/Spring /02/28 株式会社イグアスソリューション事業部

一般社団法人ビジネス機械・情報システム産業協会

WebOTXマニュアル

Transcription:

EJB (Enterprise Java Beans) 棚橋沙弥香

テーマ選定の背景 現在携わっている Java 開発案件で EJB が使われておりますが 私自身が EJB を扱うのが初めてで知らない技術でしたので 勉強してみたいと思い 今回はこのテーマを選定しました

目次 EJBとは 1 EJBの利点 2 EJBの歴史 3 EJBの開発環境の作成 4 5 Enterprise Bean 6 非同期処理の実装

Bean Validation Managed Bean Common Annotation Interceptors Concurrency Utilities EJB とは 1 EJB(Enterprise Java Beans) は Java EE フレームワークに含まれる機能の 1 つ Java EE は 企業システムのアプリケーション開発に必要なさまざまな機能を 1 つにまとめた包括仕様の総称 WebSocket JAX-RS JSF JSP/JSTL JPA EL Servlet DI/CDI/EJB JPA JMS Batch JTA Java Mail JCA Java EE 7

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

目次 EJBとは 1 EJBの利点 2 EJBの歴史 3 EJBの開発環境の作成 4 5 Enterprise Bean 6 非同期処理の実装

EJB の利点 1 EJB コンテナが トランザクションの制御や EJB として記述したクラスのインスタンスの生成 / 実行と破棄といったシステムレベルのサービスを提供してくれるため 開発者はビジネスロジックの構築に集中できる

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

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

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

目次 EJBとは 1 EJBの利点 2 EJBの歴史 3 EJBの開発環境の作成 4 5 Enterprise Bean 6 非同期処理の実装

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

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

大きく改良されたEJB3.0 EJB3.0(2007年 )では 以前のバージョンに比べ アノテーションが利用できるようになり プログラミング が格段に簡単になった 主な特徴は以下の通り EJBのコンポーネントをJavaオブジェクトとして記述で きるようになった XMLによる設定は不要になった EJBのコンポーネントを簡単に呼び出せるようになった Javaオブジェクトとデータベース間のデータ変換を JPA(Java Persistence API) というデータベース アクセス方法により 簡潔に行えるようになった 以降はEJB3.2について説明する

目次 EJBとは 1 EJBの利点 2 EJBの歴史 3 EJBの開発環境の作成 4 5 Enterprise Bean 6 非同期処理の実装

EJB 開発環境の作成 1 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 が インストーラ

EJB 開発環境の作成 2 JBoss Developer Studio の動作には Oracle JDK 1.8.0 をインストールしておく必要がある JBoss Developer Studio のダウンロードには JBoss Community のアカウントが必要である JBoss Developer Studio の利用は 無償で行える JBoss Developer Studio のインストール手順は 以下を参照のこと http://myhappiness.hatenablog.com/entry/2013/02/20/015511

EJB 開発環境の作成 3 JBoss Developer Studio を起動すると 以下のような画面が起動する

目次 EJBとは 1 EJBの利点 2 EJBの歴史 3 EJBの開発環境の作成 4 5 Enterprise Bean 6 非同期処理の実装

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

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

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

ステートレスセッション Bean の定義例 import javax.ejb.stateless; @Stateless public class MyStatelessBean { public String sayhello(){ return Hello EJB!! ; } } ステートレスセッション Bean として取り扱う

ステートレスセッション Bean の 呼出例 import javax.ejb.ejb; Servlet 関連の import 句や処理は省略している public class CallEJBServlet extends HttpServlet { @EJB 呼び出すEJBを定義 MyStateless bean; } @Override protected void doget(httpservletrequest request,httpservletresponse response) throws ServletException, IOException { String msg = bean.sayhello(); } EJBのメソッドを呼び出す

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

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

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

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

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

ステートフルセッション Bean の定義例 import javax.ejb.stateful; import javax.annotation.postconstruct; import java.util.logging.* 呼び出し 作成 実行手順はステートレスセッション Bean の場合と同じ @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 と定義例 アプリケーション上に 1 つだけ存在するセッション Bean をシングルトンセッション Bean という import javax.ejb.singleton; import javax.ejb.startup; 呼び出し 作成 実行手順はステートレスセッション Bean の場合と同じ @Singleton @Startup public class MySingletonBean{ } 以下略 シングルトンセッション Bean として取り扱う デプロイされたアプリケーションが有効化されたタイミングで すぐオブジェクトを生成する

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

タイマーの定義例 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(){ } 9:00~9:10 まで 1 分刻みでログ出力を行う logger.log(level.info, LogTimer called."); private static final Logger = 以下略 サーバーを起動したタイミングでセッション Bean が生成され mytimer メソッドが実行されるようになる

目次 EJBとは 1 EJBの利点 2 EJBの歴史 3 EJBの開発環境の作成 4 5 Enterprise Bean 6 非同期処理の実装

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

非同期処理の定義例 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 = 以下略

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

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