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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Agile Web Development with Rails 4

Agile Web Development with Rails 4

Sam Ruby、Dave Thomas、David Heinemeier Hansson / Pragmatic Bookshelf / 2013-10-11 / USD 43.95

Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly. You concentrate on creating the application, and Rails takes care of the details. Tens of thousands of deve......一起来看看 《Agile Web Development with Rails 4》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

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

HEX HSV 互换工具