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); //创建UserUser 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已经开发完成。

JBoss + EJB3 + MySql : 开发第一个EJB相关推荐

  1. JBOSS+EJB3之Entity 开发实例

    我用的是 mysql 数据库, EJB3.0 相对于2.0 变化蛮大的,真的是迫于 Spring+Hibernate 的逼式,ejb 3.0 已经出现几年了,自从她轻装上阵,也不知道现在的应用情况如何 ...

  2. EJB3.0学习笔记---第一个EJB程序:

    第一个EJB程序: 开发服务端程序: 1.新建一个EJB project:EJBTest_01 2.在src下建包:com.credream.ejb 3.写接口:FirstEjb.java   pac ...

  3. EJB3.0学习笔记--第一个EJB程序:

    第一个EJB程序: 开发服务端程序: 1.新建一个EJB project:EJBTest_01 2.在src下建包:com.credream.ejb 3.写接口:FirstEjb.java   pac ...

  4. Eclipse+JBoss+MySQL开发环境设置全攻略

    J2EE是很好的.作为开发环境,如果采用经典配置:JBuilder+Weblogic+Oracle,自是得心应手,但价格是惊人的.此配置主要是针对大型或超大型应用,硬件要求也很高,针对国内以中小型应用 ...

  5. Jboss EJB3.0实例教程

    Jboss EJB3.0实例教程 第一章 前言............................................................................. ...

  6. Jboss EJB3.0 实例教程

    第一章 前言.............................................................................................. ...

  7. EJB3.0开发环境的搭建

    EJB Container的介绍 SUN公司正式推出了EJB的规范之后,在众多的公司和开发者中引起了非常大的反响.标志着用Java开发企业级应用系统将变的非常easy.很多公司都已经推出了或正打算EJ ...

  8. php mysql 开发成本_Java凭什么比PHP+MYSQL开发的B2B软件值钱

    其实, PHP + MYSQL 不值钱不仅仅局限于B2B软件,而是整体上PHP + MYSQL开发的软件都不如java开发的软件值钱.为什么PHP + MYSQL 的OA为什么不值钱呢?首先得明白ph ...

  9. WildFly如何编写一个EJB远程客户端

    目录 创建EJB服务器项目 配置服务器依赖项(WildFly 18和更新版本) 部署EJB服务器项目 创建EJB客户端项目 配置客户端依赖项(WildFly 18及更新版本) 在EJB客户端项目中配置 ...

最新文章

  1. chrome java插件_selenium启动Chrome配置参数问题
  2. 我把帮带份饭的信息错发给导师后.......
  3. java 空格乱码_java 中文乱码以及空格乱码解决方案总结
  4. JEECG 3.7跨时代重构精华版发布,企业级JAVA快速开发平台
  5. 离群点(oulier)挖掘详解
  6. matlab2012生成dll,64位win7下vc2010如何调用matlab2012a中生成的dll文件
  7. django内置服务器
  8. python写传奇脚本,Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
  9. 关于对知识的系统建立和站在更高层次进行理解的必要性
  10. python类:面向对象、继承、slot、多重继承
  11. FreeRTOS的HOOK,以及(23)FreeRTOS 空闲任务分析
  12. 使用 Ajax 上传文件
  13. realme刷机鸿蒙教程,realme手机全机型解锁bootloader教程,支持一键刷机root权限
  14. Malthus模型预测人口增长
  15. 卡内基梅隆大学计算机专业介绍,美国卡内基梅隆大学计算机专业介绍
  16. 蓝奏云 php 协议,蓝奏云网盘最新协议完整版附一套网络验证
  17. 计算机一级考试内容有哪些?
  18. ALTERA CPLD离线烧写方案设计(MCU模拟JTAG)
  19. linux安装应用程序dbd,Linux下安装DBI和DBD
  20. UCOS-II优先级调度算法之详解OSPrioHighRdy=(INT 8U)((y<<3)+OSUnMapTbl[OSRdyTbl[y]]);

热门文章

  1. antd upload手动上传_SpringBoot 如何上传大文件?
  2. python输入y继续运行_Python二三事 - 接触Python(x,y)
  3. Android怎么禁用底部键,在三分钟内完全禁用并隐藏Android设备底部的虚拟按钮(适用于测试)...
  4. 计算机软件著作权登记怎么填写,计算机软件著作权登记申请表填写说明
  5. input位置_3分钟短文 | PHP 数组任意位置插入新元素,你是怎么处理的?
  6. mysql+读的负载均衡_MySQL Proxy快速实现读写分离以及负载均衡
  7. python读压缩文件内容_使用Python读写及压缩和解压缩文件的示例
  8. Win10家庭版之Docker ToolBox,Win10家庭版升级专业版
  9. 5开发 时间格式化_2020年,前端开发者必备的10个VS Code扩展插件
  10. pyspider all 只启动了_Python 爬虫:Pyspider 安装与测试