首页 > Java开发 > JBoss + EJB3 + MySql : 开发第一个EJB

JBoss + EJB3 + MySql : 开发第一个EJB

JBoss开发Bean并不困难,而对于不知道的人来说,数据库配置才是比较棘手的问题。现在我们就来一步一步开发一个EJB3 + MySql的Bean。

 

一、MySql数据库的配置

1. 配置数据源

在 %JBOSS_HOME%/docs/examples/jca 目录下找到一个名叫 "mysql-db.xml" 的文件,这个是官方为我们写好的针对mysql的数据源配置文件,我们改改它就行了。

将 mysql-db.xml 复制到 /server/default/deploy 目录下,并将文件内容修改为:

 

[html][/html] view plaincopyprint?

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- $Id: mysql-ds.xml 41017 2006-02-07 14:26:14Z acoliver $ -->
  3. <!--  Datasource config for MySQL using 3.0.9 available from:
  4. http://www.mysql.com/downloads/api-jdbc-stable.html
  5. -->
  6. <datasources>
  7.   <local-tx-datasource>
  8.     <jndi-name>MySqlDS</jndi-name>
  9.     <connection-url>jdbc:mysql://localhost:3306/ejb</connection-url>
  10.     <driver-class>com.mysql.jdbc.Driver</driver-class>
  11.     <user-name>root</user-name>
  12.     <password>0000</password>
  13.     <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
  14.     <metadata>
  15.        <type-mapping>mySQL</type-mapping>
  16.     </metadata>
  17.   </local-tx-datasource>
  18. </datasources>

<user-name>是你的mysql数据库用户名,同理<password>是连接密码。

 

2. 配置persistence.xml

persistence.xml 是 Java Persistence 规范要求我们定义的一个部署描述文件,作用是配置一些基本信息,如EntityManager服务的名称。我们在项目目录的 METAINF/ 目录下创建这个文件:

 

[html][/html] view plaincopyprint?

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <persistence xmlns="http://java.sun.com/xml/ns/persistence"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
  5.     http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
  6.  <!-- entity就是EntityManager服务名 -->
  7.  <persistence-unit name="entity" transaction-type="JTA">
  8.     <!-- 这里必须跟mysql-db.xml文件中的<jndi-name>一样,即MySqlDs -->
  9.     <jta-data-source>java:/MySqlDS</jta-data-source>
  10.     <!-- 以下是hibernate的相关配置,可省略 -->
  11.     <properties>
  12.              <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
  13.              <property name="hibernate.hbm2ddl.auto" value="update"/>
  14.              <property name="hibernate.connection.characterEncoding" value="UTF-8" />
  15.     </properties>
  16.  </persistence-unit>
  17. </persistence>

 

 

至此数据库配置完毕。

 

二、开发Bean

1. 开发Entity Bean

我们创建一个名为 User 的实体Bean, 用来保存一个用户的基本信息,如用户名,密码。

 

[java][/java] view plaincopyprint?

  1. package dev.entity;
  2. import java.io.Serializable;
  3. import javax.persistence.Column;
  4. import javax.persistence.Entity;
  5. import javax.persistence.Id;
  6. import javax.persistence.Table;
  7. @Entity
  8. @Table(name = "DB_USER")
  9. public class User implements Serializable {
  10.     @Id
  11.     @Column(name = "C_ID")
  12.     private int id;
  13.     @Column(name = "C_NAME")
  14.     private String name;
  15.     @Column(name = "C_PASSWORD")
  16.     private String pwd;
  17.     //get() and set()
  18. }

 

然后编写以下语句创建数据表 DB_USER:

 

[sql][/sql] view plaincopyprint?

  1. create table DB_USER(
  2. C_ID int key,
  3. C_NAME varchar(40),
  4. C_PASSWORD varchar(40)
  5. );

 

 

 

2. 开发Session Bean

我们的Session Bean将包括2个功用:一是创建并持久化一个User类,二是从数据库中取回一个User对象。

首先创建远程接口 UserBeanRemote :

 

[java][/java] view plaincopyprint?

  1. package dev.bean;
  2. import javax.ejb.Remote;
  3. import dev.entity.*;
  4. @Remote
  5. public interface UserBeanRemote {
  6.     void createUser(User user); //创建User
  7.     User getUser(int id); //查询并获取User
  8. }

然后创建会话Bean : UserBean

 

 

[java][/java] view plaincopyprint?

  1. package dev.bean;
  2. import javax.ejb.Stateless;
  3. import javax.persistence.EntityManager;
  4. import javax.persistence.PersistenceContext;
  5. import dev.entity.*;
  6. @Stateless
  7. public class UserBean implements UserBeanRemote {
  8.     @PersistenceContext(unitName = "entity")
  9.     private EntityManager manager;
  10.     public void createUser(User user) {
  11.     manager.persist(user);
  12.     }
  13.     public User getUser(int id) {
  14.     return manager.find(User.class, id);
  15.     }
  16. }

至此 Bean开发完毕。

 

 

三、部署 EJB

Eclipse中,在项目名上右击,选择 Export. 在弹出的向导中选择 EJB JAR file. 然后按照提示即可完成部署。

 

四、编写测试代码

 

[java][/java] view plaincopyprint?

  1. public class Client {
  2.     public static void main(String[] args) {
  3.     try {
  4.         Context context = initContext();
  5.         UserBeanRemote ubr = (UserBeanRemote)context.lookup("UserBean/remote");
  6.         User user = new User();
  7.         user.setId(4);
  8.         user.setName("bruce lee");
  9.         user.setPwd("123456");
  10.         ubr.createUser(user);
  11.         /*User user = (User)ubr.getUser(2);
  12.         System.out.println(user.getName());*/
  13.         System.out.println("success!");
  14.     }
  15.     catch (Exception ex) {
  16.         ex.printStackTrace();
  17.     }
  18.     }
  19.     /*
  20.      * 这一部分是写死的
  21.      * 固定写法
  22.      */
  23.     public static Context initContext() throws javax.naming.NamingException {
  24.     Properties prop = new Properties();
  25.     prop.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
  26.     prop.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
  27.     prop.put(Context.PROVIDER_URL, "jnp://localhost:1099");
  28.     return new javax.naming.InitialContext(prop);
  29.     }
  30. }

至此一个简单的EJB3已经开发完成。


本文固定链接: http://www.devba.com/index.php/archives/1749.html | 开发吧

报歉!评论已关闭.