JBoss开发Bean并不困难,而对于不知道的人来说,数据库配置才是比较棘手的问题。现在我们就来一步一步开发一个EJB3 + MySql的Bean。
一、MySql数据库的配置
1. 配置数据源
在 %JBOSS_HOME%/docs/examples/jca 目录下找到一个名叫 "mysql-db.xml" 的文件,这个是官方为我们写好的针对mysql的数据源配置文件,我们改改它就行了。
将 mysql-db.xml 复制到 /server/default/deploy 目录下,并将文件内容修改为:
<user-name>是你的mysql数据库用户名,同理<password>是连接密码。MySqlDS jdbc:mysql://localhost:3306/ejb com.mysql.jdbc.Driver root 0000 org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter mySQL
2. 配置persistence.xml
persistence.xml 是 Java Persistence 规范要求我们定义的一个部署描述文件,作用是配置一些基本信息,如EntityManager服务的名称。我们在项目目录的 METAINF/ 目录下创建这个文件:
java:/MySqlDS
至此数据库配置完毕。
二、开发Bean
1. 开发Entity Bean
我们创建一个名为 User 的实体Bean, 用来保存一个用户的基本信息,如用户名,密码。
package dev.entity;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "DB_USER")public class User implements Serializable { @Id @Column(name = "C_ID") private int id; @Column(name = "C_NAME") private String name; @Column(name = "C_PASSWORD") private String pwd; //get() and set()}
然后编写以下语句创建数据表 DB_USER:
create table DB_USER(C_ID int key,C_NAME varchar(40),C_PASSWORD varchar(40));
2. 开发Session Bean
我们的Session Bean将包括2个功用:一是创建并持久化一个User类,二是从数据库中取回一个User对象。
首先创建远程接口 UserBeanRemote :
package dev.bean;import javax.ejb.Remote;import dev.entity.*;@Remotepublic interface UserBeanRemote { void createUser(User user); //创建User User getUser(int id); //查询并获取User}然后创建会话Bean : UserBean
package dev.bean;import javax.ejb.Stateless;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import dev.entity.*;@Statelesspublic class UserBean implements UserBeanRemote { @PersistenceContext(unitName = "entity") private EntityManager manager; public void createUser(User user) { manager.persist(user); } public User getUser(int id) { return manager.find(User.class, id); }}至此 Bean开发完毕。
三、部署 EJB
Eclipse中,在项目名上右击,选择 Export. 在弹出的向导中选择 EJB JAR file. 然后按照提示即可完成部署。
四、编写测试代码
public class Client { public static void main(String[] args) { try { Context context = initContext(); UserBeanRemote ubr = (UserBeanRemote)context.lookup("UserBean/remote"); User user = new User(); user.setId(4); user.setName("bruce lee"); user.setPwd("123456"); ubr.createUser(user); /*User user = (User)ubr.getUser(2); System.out.println(user.getName());*/ System.out.println("success!"); } catch (Exception ex) { ex.printStackTrace(); } } /* * 这一部分是写死的 * 固定写法 */ public static Context initContext() throws javax.naming.NamingException { Properties prop = new Properties(); prop.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory"); prop.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces"); prop.put(Context.PROVIDER_URL, "jnp://localhost:1099"); return new javax.naming.InitialContext(prop); }}至此一个简单的EJB3已经开发完成。