<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 閱讀(524) 評論(0)  編輯  收藏 所屬分類: 個人學習日記EJB
    主站蜘蛛池模板: 久久国产高潮流白浆免费观看| 香蕉视频在线免费看| 91免费国产在线观看| 亚洲天堂福利视频| 18禁止看的免费污网站| 久久亚洲AV成人无码| 亚洲成人免费在线| 67pao强力打造67194在线午夜亚洲| 日本亚洲欧洲免费天堂午夜看片女人员| 国产亚洲婷婷香蕉久久精品| a级毛片免费高清毛片视频| 国产亚洲av片在线观看播放| 男的把j放进女人下面视频免费| 亚洲五月六月丁香激情| 亚欧人成精品免费观看| 亚洲jjzzjjzz在线观看| 午夜免费福利在线| 又硬又粗又长又爽免费看 | 亚洲婷婷在线视频| 在线观看免费人成视频色| 亚洲日本在线电影| 亚洲国产精品狼友中文久久久| 在线看片免费人成视频福利| 亚洲国产老鸭窝一区二区三区 | 亚洲 日韩 色 图网站| 日本免费v片一二三区| 中文字幕永久免费| 亚洲同性男gay网站在线观看| 女人18一级毛片免费观看| 亚洲黄片手机免费观看| 久久精品国产亚洲精品2020| 日韩高清在线免费观看| 久青草视频97国内免费影视| 亚洲小说区图片区| 国产91精品一区二区麻豆亚洲| 一区二区三区观看免费中文视频在线播放 | 3d成人免费动漫在线观看| 亚洲精品女同中文字幕| 亚洲国产精品无码专区在线观看| 97热久久免费频精品99| 久久国产精品免费一区二区三区|