EJB/ EJB3.0

■構成
EJB3.0 Siplified API
|―SessionBean
|  |―Stateful Session Bean
|  |―Stateless Session Bean
|―Message-driven Bean
Java Persistence API
|―Entity
//

■Stateless Session Bean (Bean実装クラス)
--------------------------------------------------
package sample.ejb;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import sample.entity.Account;
@Stateless
public class AccountServiceBean implements AccountService {
 public boolean register(Account account) {
  return true;
 }
 public List find(String loginname) {
  return new ArrayList();
 }
}
/-------------------------------------------------
@Stateless
 →そのBeanがStateless Session Beanであることを示す。
 →name属性:Beanの名前
  ejb-jar内で一意であること。
 →mappedName属性:このBeanをマッピングする製品固有の名前を指定する。
 →description属性:このBeanの説明
@PostConstruct
 EJB作成後に呼ばれる。
@preDestory
 EJB破棄前に呼ばれる。
@PostActivate
 EJB活性化後に呼ばれる。(Statefulのみ)
@PrePassivate
 EJB非活性化前に呼ばれる。(Statefulのみ)

■Session Bean (リモートIFクラス)
--------------------------------------------------
package sample.ejb;
import java.util.List;
import javax.ejb.Remote;
import sample.entity.Account;
@Remote
public interface AccountService {
 public boolean register(Account account);
 public List find(String loginname);
}
/-------------------------------------------------

■Session Bean (ローカルIFクラス)
--------------------------------------------------
package sample.ejb;
import java.util.List;
import javax.ejb.Local;
import sample.entity.Account;
@Local
public interface AccountLocalService {
 public boolean register(Account account);
 public List find(String loginname);
}
/-------------------------------------------------

■Stateful Session Bean
--------------------------------------------------
package sample.ejb;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateful;
import sample.entity.Account;
@Stateful
public class SearchServiceBean implements SearchService {
private List searchResult;
………
}
/-------------------------------------------------
@Stateful
 →そのBeanがStateless Session Beanであることを示す。
 →name属性:Beanの名前
  ejb-jar内で一意であること。
 →mappedName属性:このBeanをマッピングする製品固有の名前を指定する。
 →description属性:このBeanの説明。
@Remove
 →このStateful Session Beanを破棄する際に呼ばれるメソッドを指定する。
 →@PreDestoryを指定したメソッドが存在する場合、
  先にPreDestoryが呼ばれ、次いでRemoveを付与したメソッドが呼ばれる。
 →retainIfException属性:
  メソッドがアプリケーション例外を発した時、
  SFSBを削除しないことを指定する。
  デフォルトはfalse。

■Message-driven Bean
--------------------------------------------------
package sample.ejb;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
@MessageDriven
public class MyMDB implements MessageListener {
 public void onMessage(Message message) {
  ………
 }
}
/-------------------------------------------------
@MessageDriven
 →そのBeanがMessage-Driven Beanであることを示す。
 →name属性:Beanの名前
  ejb-jar内で一意であること。
 →mappedName属性:このBeanをマッピングする製品固有の名前を指定する。
 →messageListenerInterface属性:
  BeanがIFを実装していない場合や複数のIFを実装している場合に、
  MessageListenerIFを指定する。

■DeploymentDescriptor

■Dependency Injection
□Simplified API Dependency Injection
EJB
 →EJBへの参照
 →変数の名前と型から注入するBeanをコンテナが判別する。
 →このルールに合わない場合は、
  name属性でJNDI名、beanInterface属性でそのBeanのIFを指定する。
@PersistenceContext
 →PUへの参照
 →name属性で特定のPUを指定する。
@Resource
 →リソースへの参照。
  データソース、トランザクション、オブジェクト等。
 →JNDIにバインドされているオブジェクトを注入する。
 →変数の名前と型から注入するオブジェクトをコンテナが判別する。
 →このルールに合わない場合は、
  name/mappedName属性でJNDI名、type属性でそのオブジェクトの型を指定する。

--------------------------------------------------
package sample.ejb;
@Stateless
public class AccountServiceBean implements AccountService {
 @PersistenceContext
 private EntityManager em;
 ......
}
/-------------------------------------------------

■Persistence Unit
→以下を含む論理的なグループ。
 *Entity Manager FactoryとEntity Manager及びその設定情報
 *Entity Managerで管理されるクラス
 *クラスとDBをマッピングするメタデータ
→JavaEE環境では、EJB-Jar,War,Ear、application client Jarで
 PUを0個以上定義できる。
→PUは名前を持つこと。
 PU名は、アプリで一意であること。
→persistence.xmlに定義する。
→persistence.xmlは、
 クラスパス上のMETA-INFディレクトリに配置する。


XXX

ref:
http://www.java-users.jp/contents/events/basicseminar/200803annotation/AnnotationEE5.pdf

tag : EJB

2009-06-07 17:45 : __j2ee__ejb : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud