`
1028826685
  • 浏览: 921072 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

使用会话Bean+实体bean+数据源

 
阅读更多

下面接着总结Ejb使用会话Bean+实体bean+数据源开发流程:

先新建一个Java项目导入\jboss-4.2.3.GA\client

第一步:配置数据源
在\jboss-4.2.3.GA\docs\examples\jca目录下mssql-ds.xml(数据源配置文件)
 
配置内容如下:
<?xml version="1.0" encoding="UTF-8"?>

<!-- $Id: mysql-ds.xml 71535 2008-04-01 07:05:03Z adrian@jboss.org $ -->
<!--  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>liyongMySql</jndi-name><!--JNDI名称在persistence.xml文件中配置--->
    <connection-url>jdbc:mysql://localhost:3306/entitydatabse?useUnicode=true&amp;characterEncoding=UTF-8</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password>liyong</password>
<min-pool-size>3</min-pool-size>
    <max-pool-size>100</max-pool-size>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    <!-- should only be used on drivers after 3.22.1 with "ping" support
    <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
    -->
    <!-- sql to call when connection is created
    <new-connection-sql>some arbitrary sql</new-connection-sql>
      -->
    <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers
    <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
      -->

    <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>
然后将这个数据源配置文件copy到jboss-4.2.3.GA\server\default\deploy进行发布

第二步:
在src目录下新建META-INF再新建一个persistence.xml内容如下:
<?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">
<!-- 以transaction-type下是 事务提交类型有两种事务:第一、本地事务(在同一个数据库中完成事务)  第二、全局事务(在不同数据库中需要在同一事务中完成不同数据库的操作)-->
<persistence-unit name="person" transaction-type="JTA"><!-- EJB使用全局事务 -->
             <!---在数据源中配在的数据源JNDI名称-->
<jta-data-source>java:liyongMySql</jta-data-source>
<properties>
<!-- 显示最终执行的SQL -->
<property name="hibernate.show_sql" value="true"/>
<!-- 格式化显示的SQL -->
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>

第三步:编写实体bean  Persion.java
package com.liyong.bean;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Persion implements Serializable{

/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private String name;

public Persion(){}
public Persion(String name) {
this.name=name;
}
@Id @GeneratedValue//默认为auto
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(length=20)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Persion other = (Persion) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}

}

第四步:编写一个会话bean PersionService.java和接口IPersionService.java

接口:
public interface IPersionService {
public void save(Persion persion);
public Persion getPersion(Integer persionid);
public List<Persion> getAllPersions();
public void update(Persion persion);
public void delete(Persion persion);

}
实现类:

package com.liyong.service;

import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.liyong.bean.Persion;

@Stateless
@Remote(IPersionService.class)

public class PersionService implements IPersionService{

@PersistenceContext(unitName="person") EntityManager manager;

public void delete(Persion persion) {
manager.remove(persion);
}

@SuppressWarnings("unchecked")
public List<Persion> getAllPersions() {

return manager.createQuery("select o from Persion o").getResultList();
}

public Persion getPersion(Integer persionid) {

return manager.find(Persion.class, persionid);
}

public void save(Persion persion) {
manager.persist(persion);

}

public void update(Persion persion) {

manager.merge(persion);

}

}


第五步:编写一个单元测试PersionTest.java

package junit.test;


import java.util.List;

import javax.naming.InitialContext;
import org.junit.BeforeClass;
import org.junit.Test;

import com.liyong.bean.Persion;
import com.liyong.service.IPersionService;

public class PersionTest {

private static IPersionService persionService;

@BeforeClass
public static void setUpBeforeClass() throws Exception {
try {
InitialContext ctx = new InitialContext();
persionService = (IPersionService) ctx.lookup("PersionService/remote");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@Test
public void testSave(){
try {
Persion persion=new Persion("ly");
persionService.save(persion);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void testGetPersoin(){

System.out.println(persionService.getPersion(1).getName());
}
@Test
public void testUpdate(){
Persion persion=persionService.getPersion(1);
persion.setName("xxxx");
persionService.update(persion);
}
@Test
public void testGetAllPersions(){
List<Persion> persions=persionService.getAllPersions();
for(Persion persion:persions){
System.out.println(persion.getName());
}
}
}

对了还需要一个jndi.properties(这个可以参考前面HelloWord)

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost\:1099

我们使用build.xml来打包编译

<?xml version="1.0"?>

<!-- ======================================================================= -->
<!-- EJB3 HelloWorld build file                                                       -->
<!-- ======================================================================= -->

<project name="EjbEntityBean" default="ejbjar" basedir="..">

<property environment="env" />
<property name="app.dir" value="${basedir}\EjbEntityBean" /><!--EjbEntityBean是项目名称-->
<property name="src.dir" value="${app.dir}\src" />
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<property name="jboss.server.config" value="default" />
<property name="build.dir" value="${app.dir}\build" />
<property name="build.classes.dir" value="${build.dir}\classes" />

<!-- Build classpath -->
<path id="build.classpath">
<fileset dir="${jboss.home}\client">
<include name="*.jar" />
</fileset>
<pathelement location="${build.classes.dir}" />
</path>

<!-- =================================================================== -->
<!-- Prepares the build directory                                        -->
<!-- =================================================================== -->
<target name="prepare" depends="clean">
<mkdir dir="${build.dir}" />
<mkdir dir="${build.classes.dir}" />
</target>

<!-- =================================================================== -->
<!-- Compiles the source code                                            -->
<!-- =================================================================== -->
<target name="compile" depends="prepare" description="编绎">
<!--includes筛选哪些包下的类被编译-->
<javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" deprecation="on" optimize="off" includes="com/**">
<classpath refid="build.classpath" />
</javac>
</target>

<target name="ejbjar" depends="compile" description="创建EJB发布包">
<jar jarfile="${app.dir}\EjbEntityBean.jar">
<fileset dir="${build.classes.dir}">
<include name="com/**/*.class" />
</fileset>
<!--包含这个persistence.xml文件-->
<metainf dir="${src.dir}\META-INF"></metainf>
</jar>
</target>

<target name="deploy" depends="ejbjar">
<copy file="${app.dir}\EjbEntityBean.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy" />
</target>

<!-- =================================================================== -->
<!-- Cleans up generated stuff                                           -->
<!-- =================================================================== -->
<target name="clean">
<delete dir="${build.dir}" />
<delete file="${jboss.home}\server\${jboss.server.config}\deploy\HelloWorld.jar" />
</target>

</project>

分享到:
评论

相关推荐

    采用的是servlet+JSP+JPA的学生信息管理系统

    本系统是学生信息管理系统,主要演示JPA在实际项目中的使用,采用的是servlet+JSP+JPA.是EJB JPA 这本书里的例子。

    EJB葵花宝典(题集)

    5.5.2会话Bean中用实体操作数据库 36 5.6查询方案 40 5.6.1EJB QL 40 1.1.1.6.1 通过主键查询 - get方案 40 1.1.1.6.2 通过主键查询 - find方案 40 1.1.1.6.3 查询多条数据 41 1.1.1.6.4 命名参数查询 42 1.1....

    JBOSS使用指南

    4. JBoss 数据源的配置 5. JMS使用和设置 5.1 JMS消息的传递模型 5.2 JMS的配置 三.JMX原理和应用 1. 什么是JMX 2. JMX规范 3. 基于JBoss来写MBean 3.1 HelloWorld实例 3.2 程序代码 3.3 配置文件jboss-service.xml...

    JSP+Servlet+EJB3.0+Oracle10g火车售票系统

    合理使用有状态的会话Bean来维持服务器和客户端之间的状态;使用JNDI得到已经注册到WEB容器上的数据源,EJB的引用。 2.合理使用From表单进行隐藏信息的提交;使用分页技术将从数据库中搜索出的记录分页显示,提高...

    传智播客 EJB3.0PPT 完整版 黎明活

    02_开发第一个无状态会话bean 03_开发EJB的客户端 04_把jboss集成进eclipse 05_通过ANT提高EJB应用的开发效率 06_开发具有本地接口的无状态bean 07_开发有状态bean 08_通过注解方式注入并使用其他EJB或者服务...

    Spring in Action(第2版)中文版

    11.1.1代理会话bean(ejb2.x) 11.1.2将ejb置入springbean 11.2开发spring驱动的ejb(ejb2.x) 11.3spring和ejb3 11.3.1引入pitchfork 11.3.2从pitchfork起步 11.3.3通过注释注入资源 11.3.4使用注释声明拦截器 ...

    Spring in Action(第二版 中文高清版).part2

    11.1.1 代理会话Bean(EJB 2.x) 11.1.2 将EJB置入Spring Bean 11.2 开发Spring驱动的EJB(EJB 2.x) 11.3 Spring和EJB3 11.3.1 引入Pitchfork 11.3.2 从Pitchfork起步 11.3.3 通过注释注入资源 11.3.4 使用注释...

    Spring in Action(第二版 中文高清版).part1

    11.1.1 代理会话Bean(EJB 2.x) 11.1.2 将EJB置入Spring Bean 11.2 开发Spring驱动的EJB(EJB 2.x) 11.3 Spring和EJB3 11.3.1 引入Pitchfork 11.3.2 从Pitchfork起步 11.3.3 通过注释注入资源 11.3.4 使用注释...

    J2EE应用开发详解

    183 11.3.2 使用JNDI 186 11.4 会话Bean 191 11.4.1 会话Bean的分类 191 11.4.2 会话Bean的组成 195 11.4.3 会话Bean的生命周期 196 11.4.4 创建无状态会话Bean 197 11.4.5 创建有状态会话Bean 198 11.5 消息驱动...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    4.1.3 使用WebLogic服务器管理的 数据源 182 4.1.4 使用JBoss服务器管理的数据源 187 4.2 事务和JTA 191 4.2.1 事务的基本概念 191 4.2.2 分布式事务处理、XA规范和 2PC协议 192 4.2.3 使用JTA全局事务保证多 数据库...

    EJB3.0 实例教程 -- 切片2

    第四章会话 BEAN(SESSION BEAN).........13 4.1 STATELESS SESSION BEANS(无状态BEAN)开发........13 4.1.1 开发只存在Remote接口的无状态Session Bean 13 4.1.2 开发只存在Local接口的无状态Session Bean...16 ...

    Java数据库编程宝典2

    13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理图像和文档 14.1 大对象 14.1.1 使用Blob存储...

    Java数据库编程宝典4

    13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理图像和文档 14.1 大对象 14.1.1 使用Blob存储...

    Java数据库编程宝典1

    13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理图像和文档 14.1 大对象 14.1.1 使用Blob存储...

    Java数据库编程宝典3

    13.2.3 使用JSP Bean中的存储过程 13.2.4 ProcessNABean的作用 13.2.5 错误处理 13.2.6 使用存储过程作为输入和输出参数 13.3 小结 第14章 使用Blob和Clob管理图像和文档 14.1 大对象 14.1.1 使用Blob存储...

    EJB3.0 实例教程 -- 切片1

    第四章会话 BEAN(SESSION BEAN).........13 4.1 STATELESS SESSION BEANS(无状态BEAN)开发........13 4.1.1 开发只存在Remote接口的无状态Session Bean 13 4.1.2 开发只存在Local接口的无状态Session Bean...16 ...

    JAVA上百实例源码以及开源项目源代码

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    JAVA上百实例源码以及开源项目源代码 java开源包2

    两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将...

    JSF1.2+EJB3.0实现的一个项目实例

    ejb端 jsfejb3-ejb |-- src |-- org.qiujy.ejb3.dao 持久层DAO接口包 |-- org.qiujy.ejb3.dao.impl 持久层DAO接口实现类包(是ejb3中的会话Bean) |-- org.qiujy.ejb3.entity 实体域模型类包...

    Spring中文帮助文档

    使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多资源 14. 集成视图技术 14.1. 简介 14.2. JSP和JSTL 14.2.1. 视图解析器 14.2.2. 'Plain-old' JSPs versus ...

Global site tag (gtag.js) - Google Analytics