<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",則不需要人工建立數(shù)據(jù)庫表,會自動幫你建立。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接口實現(xiàn)序列化,有利于使用緩存。如果有提示@Table(name="book")
    出錯,找不到數(shù)據(jù)庫表,不用管它,最后系統(tǒng)會自動建立數(shù)據(jù)庫表,當然,自己手動建立一個也可。

    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,相應的數(shù)據(jù)庫寫法,可在%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 閱讀(524) 評論(0)  編輯  收藏 所屬分類: 個人學習日記EJB
    主站蜘蛛池模板: 国产精品极品美女自在线观看免费| 免费观看久久精彩视频| 久久久久亚洲精品男人的天堂| 国产一区二区免费| 亚洲娇小性色xxxx| 亚洲欧洲中文日韩久久AV乱码| 无码人妻一区二区三区免费看| 亚洲欧洲AV无码专区| 亚洲综合图色40p| 青苹果乐园免费高清在线| 国产成人无码免费网站| 亚洲免费视频播放| 亚洲午夜激情视频| 成年人网站免费视频| 亚欧洲精品在线视频免费观看 | 亚洲高清中文字幕综合网| 国产精品国产免费无码专区不卡| 日韩电影免费在线观看网站 | 五月天婷婷免费视频| 亚洲美女色在线欧洲美女| 亚洲VA综合VA国产产VA中| 97碰公开在线观看免费视频| 一区二区三区免费在线视频 | 五月天网站亚洲小说| 又爽又黄无遮挡高清免费视频| 最近最新高清免费中文字幕| 国产成人亚洲综合在线| 亚洲精品美女在线观看播放| 国产亚洲精aa成人网站| 女人被免费视频网站| 免费A级毛片无码视频| 又粗又长又爽又长黄免费视频| 亚洲人成人网毛片在线播放| 久久精品国产精品亚洲色婷婷| 亚洲VA综合VA国产产VA中| 午夜私人影院免费体验区| 最近免费中文字幕大全免费版视频 | 最近中文字幕免费完整| 国产精品九九久久免费视频| 亚洲av日韩专区在线观看| 亚洲另类自拍丝袜第1页|