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

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

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

    paulwong

    EJB3 學(xué)習(xí)Notes 1。

    Notes 1]   Get Started --- setup environment and Helloworld Example
       
           1.  建立開發(fā)環(huán)境,安裝JDK5.0 Up,設(shè)置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.  啟動(dòng)GlassFish,把glassfish_home\bin 加到Path, 執(zhí)行Command,asadmin start-domain domain1 或者
    asadmin start-domain 將會(huì)啟動(dòng)默認(rèn)
                的domain
    . 用asadmin stop-domain domain1來shutdown GlassFish.
               關(guān)于admin command 可以參考
    http://docs.sun.com/app/docs/doc/819-3675/6n5slue6r?a=expand
           3.  建立測(cè)試環(huán)境,添加以下的Jars到ClassPath,
                GlassFish\lib\admin-cli.jar
                GlassFish\lib\appserv-rt.jar
                GlassFish\lib\appserv-ext.jar
                GlassFish\lib\javaee.jar

                創(chuàng)建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



    創(chuàng)建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>


    創(chuàng)建數(shù)據(jù)庫(kù)表:

    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" ;


           配置數(shù)據(jù)庫(kù)DataSource 以及JNDI
        4.  開始EJB3的第1個(gè)helloworld,
              
    (1).創(chuàng)建1個(gè)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();
        }

    }



    創(chuàng)建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) 創(chuàng)建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). 實(shí)現(xiàn)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). 創(chuàng)建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).創(chuàng)建Stateless Bean來處理Busniess Logic , 它實(shí)現(xiàn)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,這個(gè)會(huì)再GlassFish啟動(dòng)的時(shí)候自動(dòng)部署或者打開http://localhost:4848,用默認(rèn)的帳號(hào)登陸來Deploy
                 (user: admin   password: adminadmin)
                

            (7). 創(chuàng)建測(cè)試客戶端


    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 閱讀(409) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE

    主站蜘蛛池模板: 中文字幕a∨在线乱码免费看| 亚洲福利在线播放| 花蝴蝶免费视频在线观看高清版| 亚洲人成网亚洲欧洲无码| 亚洲综合精品一二三区在线| 亚洲免费视频一区二区三区| 无码一区二区三区免费视频 | 国产精品va无码免费麻豆| 91大神免费观看| 一个人看的www免费视频在线观看 一个人免费视频观看在线www | 波多野结衣视频在线免费观看| 2015日韩永久免费视频播放| 久草免费福利在线| 免费无遮挡无遮羞在线看| 亚洲精华国产精华精华液网站| 亚洲不卡在线观看| 亚洲精品中文字幕麻豆| 久久精品国产亚洲AV无码娇色| 亚洲一区二区三区影院| 亚洲人成网站在线观看青青| 亚洲av无码成人精品区| 亚洲AV无码一区二区三区在线观看| 午夜私人影院免费体验区| 最近最好的中文字幕2019免费 | 亚洲夜夜欢A∨一区二区三区| 亚洲国产成人精品无码久久久久久综合 | 大学生美女毛片免费视频| 亚洲人成电影网站免费| 国产在线a免费观看| 国产成人免费网站| 成视频年人黄网站免费视频| 野花高清在线观看免费完整版中文 | 午夜精品在线免费观看| 日本高清免费网站| www.亚洲精品.com| 亚洲日韩涩涩成人午夜私人影院| 亚洲av午夜精品一区二区三区| 中文字幕亚洲无线码| 九月丁香婷婷亚洲综合色| 久久精品国产亚洲av四虎| 亚洲国产精品久久久久久|