<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
    主站蜘蛛池模板: 美美女高清毛片视频黄的一免费 | 成在线人视频免费视频| AV大片在线无码永久免费| 久久精品国产亚洲Aⅴ香蕉| 亚洲综合在线一区二区三区 | 亚洲成人黄色在线观看| 99久久免费国产精品热| 国产大片51精品免费观看| 毛片免费观看网站| 免费人成在线观看视频播放| 亚洲国产成人资源在线软件| 精品国产_亚洲人成在线| 无码国产精品一区二区免费虚拟VR | 亚洲一卡二卡三卡四卡无卡麻豆 | 人禽伦免费交视频播放| 好大好深好猛好爽视频免费| 内射干少妇亚洲69XXX| 亚洲色少妇熟女11p| 18pao国产成视频永久免费| 久久亚洲国产中v天仙www | 大地资源免费更新在线播放| 久久久无码精品亚洲日韩按摩 | 亚洲欧洲日韩国产一区二区三区| 日韩视频免费在线观看| 亚洲深深色噜噜狠狠爱网站| 特级毛片免费观看视频| 情侣视频精品免费的国产| 亚洲视频无码高清在线| 999国内精品永久免费视频| 亚洲视频在线观看免费| 亚洲免费观看视频| 亚洲国产另类久久久精品黑人 | 亚洲人成网站在线观看播放动漫| 一级毛片aaaaaa免费看| 亚洲av永久无码制服河南实里 | 国产成人免费一区二区三区| 亚洲午夜精品久久久久久app| 曰批视频免费30分钟成人| 久久亚洲AV无码精品色午夜| 特级av毛片免费观看| 四只虎免费永久观看|