J2EE

 

4つのアーキテクチャ:

ビジネスコンポーネントインタフェースを持つWebアプリケーション

ローカルEJBにアクセスするWebアプリケーション

リモートEJBを使用する分散アプリケーション

Webサービスインタフェースを公開するWebアプリケーション

 

J2EEアプリケーションのアーキテクチャ層:

EISEnterprise Information System)層:データベースやエンタープライズアプリケーションリソースなど

中間層:ビジネスロジックの実装部分(J2EEではEJBなどにより実装することが多い)

UI層: JSPやサーブレットなどのビューコンポーネントによるプレゼンテーション担当

 

Enterprise Bean

セッションBean:ビジネスロジックを実装するためのEnterprise Bean

エンティティBean:データを永続的に保存するためのEnterprise Bean。データベースの各レコードとマッピングされ、エンティティBeanに保存した値は、自動的にデータベースに書き込まれる

メッセージドリブンBeanJMSJava Message Service)を使い、非同期のメソッドの呼び出しをサポートするEnterprise Bean

 

Enterprise Beanを構成する3つの要素:

-ホームオブジェクト:Enterprise Beanのインスタンスを作るために使われるオブジェクト

- EJBオブジェクト:メソッドが呼び出された時、その呼び出しを中継するためのオブジェクト

- Beanオブジェクト:実際のビジネスロジックのメソッドを実装したBeanクラスのインスタンス

http://www.itmedia.co.jp/enterprise/0401/30/epn11.html

 

RMI-IIOPRemote Method Invocation over Internet Inter-ORB Protocol)によるEJBの制限:

EJBでは、RMI-IIOPを使い、ネットワーク越しにメソッドが呼び出される。以下がその制限。

EJBObjectインタフェース(EJBオブジェクト)の各メソッドでは、ネットワーク経由での呼び出しの例外に備えjava.rmi.RemoteExceptionをスローするように宣言しなければならない。

引数や戻り値として、プリミティブ型、SerializableRemote型以外の型は利用できない

 

Enterprise Beanを作るための要素:

Beanクラスの実装

任意のビジネスロジックのメソッドを実装する。EJB対応ではないJava Beansと作り方が同じ。ただし、EJB対応とするためにはEnterpriseBeanインタフェース(もしくはそのサブインタフェース)を実装しなければならない。(EJB 2.xの場合)

セッションBeanの場合:SessionBeanインタフェース

エンティティBeanの場合:EntityBeanインタフェース

メッセージドリブンBeanの場合:MessageDrivenBeanインタフェース

ホームオブジェクトのxxxメソッドが呼び出されると、BeanクラスのejbXxxという名前のメソッドが呼び出されるため、ホームインタフェースの実装によって、適したejbXxxのメソッドも実装する必要がある。

ホームインタフェース

EJBHomeインタフェースから継承したインタフェースとして用意する。このインタフェースには、createメソッド、removeメソッド、findxxxメソッドなどを必要に応じて実装する。一般的に、ホームインタフェースの名称は、XXXHomeのようにリモートインタフェースの末尾にHomeを付加させた名称とする

リモートインタフェース

EJBObjectインタフェースから継承したインタフェースとして用意。このインタフェースには、のBeanクラスに実装したメソッドと同じものを実装する。

ただし各メソッドは、「java.rmi.RemoteException」例外をthrowするように記述しなければならない。

 

配備記述子:

配備記述子は「ejb-jar.xml

 

Glassfish起動・停止方法:

$ as-install/bin/asadmin start-domain   (起動)

$ as-install/bin/asadmin stop-domain    (停止)

 

管理コンソール:

http://localhost:4848

 

アプリケーションの配備:

$ as-install/bin/asadmin deploy war-name

http://localhost:8080/hello

 

アプリケーションのリストアップ:

$ as-install/bin/asadmin list-applications

 

Web層で用いられるJavaEE要素

要素 

目的

