- 浏览: 939088 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (453)
- Windows phone 7 (0)
- Andriod (47)
- iPhone (1)
- Web (30)
- J2EE (34)
- stucts 2学习笔记 (34)
- 开发项目 (3)
- spring学习笔记 (24)
- EJB学习笔记 (6)
- Hibernate学习笔记 (15)
- JPA学习笔记 (8)
- Jsp (11)
- ajax (7)
- 异常收集模块 (1)
- jquery (2)
- phoneGap (2)
- jquery Mobile (0)
- java面试总结 (5)
- Object-C (0)
- javascript (6)
- Eclipse (5)
- 支付集成 (2)
- Weblogic (1)
- Dubbox (5)
- Redis (10)
- linux (21)
- Codis (2)
- React Native (0)
- Mysql (6)
- Docker (3)
- 自动化部署 (1)
- 项目Bug管理平台 (2)
- 负载均衡 (1)
- Mycat (2)
- Java基础知识 (16)
- 数据库 (7)
- Maven (17)
- Kafka (21)
- logs (2)
- 大并发 (2)
- 消息中间件 (2)
- 分布式锁 (3)
- 算法 (4)
- 数字证书原理,公钥私钥 (0)
- 数字证书原理 (1)
- 公钥私钥 (1)
- zookeeper (4)
- Hbase (9)
- Hadoop (2)
- storm (2)
- 通信协议 (1)
- Hive (3)
- git (1)
- JVM (2)
- 大数据相关算法 (1)
- idea (5)
- 将博客搬至CSDN (1)
- 设计模式 (2)
- 表达式 (1)
- 代码审查工具 (0)
- 开源项目 (1)
- PyCharm (0)
- python (6)
- Kubernetes (1)
- swagger (1)
- Maven中mirrors和repository的关系 (0)
- RabbitMQ (3)
- redisson (1)
- k8s (2)
- Mac (1)
最新评论
-
misisipi101:
假设库已经分为32个,那么要扩展到64个,怎样做呢
订单分库分表实践总结以及关键步骤 -
mfkxk298:
简单明了的例子,解决了问题,谢谢啦!
关于ListView中notifyDataSetChanged()刷新数据不更新原因 -
whbwang:
" target="_blank" ...
java web开发 高并发处理 -
suguoqian:
...
java web开发 高并发处理 -
xiangnanyujing:
Dubbox+Redis3.0+Spring+Hibernate+zookeeper实现消息推送核心搭建
下面接着总结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&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>
发表评论
-
重庆APP开发 重庆Android 重庆Ios 爬虫科技 重庆爬虫科技
2014-10-06 12:03 9<!--[if gte mso 9]><x ... -
Ejb消息驱动bean使用
2012-10-09 12:11 1120接下来对Ejb中的消息驱动bean做一个简单使用总结: 首先 ... -
jboss数据源配置
2012-10-07 23:45 1021在JBoss安装目录\jboss-4.2.3.GA\docs\ ... -
一个Ejb调用另一个Ejb
2012-10-07 23:40 1067一个Ejb调用另一个Ejb有两种方法: 第一是同个JNDI ... -
EJB使用build.xml来打包编译
2012-10-06 23:10 1076模板: <?xml version="1.0 ... -
EJB3.x第一个Helloworld
2012-10-06 22:11 4940下面我们一起来学习Ejb ...
相关推荐
本实验以"广东工业大学Java EE Web编程技术课程"为背景,通过集成开发环境Eclipse和应用服务器JBoss,来实践会话Bean的创建和使用。 首先,Eclipse是一款广泛使用的Java IDE,它提供了丰富的工具和插件,支持Java ...
在本系统中,JPA被用来处理学生信息的增删改查操作,通过实体类和注解定义数据模型,JPA会自动完成与数据库的交互。 具体来说,JPA通过实体类来表示数据库中的表,实体类的属性对应表的字段。通过@Entity注解标记...
在Java Web应用中,Bean通常用来存储用户会话中的数据或者作为模型层的实体类,便于在Servlet、JSP之间传递数据。 **DAO(Data Access Object)**: DAO模式是一种设计模式,用于在业务逻辑和数据访问层之间创建一...
在这个BBS系统中,JAVA bean被用来处理用户的请求,比如验证用户输入、管理会话状态以及执行业务逻辑。例如,一个用户登录的JAVA bean可能会包含检查用户名和密码的函数,确保数据的正确性。 Java Servlet则是在...
8. 使用Bean:在这个阶段,Bean已经实例化,并且已经可以使用。 9. 销毁:在这个阶段,Bean已经实例化,并且已经销毁。 在整个生命周期中,Spring提供了多种方式来实现Bean的初始化,例如使用init-method参数、...
EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,主要...实体Bean处理数据存储,会话Bean封装业务逻辑,消息驱动Bean则用于异步处理。理解并熟练掌握这些概念对于开发高效的企业级Java应用至关重要。
BMP实体Bean通常使用`@Stateless`或`@Stateful`注解,以定义其会话行为。 **CMP(Container Managed Persistence)**: 相比之下,CMP是由容器(应用服务器)管理的,开发者无需关心底层的数据库交互细节。容器负责...
最后,为了能够使Spring容器管理和注入这些配置好的数据源,需要在Spring的配置文件中使用相应的Bean标签注册每个数据源和SessionFactory的Bean,并通过依赖注入的方式将数据源注入到相应的SessionFactory中。...
无状态会话Bean适用于那些不需持久化用户会话数据的场景,而有状态会话Bean则允许维护与特定客户端关联的数据。在EJB 3中,开发者可以使用注解(@Stateless或@Stateful)轻松地创建和管理这两种类型的Bean。 Entity...
在DataSourceConfig类中,getDataSource方法用于创建数据源,该方法使用了DataSourceBuilder来创建数据源。DataSourceBuilder是一个工厂类,用于创建数据源,type方法用于指定数据源的类型。 会话工厂的创建 会话...
其中,实体Bean代表持久化的业务数据,会话Bean负责业务逻辑,而消息驱动Bean则用于处理JMS消息。 1. 实体Bean(Entity Beans):在EJB3中,实体Bean通常使用JPA(Java Persistence API)进行持久化,通过注解如`@...
EJB可以分为几种类型,包括无状态会话Bean、有状态会话Bean和实体Bean。在这个项目中,使用了有状态会话Bean。 【有状态会话Bean】有状态会话Bean(Stateful Session Bean,SFSB)在JavaEE中扮演着维持会话状态的...
#### 使用实体 Bean 的工作流程 ##### 创建实体 Bean - **导入数据库模式**:从现有数据库导入模式,以简化实体 Bean 的创建过程。 - **生成实体 Bean**:根据数据库表结构自动生成实体 Bean 类。 - **创建会话 ...
会话bean的主要职责是封装应用的业务逻辑,它们可以被多个客户并发访问,但每个客户拥有自己的会话bean实例,确保数据的一致性和安全性。会话bean分为无状态会话bean(Stateless Session Bean)和有状态会话bean...
开发者只需在实体Bean上添加相应的注解,如`@Stateless`或`@Stateful`,就可以定义无状态或有状态会话Bean。同时,通过`@Remote`或`@Local`注解可以声明远程或本地接口,实现业务逻辑的调用。 接下来,我们关注如何...
- **PERSISTENCE.XML配置**:了解如何使用PERSISTENCE.XML文件来配置实体Bean,包括指定数据源和其他相关设置。 - **数据源配置**: - **MySQL数据源**:提供MySQL数据源的具体配置步骤。 - **SQL Server 2000数据...
在这个例子中,配置了一个名为`EricDs`的数据源,连接到本地MySQL数据库`j2ee`,并设置了相应的数据库连接信息。 - **JMS连接工厂**:JBoss默认提供了一个名为`QueueConnectionFactory`的JMS连接工厂,无需手动配置...
对于JPA实体bean,还需要persistence.xml来定义数据源和实体类。 2. **bean类**:EJB组件的实现类需要使用特定的注解,如`@Stateless`、`@Stateful`、`@Entity`或`@MessageDriven`,以表明它们的角色。同时,接口...
一个基于Struts+EJB3.0的应用通常具有三层架构:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer,由EJB3.0的会话Bean构成)和数据访问层(Data Access Layer,由实体Bean组成)。这种结构确保了...
- **会话Bean**、**实体Bean**和**消息驱动Bean**:EJB定义了三种类型的Bean,分别处理不同的业务需求,如短暂交互、持久化数据和异步通信。 6. **Java Bean 的局限性** - **过于简单**:Java Bean的设计相对基础...