原创,转载请标明源 http://asyty.iteye.com/blog/1249495
随便贴个入门示例,贴贴代码说明一下,个人觉得网上的例子都稍显简洁,虽然我这个也不复杂,
建议搜索网上其他简单例子互相配合参考下。例如 http://blog.chinaunix.net/space.php?uid=20426042&do=blog&id=1681669
1 eclipse新建ejb项目
File --> new Project --> EJB Project
数据库中建两张表 t_users, t_roles,即用户表和权限表,字段和entity bean(entitybean在后面)里定义要一致
在src-->META-INF文件夹下新建mysql-ds.xml,配置数据库连接
<datasources>
<local-tx-datasource>
<jndi-name>ejbDatasource</jndi-name>
<connection-url>
jdbc:mysql://localhost:3306/test
</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password></password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
</exception-sorter-class-name>
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker
</valid-connection-checker-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
新建persistence.xml,使用Hibernate的持久化单元,也就是要需要持久化的内容,即通过JNDI指定上面定义的数据库,可以配置多个持久化单元
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
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_2_0.xsd">
<persistence-unit name="test">
<jta-data-source>java:/ejbDatasource</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
定义entity bean,主要是观察定义表对应的字段的annotation @id @GeneratedValue @NotNull @Colum @ManyToOne等等
Role.java
@Entity
@Table(name = "T_ROLES")
public class Role implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY) //mysql支持自增ID,uuid等类型的id
private Integer id;
@NotNull
@Column(name = "ROLE_NAME", length= 10)
private String roleName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
}
Subscriber.java
@Entity
@Table(name = "T_USERS")
public class Subscriber implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "UUID", length = 36)
private String uuid = UUID.randomUUID().toString();
@NotNull
@Length(min = 2, max = 32)
@Column(name = "user_name", unique = true) //uuid
private String userName;
@NotNull
@Length(min = 6, max = 32)
@Column(name = "user_password")
private String password;
@Column(name = "user_email", length = 50)
private String email;
@Column(name = "user_reg_time")
@Temporal(value =TemporalType.TIMESTAMP)
private Date regTime = new Date();
@NotNull
@ManyToOne(targetEntity=Role.class) //默认lazy=false 也就是Role会被同时取出
@JoinColumn(name="role_id", referencedColumnName="id")
private Role role;
public Subscriber() {
super();
}
public String getUuid() {
return uuid;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setRole(Role role) {
this.role = role;
}
public Role getRole() {
return role;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public void setRegTime(Date regTime) {
this.regTime = regTime;
}
public Date getRegTime() {
return regTime;
}
}
这样,entity bean和数据库连接就定义好了
<---------------以下部分是 session bean-------------->
如果使用DAO访问数据库的话,就可以定义dao,service和action,本例中直接继承Dao模板,Dao模板中已定义增删改查等功能,可google下DAO模板。DAO,service相当于session bean,这里只写一下User的部分,role部分类似
SubscriberDao.java
@Local //@local @remote,表示这个ejb是远程调用还是本地调用
public interface SubscriberDao extends DAO<Subscriber>{
/**
* 确定是否可以登录
*/
public boolean checkUser(String username, String password);
}
SubscriberDaoImpl.java
@Stateless
public class SubscriberDaoImpl extends DaoSupport<Subscriber> implements SubscriberDao {
@Override
public boolean checkUser(String username, String password) {
long count = (Long)getEntityManager().createQuery("select count(o) from SysUser o where o.userName=?1 and o.password=?2")
.setParameter(1, username).setParameter(2, password).getSingleResult();
return count>0;
}
}
SubscriberService.java
@Local
public interface SubscriberService {
/**
* 增删改查
* @param user
*/
public void add(Subscriber user);
public void delete(String userId);
public void update(Subscriber user);
public Subscriber get(String userId);
public List<Subscriber> getAll();
public boolean checkUser(String username, String password);
}
SubscriberServiceImpl.java
@Stateless
public class SubscriberServiceImpl implements Serializable, SubscriberService {
private static final long serialVersionUID = 1L;
@EJB
private SubscriberDao subscriberDao;
@Override
public boolean checkUser(String username, String password) {
return subscriberDao.checkUser(username, password);
}
@Override
public void add(Subscriber sysUser) {
subscriberDao.save(sysUser);
}
@Override
public void delete(String userId) {
subscriberDao.delete(userId);
}
@Override
public void update(Subscriber user) {
subscriberDao.update(user);
}
@Override
public Subscriber get(String userId) {
return subscriberDao.find(userId);
}
@Override
public List<Subscriber> getAll() {
return subscriberDao.getScrollData().getResultlist();
}
}
然后在action中就可以直接调用service了。。。。。。。通过@EJB标签引入SERVICE,和service引入DAO的方式是一样的。。。。
@Named("subscriber")
@RequestScoped
public class SubscriberAction implements Action, Serializable {
private static final long serialVersionUID = 1L;
private String uuid;
private String userName;
private String password;
private Integer roleId;
private String errorMessage;
private Subscriber user;
XXXXX其他属性
@EJB
private SubscriberService subscriberService;
@EJB
private RoleService roleService;
public SubscriberAction() {
}
public String get() {
errorMessage = null;
Subscriber user =subscriberService.get(uuid);
return SUCCESS;
}
public String delete() {
errorMessage = null;
xxxxxx操作;
subscriberService.delete(uuid);
return SUCCESS;
}
public String update() {
errorMessage = null;
xxxxxx操作;
subscriberService.update(user);
return SUCCESS;
}
public String login() {
errorMessage = null;
if(!subscriberService.checkUser(userName, password)) {
errorMessage = "帐号或密码有误";
return INPUT;
}
return SUCCESS;
}
一堆getter setter。。。。。
}
分享到:
相关推荐
在提供的压缩包文件"TestEjb3"中,可能包含了EJB3入门教程的源代码或者示例项目。这些示例通常会展示如何创建和使用EJB3组件,如状态less会话bean、实体bean和消息驱动bean。通过学习和运行这些示例,开发者可以更好...
在"ejb3.0入门经典教程-source"这个压缩包中,包含了书中各个章节的示例代码,覆盖了EJB 3.0的各个方面,例如实体Bean的创建、会话Bean的使用、事务管理、安全性设置以及JPA的持久化操作等。这些源码对于初学者来说...
通过《EJB 3.0入门图文教程》的学习,你可以系统了解并掌握这些核心概念和实践技巧,为开发高质量的企业级Java应用打下坚实基础。教程中可能包含详细的步骤演示,示例代码,以及如何在开发环境中配置和部署EJB 3.0...
本光盘是配书CD-ROM光盘,其中包括黎活明的入门教程、sourcecode、“软件”两个文件夹、ejb-3_0-fr-spec-ejbcore.pdf、 ejb-3_0-fr-spec-persistence.pdf、ejb-3_0-fr-spec-simplified.pdf。两个演示文档以及mysql-...
- `Weblogic10 + EJB3入门教程.doc`:这个文档很可能是对 WebLogic 10 和 EJB 3.0 的综合教程,包含详细的步骤和示例,帮助初学者快速入门。 - `company.jar`:这是一个包含 EJB 组件的 JAR 文件,可能包含了 `...
"EJB3入门经典配套源码"是一个针对初学者的资源包,包含了EJB3学习过程中的一些示例代码。这些源码可能涵盖以下主题: 1. **注解驱动的Bean**:EJB3的一大亮点是使用注解代替XML配置,如`@Stateless`、`@Stateful`...
### Weblogic10 + EJB3入门教程 #### 一、引言 随着企业级应用的发展,Java EE标准成为构建复杂应用系统的重要基石之一。Oracle公司的WebLogic Server作为一款高性能的应用服务器,在Java EE领域占据着重要的地位。...
这本书《EJB3.0入门经典》的精简版,作为EJB基础学习的资料,通过经典实例帮助初学者理解EJB的核心概念和技术。 1. **EJB概述** EJB是Java EE(Java Platform, Enterprise Edition)的一部分,用于处理企业级应用...
ejb-3_0-fr-spec-simplified.pdf和ejb-3_0-fr-spec-persistence.pdf是EJB3.0官方规范的简化版和持久化部分,它们详细阐述了EJB3.0的所有规范和设计决策,是深入理解EJB3.0的权威资料。 通过阅读《ejb3.0入门经典》...
这部分提供了具体的编程示例,帮助开发者理解如何在J2EE环境中使用EJB进行开发,可能包括创建、部署和测试EJB的步骤,以及与Servlet、JSP等其他Java EE组件的交互。 5. **EJBjc**: 这个文件名可能是"EJB Java ...
### 利用Myeclipse 6与JBoss开发EJB3入门实例详解 #### 一、概述 本文将详细介绍如何使用Myeclipse 6和JBoss来开发一个EJB3入门级的应用程序。通过本教程,您将学习到EJB3的基本概念、所需开发工具的配置、以及...
本资源"EJB3.0入门学习"显然是为了帮助初学者快速掌握这一关键技能。 EJB 3.0的主要特性包括: 1. **注解驱动**:EJB 3.0引入了注解(Annotations),如`@Entity`, `@Stateless`, `@PersistenceContext`, `@EJB`等...
**企业级JavaBeans(EJB)2.1详解** 企业级JavaBeans(EJB)是Java平台上用于构建可部署在企业级服务器上的组件模型。...实践中可能涵盖了上述所有概念,并通过具体的示例帮助学习者掌握EJB 2.1的关键技术和最佳实践。
**EJB3.0入门与进阶** Enterprise JavaBeans(EJB)是Java平台上用于构建企业级应用的组件模型,EJB3.0是其第三个主要版本,它在设计上进行了许多重大改进,使得开发更加简化,提高了生产力,并且降低了学习曲线。...
通过阅读《ejb3.0入门经典》并实践其中的代码示例,开发者能够快速掌握EJB 3.0的核心概念和编程模型,从而提升在企业级Java开发中的技能。这本书将帮助你了解如何利用EJB 3.0的强大功能来构建可扩展、可维护的企业级...
**EJB 3.0 入门文章** Enterprise JavaBeans(EJB)是Java平台企业版(Java EE)的一部分,用于构建可扩展、安全且事务处理的分布式应用程序。EJB 3.0 是一个重要的里程碑,它显著简化了EJB规范,使其更易于理解和...