Profile

ys2310

Author:ys2310
2008年春にNew York Cityにあるふる〜い大学を卒業。


Categories


new postings


new comments


new trackbacks


monthly archeive


FC2ブログ 転職
DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
| BLOG TOP |
DATE: CATEGORY:J2EE

The Java Servlet API allows a software developer to add dynamic content to a Web server using the Java platform. The generated content is commonly HTML, but may be other data such as XML. Servlets are the Java counterpart to non-Java dynamic Web content technologies such as PHP, CGI and ASP.NET. Servlets can maintain state across many server transactions by using HTTP cookies, session variables or URL rewriting.

The Servlet API, contained in the Java package hierarchy javax.servlet, defines the expected interactions of a Web container and a servlet. A Web container is essentially the component of a Web server that interacts with the servlets. The Web container is responsible for managing the lifecycle of servlets, mapping a URL to a particular servlet and ensuring that the URL requester has the correct access rights.

A Servlet is an object that receives a request and generates a response based on that request. The basic servlet package defines Java objects to represent servlet requests and responses, as well as objects to reflect the servlet's configuration parameters and execution environment. The package javax.servlet.http defines HTTP-specific subclasses of the generic servlet elements, including session management objects that track multiple requests and responses between the Web server and a client. Servlets may be packaged in a WAR file as a Web application.

Servlets can be generated automatically by JavaServer Pages (JSP), or alternately by template engines such as WebMacro. Often servlets are used in conjunction with JSPs in a pattern called "Model 2", which is a flavor of the model-view-controller pattern.


[Quote]:http://en.wikipedia.org/wiki/Java_Servlet

| BLOG TOP |

JSP

DATE: CATEGORY:J2EE

JavaServer Pages (JSP) is a Java technology that allows software developers to dynamically generate HTML, XML or other types of documents in response to a Web client request. The technology allows Java code and certain pre-defined actions to be embedded into static content.

The JSP syntax adds additional XML-like tags, called JSP actions, to be used to invoke built-in functionality. Additionally, the technology allows for the creation of JSP tag libraries that act as extensions to the standard HTML or XML tags. Tag libraries provide a platform independent way of extending the capabilities of a Web server.

JSPs are compiled into Java Servlets by a JSP compiler. A JSP compiler may generate a servlet in Java code that is then compiled by the Java compiler, or it may generate byte code for the servlet directly. JSPs can also be interpreted on-the-fly reducing the time taken to reload changes.


Java言語を利用してWebサーバで動的にWebページを生成し、クライアントに送信する技術。HTMLファイルの中にJavaプログラムを埋め込んでおき、クライアントの要求に応じてプログラムを実行、処理結果のみをクライアントに送信する。結果は通常のHTML形式になるため、Webブラウザに特殊な機能を組みこむことなくWebアプリケーションを構築できる。Microsoft社のIISの拡張機能ASPに似た技術だが、ASPが(ほぼ)IIS専用なのに対して、JSPは様々なWebサーバ用の実行環境が用意されており、また、特殊なスクリプト言語を覚えることなく、Java言語をそのまま使えるという利点がある。
[Quote]:http://e-words.jp/w/JSP.html

http://64.233.167.104/search?q=cache:qvw4Mh0Y6AUJ:en.wikipedia.org/wiki/JavaServer_Pages+jsp&hl=en&ct=clnk&cd=8&gl=us&lr=lang_en%7Clang_ja&client=firefox-a
| BLOG TOP |
DATE: CATEGORY:J2EE
・JavaBeansは「ある形式」に則ったクラスの事である。
・JavaBeansを自作する。
・JavaBeansを自作してネットで公開する。
・人が公開しているJavaBeansを使用する。
以上の4つが意味が分かるのであれば、それをそのまま次のように分かるだろう。
・EnterpriseJavaBeansは「ある形式」に則ったクラスの事である。
・EnterpriseJavaBeansを自作する。
・EnterpriseJavaBeansを自作してネットで公開する。
・人が公開しているEnterpriseJavaBeansを使用する。

JavaBeansが特別な形のJavaクラスだとすると、EJBは特別な形のJavaBeansという事になるでしょうか。

で、EJBは大きく次の2つに分けられる。
SessionBean:普通プログラムを書く
EntityBean:普通データ構造のみを書く

非常に簡単な説明だが、基本は上のような感じです。
[Quote]:http://64.233.167.104/search?q=cache:njsz7fuunioJ:oshiete1.goo.ne.jp/qa2569572.html+session+bean+entity+bean&hl=en&ct=clnk&cd=9&gl=us&lr=lang_en%7Clang_ja&client=firefox-a

