JBoss7部署EJB连接MySQL

栏目: Java · 发布时间: 8年前

内容简介:JBoss7部署EJB连接MySQL

该文章记录了在原有SmartHome项目基础上加入 MySql 数据库、配置数据源、添加实体类和配置文件、添加调用方法等,并成功使用客户端程序连接WebService,远程调用EJB连接数据库获取到数据。

开发环境:Win7,jdk1.7,JBoss AS7.1.1Final,MySql 5.6,MyEclipse 10。

一、MySQL

建表等,此处略去。(注意连接使用remote用户,不能使用localhost用户)

二、在JBoss7中配置MySQL数据源

在JBoss中配置数据库的连接需要两个步骤:

1. 安装JDBC的驱动

首先进入JBoss安装目录,即%JBOSS_HOME%下,进入modules/com/,新建mysql文件夹,进入,建立main文件夹。在main目录下,加入如下两个文件:

• JBOSS_HOME/modules/com/mysql/main/mysql-connector-java-5.1.17-bin.jar• JBOSS_HOME/modules/com/mysql/main/module.xml

mysql-connector-java-5.1.17-bin.jar 是JDBC驱动,下载链接:

http://dev.mysql.com/downloads/connector/j/

module.xml 文件,记录了添加模块的相关配置,代码如下。其中module节点的name就是建立的文件夹路径,resources表示mysql驱动的路径。

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
	<resources>
		<resource-root path="mysql-connector-java-5.1.37-bin.jar"/>
	</resources>
	<dependencies>
		<module name="javax.api"/>
		<module name="javax.transaction.api"/>
		<module name="javax.servlet.api" optional="true"/>
	</dependencies>
</module>

2. 在配置中加入数据源

修改/JBOSS_HOME/standalone/configuration目录下的standalone.xml文件,找到datasources子系统,修改配置如下,其中jndi-name表示数据源名称:

<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
   <datasource enabled="true" jndi-name="java:/MySqlDS" jta="true" pool-name="MySqlDS_Pool" use-ccm="true" use-java-context="true">
    <connection-url>jdbc:mysql://115.xxx.xxx.xxx:3306/smarthome1</connection-url>
    <driver>mysql</driver>
    <pool/>
    <security>
      <user-name>admin</user-name>
      <password>123456</password>
    </security>
    <statement/>
    <timeout>
      <idle-timeout-minutes>0</idle-timeout-minutes>
      <query-timeout>600</query-timeout>
    </timeout>
 </datasource>
  <drivers>
    <driver module="com.mysql" name="mysql">
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
    </driver>                   
  </drivers>
 </datasources>
</subsystem>

找到jpa子系统,修改配置如下,注意datasource与上面jndi名称一致:

<subsystem xmlns="urn:jboss:domain:jpa:1.0">
     <jpa default-datasource="java:/MySqlDS"/>
</subsystem>

若以上配置成功,则在JBoss7不部署任何EJB的情况下启动不会报错,查看JBOSS_HOME/modules/com/mysql/main/路径,会发现生成了mysql-connector-java-5.1.17-bin.jar.index文件,表示该模块添加成功。

三、编写Bean实体及其配置文件、添加调用方法

Bean实体(注意不要自动生成serial version ID,否则会报错):

package smartHome.po;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity  //表明这是一个实体Bean
@Table (name = "data" ) //和数据库表data 建立映射
public class Data implements Serializable{
	@Id // 表明是该实体的id
	@GeneratedValue(strategy = GenerationType. AUTO ) //id生成策略
	@Column(name = "id" )//对应data表id字段
	private Integer id; // 数据编号
	@Column(name = "uid" ) // 对应data表uid字段
	private String uid; // 用户ID
	@Column(name = "room" ) // 对应data表room字段
	private String room; // 房间名称:客厅、卧室
	@Column(name = "type" ) // 对应data表type字段
	private String type; // 数据类型:温度temp、湿度humd、光照度light、报警alarm
	@Column(name = "value" ) // 对应data表value字段
	private String value; // 数据值
	//setter和getter方法省略
}

在Session接口和ServiceSession类中增加调用数据库的方法:

@PersistenceContext(unitName = "Data" )
private EntityManager em;
// 根据用户ID和房间ID获取数据库数据
@SuppressWarnings("unchecked")
public ResultMap getDataByUIDandRoomID(String room) {
	ResultMap resultMap = new ResultMap();
	String status = null; // 结果状态:success,fail,overtime,error
	String description = null; // 结果描述,fail时描述失败原因
	HashMap<String, Object> resultData=new HashMap<String, Object>();
	System.out.println("查询开始...");
	List<Data> list = em.createQuery( "FROM Data ").getResultList();
	if (list != null) {
		status="success";
		Iterator<Data> it = list.iterator();
		while (it.hasNext()) {
			Data data = it.next();
			if(data.getUid().equals(user.getID()) && data.getRoom().equals(room)){
				resultData.put(data.getType(), data.getValue());
				System.out.println("数据类型:" + data.getType());
				System.out.println("数据值:" + data.getValue()); 
			}			   
		}
	}
	else{
		status="fail";
		description="未找到该用户所在房间信息";
	}
	System.out.println("查询完毕...." );
	resultMap.setStatus(status);
	resultMap.setDescription(description);
	resultMap.setResultData(resultData);
	return resultMap;
}

在工程的META-INF目录下加入persistence.xml文件,该文件会参考使用的datasource来匹配实体与数据库,代码如下:(并注意将工程打包成jar时添加该文件)

<?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">
	<!-- Name属性用于定义持久化单元的名字 (name必选,空值也合法) -->
	<persistence-unit name="Data" transaction-type="JTA">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
			<!-- Jta-data-source 用于指定持久化提供商使用的JTA数据源的全局JNDI名称(可选) -->
			<jta-data-source>java:/MySqlDS</jta-data-source>
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
		</properties>
	</persistence-unit>
</persistence>

客户端连接EJB方法不变,调用方法返回结果的相关代码此处略去。


以上所述就是小编给大家介绍的《JBoss7部署EJB连接MySQL》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Little Schemer

The Little Schemer

[美] Daniel P. Friedman、[美] Matthias Felleisen / 卢俊祥 / 电子工业出版社 / 2017-7 / 65.00

《The Little Schemer:递归与函数式的奥妙》是一本久负盛名的经典之作,两位作者Daniel P. Friedman、Matthias Felleisen在程序语言界名声显赫。《The Little Schemer:递归与函数式的奥妙》介绍了Scheme的基本结构及其应用、Scheme的五法十诫、Continuation-Passing-Style、Partial Function、......一起来看看 《The Little Schemer》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具