サーブレット 

リクエストを直接処理し、レスポンスを構築するJava言語クラス。HTMLページに用いられることが多い。

JavaServer Pages (JSP) 

Text-based documents that are compiled into servlets and define how dynamic content can be added to static pages, such as HTML pages. 

JavaServer Faces technology 

A user-interface component framework for web applications that allows you to include UI components (such as fields and buttons) on a page, convert and validate UI component data, save UI component data to server-side data stores, and maintain component state. 

JavaServer Faces Facelets technology 

Facelets applications are a type of JavaServer Faces applications that use XHTML pages rather than JSP pages. 

Expression Language 

A set of standard tags used in JSP and Facelets pages to refer to Java EE components. 

JavaServer Pages Standard Tag Library 

A tag library that encapsulates core functionality common to JSP pages 

JavaBeans Components 

Objects that act as temporary data stores for the pages of an application 

 

Java EE Technologies Used in the Business Tier

The following Java EE technologies are used in the business tier in Java EE applications:

Enterprise JavaBeans (enterprise bean) components

JAX-RS RESTful web services

JAX-WS web service endpoints

Java Persistence API entities

 

Java EE Technologies Used in the EIS Tier

The following Java EE technologies are used to access the EIS tier in Java EE applications:

The Java Database Connectivity API (JDBC)

The Java Persistence API

The Java EE Connector Architecture

The Java Transaction API (JTA)

 

グローバルJNDI名:

GlassfishEJBは「グローバルJNDI名」により呼び出される。以下の優先ルールに則り、グローバルJNDI名が割り振られる。

- sun-ejb-jar.xmlsun-web.xmlまたはsun-application-client.xmlの各配備記述子に割り振られたグローバルJNDI名が最も高い優先権を持つ。Mapping Referencesを参照。

- ejb-jar.xmlweb.xml、またはapplication-client.xmlの各配備記述子のmapped-name要素割り振られたグローバルJNDI名が次に高い優先権を持つ。以下の要素がmapped-nameサブ要素を持っている。resource-refresource-env-refejb-refmessage-destinationmessage-destination-refsessionmessage-driven、そしてentity

- アノテーションのmappedName属性が三番目に高い優先権を持つ。以下のアノテーションがmappedName属性を持つ。@javax.annotation.Resource@javax.ejb.EJB@javax.ejb.Stateless@javax.ejb.Stateful、そして@javax.ejb.MessageDriven

- 配備記述子もしくはアノテーションによりグローバルJNDI名が割り振られなかった場合、デフォルト名が割り振られる。

- リモートインタフェースを持つEJB 2.xの従属物、セッションBeanもしくはエンティティBeanの場合、デフォルト名はホームインタフェースの完全記述名(パッケージ名を含んだクラス名)になる。

- リモートインタフェースを持つEJB 3.0の従属物、セッションBeanの場合、デフォルト名はリモートインタフェースの完全記述名(パッケージ名を含んだクラス名)になる。

- もしもEJB 2.xEJB 3.0の両方のリモートインタフェースが特定されている場合、または2つ以上の3.0のリモートインタフェースが特定されている場合、デフォルト名は無く、グローバルJNDI名は明示的に指定される必要がある。

- その他のグローバルJNDI名を必要とする従属物のデフォルトは、従属物の名前となる。例えば、@Resource(name="jdbc/Foo") DataSource ds; アノテーションがある場合、グローバルJNDI名はjdbc/Fooとなる。

http://docs.sun.com/app/docs/doc/819-3672/gcjkd?a=view

 

CTS

Compatibility Test SuiteJ2EE プラットフォーム製品に J2EE プラットフォーム標準との互換性があるかどうかを調べる互換性テストスイート。

 

     CMP Entity Beanとは? CMP Entity BeanCMPContainer Managed Persistenceの略です。データの永続化をコンテナが行うEntity Beanです。

http://www.hellohiro.com/entitybean.htm