| BLOG TOP |
DATE: CATEGORY:J2EE
Enterprise JavaBeans(EJB)で規定されているBeanのひとつ。データベースのレコードなど、特定のデータに対する参照を提供する機能を持つ。

 Entity Beanは自身でデータを保持するのではなく、バックにあるデータベースなど、別の記録システムに対するインターフェースを提供する形で動作する。従って、Entity Beanに対して記録を行ったデータはデータベースのレコードとして記録され、Beanが破棄されてもデータの内容は保存される。

 これに対し、セッション単位での処理を行なうBeanは「Session Bean」と呼ばれ、こちらはセッションが終了してBeanが破棄されると記録した内容も失われる。


[Quote]:http://e-words.jp/w/Entity20Bean.html

| BLOG TOP |

EJB

DATE: CATEGORY:J2EE

EJB とはなんだろうか

EJB は J2EE 仕様に含まれる仕様の一つです。2004 年現在主流の J2EE 1.3 には EJB 2.0 が含まれています。

J2EE 1.3 の EJB 2.0 では、既存の Session Beans, Entity Beans に加えて、Message-Driven Beans (MDB) が追加されました。EJB クライアントからアクセス可能な Session Beans と Entity Beans と異なり、MDB は JMS プロバイダと呼ばれる MOM (Message Oriented Middleware) から呼び出されます。

Session Beans
クライアント要求を受けて、ビジネスロジックを実装します。インタフェース SessionBean を実装します。
  • Stateful Session Bean...クライアントとの conversational 状態をコンテナで維持し、クライアントがセッションを終了すると、データを破棄します。
  • Stateless Session Bean...セッションの状態を永続化しません。動作が高速で、複数のクライアント要求を同時に処理できます。
Entity Beans
永続化されたデータを表します。複数のクライアントから共有可能で、一意のキーで探索できます。インタフェース EntityBean を実装します。
  • CMP (Container-Managed Persistence)...永続化のためのデータベース・アクセスをコンテナが管理します。永続化の指定は配備記述子 (DD, Deployment Descriptor) に記述します。abstract クラスとして実装し、永続化するフィールドに対するアクセスメソッドの実装が必須です。
  • BMP (Bean-Managed Persistence)...永続化のための SQL を bean のコードとして記述するものです。具象クラスとして実装します。
Message-Driven Beans
メッセージキューによる非同期トランザクション処理のための EJB です。オンライントランザクション処理 (OLTP) のための Session Beans と Entity Beans とは異なり、MDB には EJB クライアントからアクセスできず、メッセージの到着をトリガーとして実行されます。メッセージの待ちキューを実装する仕組みを JMS (Java Messaging Service) と呼び、実装する機能は MOM (Message Oriented Middleware) と呼ばれます。例えば、IBM の WebSphere Applications Server には、WebSphere MQ の機能を JMS 用に絞ったものが、Restricted Queue Manager として同梱されています。インタフェース MessageDrivenBeanMessageListener を実装します。

EJB 総論

EJB については、Session Bean, Entity Bean, Message-Driven Bean の三種類があり、他の Java クラス(EJB クライアント)から明示的にアクセスできるのは Session Bean と Entity Bean だと説明しました。MDB (Message-Driven Bean) は JMS のメッセージの到着をトリガーとして起動します。

EJB クライアントからは、次の三つの方法でアクセスします。

  • SOAP
  • Remote インタフェース (RMI/IIOP)
  • Local インタフェース

最も基本的なものが Remote インタフェースです。J2EE 1.3 (EJB 2.0) になって、Local インタフェースが追加されました。Remote インタフェースは、分散オブジェクト実装のための RMI/IIOP のプロトコルを使って、ノードが異なるオブジェクトを呼び出せます。

しかし、この場合は、メソッド引数の値をコピーする値渡しで、パフォーマンス的なボトルネックになっていました。これを改善したのが Local インタフェースで、同一ノード内(同一 JVM 内)でのメソッドの参照であれば、値渡しではなく、参照渡しでメソッド引数を取り扱えるようにしたものです。

従来の EJB では、分散オブジェクトを前提に、ノードへのアプリのデプロメントの自由度を確保することを目的としていました。Local インタフェースは、デプロイメントの自由度を犠牲にして、パフォーマンス的な問題点を解決するものです。

Session Beans

Entity Beans

Message-Driven Beans

MDB (Message-Driven Beans) のことを説明する前に、JMS (Java Message Service) について説明する必要があります。

JMS

JMS は、J2EE 1.3 で必須とされた仕様です。Web 層のサーブレット/JSP、既存の EJB コンテナの Session Beans/Entity Beans は、同期機能と RMI/IIOP (RMI over IIOP) を使用したオンライントランザクション処理 (OLTP) によって、リモート通信を実現してきました。これを、カンバセーション型と呼びます。銀行業務の ATM などは、カンバセーションを確立して即時性を重視した OLTP の最も極端な例です。例えば、IBM MVS の VTAM セッションによる、SNA (Systems Network Architecture) プロトコルがその例として挙げられます。

ミッションクリティカルなシステムでは、リモート間の接続を疎にするために、メッセージング(メッセージ・キューイング)という非同期の仕組みを使ってきた歴史があり、企業間接続のメッセージングハブなどで、その有用性は実証済みです。

メッセージングによる非同期通信のインフラは、MOM (Messaging Oriented Middleware) と呼ばれるソフトウェアによって提供されてきました。プロプライエタリなデファクトスタンダードは、IBM の MQS (MQSeries) です。因みに、 MQS の v5.3 以上で IBM のソフトウェア・ブランディング戦略が変更され、現在は WebSphere MQ と改称されています。

リモートのシステムは、メッセージをプロデュース(生産)して、メッセージブローカ(媒介)が管理する待ちキューに、メッセージを PUT します。ローカルのシステムは、待ちキューを管理するメッセージブローカからメッセージの到着の信号を受け取って、キューからメッセージを GET してコンシューム(消費)します。

メッセージの送信者は、相手先の処理終了を待機する必要がないため、自身のオンライン業務を滞らせることなく、次の処理に進むことができます。このため、即時性が要求されるシステムでは、待ちキューによる非同期処理は必須の仕組みとなっています。

メッセージブローカを実装する MOM 製品では、キューのマネージャ機能だけではなく、メッセージの Expiry や Dead Letter Queue (送達不能キュー)、トランザクションのロールバック/フォーワードリカバリ、トランザクションの独立性レベルなどがサポートされています。

RPC

尚、OLTP による同期処理と、メッセージングによる非同期処理の中間に位置するものとして、 RPC (Remote Procedure Call) と呼ばれるものがあります。メッセージ・キューイングによる非同期処理から見れば、OLTP の一つなのですが、カンバセーションを確立する OLTP に比べると、若干ながらリモート間の結合が疎になっています。

RPC では、各システムごとにスタブ (stub) と呼ばれる境界に位置するプログラムを用意して、各々のシステムは、自身のローカルのスタブに向かって機能の呼び出しを実行して待機します。スタブは、自 分に実装された仕組みで相手のスタブに要求を転送して、処理結果を受け取るので、ローカルの呼び出し側/受け取り側では、あたかも、その機能が、ローカル のスタブに実装されているかのように振舞うことが可能です。

但し、スタブの呼び出し側は、ローカルのサブルーチン呼び出しと同様なので、処理結果が返ってくるまで待機(ブロック)されますし、呼び出された側 のスタブは、要求を同期処理する必要があるので、個々の要求を処理して応答を返すまで、溜まった要求を溜めておくバッファ/取り消されたときのための管理 タスクなどを実装する必要があり、オンライン処理の困難は継承します。

同一筐体(クラスタ)内でも、OS のシステムを呼び出す場合はスタブを使うことがあります。IBM MVS の RRS (Resource Recovery Service) は、OS である MVS が提供する RRS のサービスを利用するために、各ミドルウェアが各々 RRS スタブを実装しています。リモートの場合は、Java では、RMI/IIOP によって実装され、SOAP の場合も、プロキシクラスがスタブと呼ばれることがあり、AX-RPC 仕様によって標準化されています。

トランザクション

トランザクションとは、一連の処理の流れのことで、UOW (Unit of Work) と呼ばれています。トランザクションは、TCP/IP のステートレスという特徴が提供できない機能を、アプリケーション(製品と適用業務)によってサポートするものであり、一連の仕事の単位を意味します。

つまり、一連の処理の途中で、H/W 障害が発生すれば、バックアップから処理前の状態に復旧されるし、ソフトウェア障害が発生すれば、変更/更新を記録した更新ログ(トランザクションログ) から最新の状態まで回復するものです。トランザクションは仕事の単位 (UOW) であって、処理前に戻るか、完了後まで進めるかしかありません。このような性質をまとめて、ACID 特性と呼びます。

