zoukankan      html  css  js  c++  java
  • 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 目录下,并将文件内容修改为:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!-- $Id: mysql-ds.xml 41017 2006-02-07 14:26:14Z acoliver $ -->
    <!--  Datasource config for MySQL using 3.0.9 available from:
    http://www.mysql.com/downloads/api-jdbc-stable.html
    -->
    
    <datasources>
      <local-tx-datasource>
        <jndi-name>MySqlDS</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/ejb</connection-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <user-name>root</user-name>
        <password>0000</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>
    

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

    2. 配置persistence.xml

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

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


    至此数据库配置完毕。


    二、开发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.*;
    
    @Remote
    public 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.*;
    @Stateless
    public 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已经开发完成。

  • 相关阅读:
    一篇好文,以在迷茫时阅读
    [转]EeeBox 安裝 Debian 後驅動 Wireless 筆記
    SVN内外网版本库同步手册
    Android小试牛刀之1——对话框应用和SharedPeferences存储
    关于Lucene.net 2.9.2.2 中删除索引的若干问题
    提高SQL SERVER并发能力
    Entity Framework 4 Poco开发之旅 part 2
    在linux下安装dropbox
    Windows平台高性能站点手册
    利用java反射原理写了一个简单赋值和取值通用类【改】
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3192130.html
Copyright © 2011-2022 走看看