<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

    主站蜘蛛池模板: 日本在线高清免费爱做网站| 无码中文字幕av免费放dvd| 在线A级毛片无码免费真人| 亚洲福利一区二区三区| 久久国产高潮流白浆免费观看| 亚洲av无码一区二区三区网站 | 免费久久人人爽人人爽av| 亚洲精品国精品久久99热| 国产一级a毛一级a看免费视频 | 亚洲精彩视频在线观看| 亚洲精品视频免费在线观看| 国产精品高清视亚洲精品| 久久99九九国产免费看小说| 亚洲婷婷天堂在线综合| 最近免费中文字幕大全高清大全1| 亚洲精品成人片在线播放| 国产免费黄色无码视频| 亚洲精品无码久久一线| 久久免费国产精品| 亚洲色偷拍另类无码专区| 亚洲精品天堂成人片AV在线播放| 无码人妻一区二区三区免费n鬼沢| 亚洲香蕉网久久综合影视| 国产青草亚洲香蕉精品久久| 久久久久久99av无码免费网站| 亚洲国产成人精品久久| 中文字幕免费视频| 久久久久亚洲AV无码麻豆| 久久久久久久岛国免费播放| 久久精品亚洲中文字幕无码网站| a级精品九九九大片免费看| 国产成人亚洲精品青草天美| 免费人成毛片动漫在线播放| 久久精品国产亚洲av麻豆色欲| 91av免费观看| 亚洲色欲色欱wwW在线| 日本一区二区三区日本免费| 日本在线观看免费高清| 亚洲国产香蕉人人爽成AV片久久| 一区二区免费国产在线观看 | 很黄很色很刺激的视频免费|