<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    EJB3 學習Notes 1。

    Notes 1]   Get Started --- setup environment and Helloworld Example
       
           1.  建立開發環境,安裝JDK5.0 Up,設置JAVA_HOME
                  下載EJB3 Container,本文采用Sun的GlassFish V2,glassfish-installer-v2ur1-b09d-windows.jar,
                  java -Xmx256m -jar glassfish-installer-v2ur1-b09d-windows.jar
                  cd glassfish
                  lib\ant\bin\ant -f setup.xml
            
           2.  啟動GlassFish,把glassfish_home\bin 加到Path, 執行Command,asadmin start-domain domain1 或者
    asadmin start-domain 將會啟動默認
                的domain
    . 用asadmin stop-domain domain1來shutdown GlassFish.
               關于admin command 可以參考
    http://docs.sun.com/app/docs/doc/819-3675/6n5slue6r?a=expand
           3.  建立測試環境,添加以下的Jars到ClassPath,
                GlassFish\lib\admin-cli.jar
                GlassFish\lib\appserv-rt.jar
                GlassFish\lib\appserv-ext.jar
                GlassFish\lib\javaee.jar

                創建jndi.properties,放在src目錄下,      

                         java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory
              java.naming.factory.url.pkgs
    =com.sun.enterprise.naming
              java.naming.factory.state
    =com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl
              org.omg.CORBA.ORBInitialHost
    =localhost
              org.omg.CORBA.ORBInitialPort
    =3700



    創建sun-ejb-jar.xml,放在META-INF目錄下,

    <?xml version="1.0" encoding="UTF-8"?>
           
    <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com 
           /software/appserver/dtds/sun-ejb-jar_3_0-0.dtd"
    >
           
    <sun-ejb-jar>
            
    <enterprise-beans>
            
    </enterprise-beans>
           
    </sun-ejb-jar>


    創建數據庫表:

    CREATE TABLE "PEOPLE" 

       (  "ID" 
    NUMBER(9,0NOT NULL ENABLE, 

             "NATION" 
    VARCHAR2(20 BYTE) NOT NULL ENABLE, 

             "CITY" 
    VARCHAR2(50 BYTE), 

             "PHONE_NUMBER" 
    VARCHAR2(50 BYTE), 

             "ZIP_CODE" 
    VARCHAR2(20 BYTE), 

             "NAME" 
    VARCHAR2(200 BYTE) NOT NULL ENABLE, 

              
    CONSTRAINT "PEOPLE_PK" PRIMARY KEY ("ID")

      USING 
    INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 

      STORAGE(INITIAL 
    65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

      PCTINCREASE 
    0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)

      TABLESPACE "DEMO"  ENABLE

       ) PCTFREE 
    10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

      STORAGE(INITIAL 
    65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

      PCTINCREASE 
    0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)

      TABLESPACE "DEMO" ;


           配置數據庫DataSource 以及JNDI
        4.  開始EJB3的第1個helloworld,
              
    (1).創建1個Entity

    package ejb3.example.entity;
    import java.io.Serializable;

    import javax.persistence.Basic;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQuery;
    import javax.persistence.SequenceGenerator;
    import javax.persistence.Table;

    @Entity
    @Table(name
    ="PEOPLE")
    @NamedQuery(name 
    = "People.findAll", query = "SELECT p FROM People p")
    @SequenceGenerator(name 
    = "PeopleSequence",sequenceName="SEQ_PEOPLE",initialValue=1,allocationSize=1)
    public class People implements Serializable{
        @Id
        @Column(name
    ="ID",nullable=false)
        @GeneratedValue(strategy 
    = GenerationType.SEQUENCE,generator="PeopleSequence")
        
    private int id;
        
        @Column(name
    ="NATION",nullable=false)
        
    private String nation;
        
        @Basic
        
    private String city;
        
        @Column(name
    ="PHONE_NUMBER")
        
    private String phoneNumber;
        
        @Column(name
    ="ZIP_CODE")
        
    private String zipCode;
        
        @Column(name
    ="NAME",nullable=false)
        
    private String name;
        
        
        
    public int getId() {
            
    return id;
        }

        
    public void setId(int id) {
            
    this.id = id;
        }

        
    public String getNation() {
            
    return nation;
        }

        
    public void setNation(String nation) {
            
    this.nation = nation;
        }

        
    public String getCity() {
            
    return city;
        }

        
    public void setCity(String city) {
            
    this.city = city;
        }

        
    public String getPhoneNumber() {
            
    return phoneNumber;
        }

        
    public void setPhoneNumber(String phoneNumber) {
            
    this.phoneNumber = phoneNumber;
        }

        
    public String getZipCode() {
            
    return zipCode;
        }

        
    public void setZipCode(String zipCode) {
            
    this.zipCode = zipCode;
        }

        
    public String getName() {
            
    return name;
        }

        
    public void setName(String name) {
            
    this.name = name;
        }

        
        
        
    public String toString(){
            
    return new StringBuilder()
            .append(
    "id="+id+"\n")
            .append(
    "name="+name+"\n")
            .append(
    "nation="+nation+"\n")
            .append(
    "city="+city+"\n")
            .append(
    "zipCode="+zipCode+"\n")
            .append(
    "phoneNumber="+phoneNumber).toString();
        }

    }



    創建persistence.xml放在META-INF目錄下,定義Persistence Unit提供給EntityManager使用


    <?xml version="1.0" encoding="UTF-8" ?>

    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
                 xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation
    ="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
                 version
    ="1.0">
        
    <persistence-unit name="PeoplePersistenceUnit" transaction-type="JTA">
            
    <provider>
                oracle.toplink.essentials.PersistenceProvider
            
    </provider>
            
    <jta-data-source>oracleDataSourceJNDI</jta-data-source>
            
    <!--mapping-file>ejb3/example/entity/orm.xml</mapping-file-->
            
    <class>ejb3.example.entity.People</class>
            
    <properties>
                
    <property name="toplink.target-server" value="SunAS9"/>
                
    <property name="toplink.target-database" value="Oracle"/>
                
    <property name="toplink.logging.level" value="FINE"/>
                
    <!--<property name="toplink.ddl-generation" value="drop-and-create-tables"/>
                
    -->
            
    </properties>
        
    </persistence-unit>

    </persistence>


    (2) 創建IPeoplePersistenceService來做Persistence Facade,使用EntityManager的API


    package ejb3.example.service.api;

    import java.util.List;

    import javax.ejb.Local;

    import ejb3.example.entity.People;


    public interface IPeoplePersistenceService {
           
        
    public void save(People p);
        
        
    public People find(int id);
        
        
    public List<People>findAll();
        
        
    public void update(People p);
        
        
    public void delete(int id);
        
        
    public List<People>query(String query);
        
        
    public List<People> queryByPagination(String query,int startPage,int pageSize);
    }



     (3). 實現Persistent Service


    package ejb3.example.service.impl;

    import java.util.List;

    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;

    import ejb3.example.entity.People;

    @Stateless
    public class PeoplePersistenceServiceBean implements IPeoplePersistenceService {
        @PersistenceContext(unitName
    ="PeoplePersistenceUnit")
        
    private EntityManager entityManager;
        
        
    private static final int DEFAULT_PAGE_SIZE=20;
        
    public List<People>query(String query){
            
    return entityManager.createQuery(query).getResultList();
        }

        
        
    public List<People>findAll(){
            
    return entityManager.createNamedQuery("People.findAll").getResultList();
        }

        
        
    public void save(People p) {
            assertNotNull(p);
            entityManager.persist(p);
        }

        
        
    public People find(int id){
            
    return entityManager.find(People.class, id);
        }


        
    public void delete(int id) {
            People p
    =entityManager.find(People.class, id);
            
    if(p!=null)
             entityManager.remove(p);
        }


        
    public void update(People p) {
            assertNotNull(p);
            entityManager.merge(p);
        }

        
        
        
    public List<People> queryByPagination(String query,int startPage,int pageSize){
            Query q
    =entityManager.createQuery(query);
            q.setMaxResults(pageSize
    <1?DEFAULT_PAGE_SIZE:pageSize);
            
    if(startPage<1)startPage=1;
            q.setFirstResult(startPage
    *pageSize);
            
    return q.getResultList();
        }

        
        
        
    private void assertNotNull(Object o){
             
    if(null==o)
                 
    throw new RuntimeException("Object cannot be null");
        }

         
    }



     (4). 創建Business Logic的Service Interface


    package ejb3.example.service.api;

    import java.util.List;

    import javax.ejb.Local;
    import javax.ejb.Remote;

    import ejb3.example.entity.People;



    public interface IPeopleManager {
          
          
    public People findById(int id);
          
          
    public List<People> findByName(String name);
          
          
    public List<People> findByNation(String nation);
          
          
    public List<People> findAll();
          
          
    public void update(People p);
          
          
    public void deleteById(int id);
          
          
    public void save(People p);
          
          
    public List<People> queryByPagination(String query,int startPage,int pageSize);
        
    }



     (5).創建Stateless Bean來處理Busniess Logic , 它實現IPeopleManager


    package ejb3.example.service.impl;

    import java.util.List;

    import javax.annotation.Resource;
    import javax.ejb.EJB;
    import javax.ejb.Remote;
    import javax.ejb.Stateless;
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.Destination;
    import javax.jms.JMSException;
    import javax.jms.MessageProducer;
    import javax.jms.ObjectMessage;
    import javax.jms.Session;

    import ejb3.example.entity.People;


    @Local(IPeopleManager.
    class)
    @Stateless(name
    ="peopleManagerBean", mappedName="peopleManagerBeanJNDI"
    public class PeopleManagerBean implements IPeopleManager {

        
    private static final String PEOPLE_ENTITY=People.class.getSimpleName();

        @EJB IPeoplePersistenceService persister;

        
        
    public void deleteById(int id) {
            persister.delete(id);
        }


        
    public List<People> findAll() {
            
    return persister.findAll();
        }


        
    public People findById(int id) {
            
    return persister.find(id);
        }


        
    public List<People> findByName(String name) {
            
    return  persister.query("select p from "+PEOPLE_ENTITY+" p where p.name=:"+name);
        }


        
    public List<People> findByNation(String nation) {
            
    return  persister.query("select p from "+PEOPLE_ENTITY+" p where p.nation=:"+nation);
        }


        
    public List<People> queryByPagination(String query,int startPage, int pageSize) {
            
    return  persister.queryByPagination(query, startPage, pageSize);

        }


        
    public void save(People p) {
            persister.save(p);
        }


        
    public void update(People p) {
            persister.update(p);
        }

         
    }



    (6). Export Jar,把它放在glassfish\domains\domain1\autodeploy,這個會再GlassFish啟動的時候自動部署或者打開http://localhost:4848,用默認的帳號登陸來Deploy
                 (user: admin   password: adminadmin)
                

            (7). 創建測試客戶端


    package ejb3.example.client;

    import java.sql.SQLException;
    import java.util.Iterator;

    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;

    import ejb3.example.service.api.IPeopleManager;
    import ejb3.example.entity.People;


    public class TestClient {

        
    /**
         * Method documentation to be filled
         * TODO
         *
         * 
    @param args
         * 
    @throws NamingException 
         * 
    @throws SQLException 
         * 
    @throws ClassNotFoundException 
         * 
    @throws IllegalAccessException 
         * 
    @throws InstantiationException 
         
    */

        
    public static void main(String[] args) throws NamingException, SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {

            Context context 
    = new InitialContext ();
            IPeopleManager mgr 
    = (IPeopleManager)context.lookup ("peopleManagerBeanJNDI");
            People p
    =mgr.findById(1);
            p.setCity(
    "beijing Chaoyang");
            p.setName(
    "gembin");
            p.setNation(
    "Great China");
            p.setPhoneNumber(
    "xxxx");
            p.setZipCode(
    "100000");
            mgr.update(p);
            Iterator
    <People>ps=mgr.findAll().iterator();
            
    while(ps.hasNext()){
                System.out.println(
    "*********************");
                System.out.println(ps.next());
                System.out.println(
    "*********************");
            }

         
        }

    }


    posted on 2009-02-26 09:44 paulwong 閱讀(408) 評論(0)  編輯  收藏 所屬分類: J2EE

    主站蜘蛛池模板: 亚洲精品天天影视综合网| 国产无遮挡色视频免费视频| 国产99视频精品免费专区| 美女网站在线观看视频免费的| igao激情在线视频免费| 美女网站在线观看视频免费的| 国产中文字幕在线免费观看| 免费观看一区二区三区| 最近2019中文免费字幕在线观看| 暖暖在线视频免费视频| 人妻丰满熟妇无码区免费| 亚洲网站免费观看| 67194成是人免费无码| 国产成人免费片在线观看| 免费大片黄手机在线观看| 4338×亚洲全国最大色成网站| 中文字幕人成人乱码亚洲电影| 亚洲精品狼友在线播放| 老汉色老汉首页a亚洲| 亚洲午夜久久久久久尤物| 亚洲av色香蕉一区二区三区| 蜜臀亚洲AV无码精品国产午夜.| 免费无码婬片aaa直播表情| 3344在线看片免费| 亚洲香蕉免费有线视频| 免费的涩涩视频在线播放| 亚洲精品国产自在久久 | aa级毛片毛片免费观看久| 三年片在线观看免费| 亚洲综合免费视频| 国产a级特黄的片子视频免费| 亚洲视频在线一区二区| 亚洲大片在线观看| 中文字幕亚洲综合小综合在线| 激情小说亚洲图片| 久久99毛片免费观看不卡| 在线观看特色大片免费视频 | 免费无遮挡无码永久视频| 成人毛片免费播放| 国产美女亚洲精品久久久综合| 91在线亚洲精品专区|