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

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

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

    新建一個EJB3項目,在WETA-INF目錄下新建persistence.xml文件,其中"hibernate.hbm2ddl.auto" value="create-drop",則不需要人工建立數據庫表,會自動幫你建立。hibernate.dialect如果沒寫,也會提示出錯。

    persistence.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence>
      <persistence-unit name="Ejb3">
        <jta-data-source>java:/ejb3Example</jta-data-source>
        <properties>
          <property name="hibernate.hbm2ddl.auto"
                    value="create-drop"/>
          <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        </properties>
      </persistence-unit>
    </persistence>

    建立entity bean:Book.java,這是一個普通POJO,里面使用JPA注釋它是一個entity bean,在領域模型里,實體類繼承Serializable接口實現序列化,有利于使用緩存。如果有提示@Table(name="book")
    出錯,找不到數據庫表,不用管它,最后系統會自動建立數據庫表,當然,自己手動建立一個也可。

    Book.java
    import java.io.Serializable;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.SequenceGenerator;
    import javax.persistence.Table;
    import javax.persistence.TableGenerator;

    @Entity
    @Table(name="book")
    @TableGenerator(  name="book_id", table="primary_keys", pkColumnName="key", pkColumnValue="book",valueColumnName="value")
    public class Book implements Serializable {
     private static final long serialVersionUID = 1L;
     private Integer id;
     private String title;
     private String author; 
     public String getAuthor() {
      return author;
     }

     public void setAuthor(String author) {
      this.author = author;
     }

     @Id
     @GeneratedValue(strategy = GenerationType.AUTO, generator = "book_id")
     
     public Integer getId() {
      return id;
     }

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

     public String getTitle() {
      return title;
     }

     public void setTitle(String title) {
      this.title = title;
     }

     public Book() {
      super();
      }
     
     public Book(Integer id, String title, String author) {
      super();
      this.id = id;
      this.title = title;
      this.author = author;
      }

     @Override
     public String toString() {
      // TODO Auto-generated method stub
      return "Book: " + getId() + " Title " + getTitle() + " Author "
      + getAuthor();
     }
    }

    建立一個session bean:BookTestBean.java,并添加本地和遠程接口BookTestBeanLocal.java、BookTestBeanRemote.java

    BookTestBean.java
    import java.util.Iterator;
    import java.util.List;

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

    @Stateless
    public class BookTestBean implements BookTestBeanLocal, BookTestBeanRemote {
     @PersistenceContext
     EntityManager em;
     public static final String RemoteJNDIName =  BookTestBean.class.getSimpleName() +
     "/remote";
     public static final String LocalJNDIName =  BookTestBean.class.getSimpleName() +
     "/local";
     public void test() {
      Book book = new Book(null, "My first bean book", "Sebastian");
      em.persist(book);
      Book book2 = new Book(null, "another book", "Paul");
      em.persist(book2);
      Book book3 = new Book(null, "EJB 3 developer guide, comes soon",
      "Sebastian");
      em.persist(book3);
      System.out.println("list some books");
      List someBooks = em.createQuery("from Book b where b.author=:name")
      .setParameter("name", "Sebastian").getResultList();
      for (Iterator iter = someBooks.iterator(); iter.hasNext();)
      {
      Book element = (Book) iter.next();
      System.out.println(element);
      }
      System.out.println("List all books");
      List allBooks = em.createQuery("from Book").getResultList();
      for (Iterator iter = allBooks.iterator(); iter.hasNext();)
      {
       Book element = (Book) iter.next();
       System.out.println(element);
       }
       System.out.println("delete a book");
       em.remove(book2);
       System.out.println("List all books");
        allBooks = em.createQuery("from Book").getResultList();
       for (Iterator iter = allBooks.iterator(); iter.hasNext();)
       {
       Book element = (Book) iter.next();
       System.out.println(element);
       }
       }
    }

    BookTestBeanLocal.java

    import javax.ejb.Local;

    @Local
    public interface BookTestBeanLocal {
     public void test();
    }


    BookTestBeanRemote.java

    import javax.ejb.Remote;

    @Remote
    public interface BookTestBeanRemote {
     public void test();
    }


    在%JBOSS_HOME%\server\default\deploy下新建文件EJB-DS.XML,相應的數據庫寫法,可在%JBOSS_HOME%\docs\examples\jca中找到。

    EJB-DS.XML
    <?xml version="1.0" encoding="UTF-8"?>
    <datasources>
      <local-tx-datasource>
        <jndi-name>ejb3Example</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/mysql</connection-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <user-name>xx</user-name>
        <password>xx</password>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
       <metadata>
           <type-mapping>mySQL</type-mapping>
        </metadata>
      </local-tx-datasource>
    </datasources>



    這是所用到的包。
    在JBOSS中部署成jar,查看是否部署成功。

    編寫測試客戶端TestClient.java,并在META-INF下添加jndi.properies。

    TestClient.java

    import java.util.Properties;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;

    public class TestClient.java{

     /**
      * @param args
      */
     public static void main(String[] args) {

      Context context;
      try
      {
        context = new InitialContext();
        BookTestBeanRemote beanRemote = (BookTestBeanRemote) context.lookup(BookTestBean.RemoteJNDIName);
       beanRemote.test();
      } catch (NamingException e)
      {
       e.printStackTrace();
       throw new RuntimeException(e);
      }
     }
    }

    jndi.properies
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    java.naming.provider.url=localhost:1099

    此時客戶端測試只需要一個J2EE包和jbossall-client.jar便可。如果客戶端與服務器端的包有沖突或版本不同,就會有stream classdesc serialVersionUID = 4582256576523491346, local class serialVersionUID = 3844706474734439975這樣的序列化出錯。

    最后運行客戶端測試。

    posted on 2008-03-13 12:35 lzj520 閱讀(531) 評論(0)  編輯  收藏 所屬分類: 個人學習日記EJB
    主站蜘蛛池模板: 亚洲乱亚洲乱妇24p| 全黄大全大色全免费大片| 亚洲日韩一中文字暮| 精品无码国产污污污免费网站| 欧美大尺寸SUV免费| 在线A亚洲老鸭窝天堂| 亚洲人色大成年网站在线观看| 亚洲av成人中文无码专区| A级毛片成人网站免费看| 免费观看黄网站在线播放| 亚洲午夜久久久精品电影院| 免费观看无遮挡www的小视频| 在线观看亚洲精品福利片| 91av免费在线视频| 日本不卡高清中文字幕免费| 久久亚洲私人国产精品| 四虎国产精品成人免费久久| 久九九精品免费视频| 亚洲AV无码一区二区乱子伦| 亚洲AV女人18毛片水真多| 国产yw855.c免费视频| 国产精品亚洲四区在线观看| 色www永久免费网站| 亚洲国产精品婷婷久久| 一区二区三区视频免费| 亚洲一区精品无码| 日韩一级片免费观看| 亚洲午夜久久久影院伊人| 免费无码成人AV在线播放不卡 | 一区二区亚洲精品精华液 | 午夜免费啪视频在线观看| 亚洲AV无码乱码在线观看牲色 | 无码乱人伦一区二区亚洲| 成人国产精品免费视频| 国产18禁黄网站免费观看| 国产精品小视频免费无限app| 亚洲人成亚洲精品| 日韩精品视频免费观看| 久久久WWW免费人成精品| 久久亚洲精品成人AV| 国产一级做a爱免费视频|