トランザクションの ACID 特性

  • Atomicity...原子性。トランザクションは、それ以上分割できない最小の単位である。トランザクションは、全て処理されるか、全て処理されないかの何れかでしかない。
  • Consistency...一貫性。DBMS の特性としても知られる。アプリケーションの処理の如何に関わらず、処理前後のデータに整合性がなければならない。具体的には、トランザクションの処理 が、DBMS の整合性制約を犯してはならないことを意味する。例えば、全ての処理が平行して実行されても、逐次的に実行されても、その結果は変わらないものでなければ ならない。
  • Isolation...分離性。複数のトランザクションが平行して実行されているとき、一方の処理結果が、他方の結果に影響してはならない。例えば、共有リソースに対する排他ロックによって実装される。一貫性の維持のためにも必須の特性。
  • Durabirity...持続性。トランザクションが一旦終了すれば(UOW が破棄されれば)、トランザクションによって変更されたデータは、障害の発生の如何に関わらず、永続化されていなければならない。

トランザクションの分離レベル

ACIS 特性の三つ目の分離性(独立性)は、平行に実行されているトランザクションが、逐次的に実行されたものと等価である性質を意味します。一つの UOW から、他の UOW の処理が反映しない/見えないことだとも言えます。一般には次の三つのレベルに分けられます。

  • Dirty Read ...ある UOW の未コミットデータが、他のトランザクションから参照可能
  • Nonrepeatable Read ...UOW 内で、繰り返し読み取りを行ったとき、返されるデータに増減がある
  • Phantom Read ...UOW 内で読み取りを行うとき、一度読み取られた値は何度読み取られても必ず読み取られるが、他の UOW が追加したデータが追加して返されることがある

J2EE のトランザクションモード

J2EE 仕様には、トランザクションをコンテナが管理する仕様である JTA (Java Transaction API) が含まれます。JTA が規定するインタフェースの実装として、コンテナがサポートする実装は JTS (Java Transaction Services) が提供します。JTS は OMG の OTS (Object Transaction Service) の実装になります。

トランザクションを EJB のコードで管理する場合は BMT (Bean Managed Transaction) と呼び、コンテナに管理を任す場合は CMT (Container Managed Transaction) と呼びます。

BMT では、トランザクションをインタフェース javax.transaction.UserTransaction を実装することで管理コードを実装します。トランザクションの開始は UserTransaction#begin() であり、コミットは UserTransaction#commit() になります。

CMT では、配備記述子 (DD, Deployment Descriptor) に、トランザクション属性として記述します。選択できるトランザクション・モードは次の六つです。

  • Required ...クライアントがトランザクション内であれば、そのトランザクションのコンテキスト内で処理され、トランザクションを持たなければ、新たにトランザクションを発生させる
  • RequiresNew ...クライアントが呼び出し時にトランザクションを持っていてもいなくても、常に新しいトランザクションを発生させて、常に変更をコミットしてクライアントに制御を返す
  • Supports ...クライアントがトランザクション内にあれば当該トランザクション内で処理され、そうでなければ、トランザクションを持たないで、逐次的に変更が反映される
  • Mandatory ...クライアントがトランザクション内にあれば当該トランザクション内で処理され、そうでなければエラーとなる
  • NotSupported ...クライアントがトランザクション内にあってもなくても、常にトランザクションなしで実行される
  • Never ...クライアントがトランザクションを持てばエラーとなり、持たなければ、トランザクションなしで実行される

Entity Bean では、CMT しか利用できません。Session Bean と Message-Driven Bean (MDB) では BMT と CMT の両方が利用できます。但し、MDB の場合は、Required か NotSupported の何れかしか利用できません。

分離レベル

データベースや MOM 製品などのトランザクションを発生させる製品では、分離レベル (isolation level) が定義されています。

例えば、IBM DB2 での分離レベルは次の四つが定義されています。

  • RR (Repeatable Read)
  • RS (Read Stability)
  • CS (Cursor Stability)
  • UR (Uncommitted Read)

同様に、JDBC では次の四つが定義されています。

  • S (Serializable)
  • RR (Repeatable Read)
  • RC (Read Committed)
  • UR (Uncommitted Read)

J2EE 2.0 仕様では、明確な規定がありません。IBM WAS 5.0 では次の三つの分離レベルを、アクセスインテントポリシーで指定します。

  • Serializable
  • Repeatable Read
  • Read Committed

[Quote]:http://www.nextindex.net/java/J2EE/EJB.html

| BLOG TOP |

copyright © Manhattan life all rights reserved.Powered by FC2ブログ