- 浏览: 394729 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (325)
- 数据中台 (15)
- 设计模式 (7)
- 数据结构 (4)
- JavaScript (51)
- 网页设计与制作 (7)
- Flex (4)
- Fckeditor (7)
- Struts (12)
- Spring (19)
- Hibernate (14)
- EJB3.0 (19)
- Java EE 6 (2)
- JSP (22)
- 辅助框架 (9)
- WebService (1)
- XML (8)
- 正则表达式 (5)
- 并发(多线程) (2)
- Java网络 (10)
- 开发工具 (25)
- Oracle (15)
- MySQL (8)
- Git (4)
- SQL Server (2)
- C# (9)
- php (14)
- asp (2)
- ColdFusion (5)
- Tex (1)
- 云游戏 (1)
最新评论
-
CSDNBenbenChong:
...
SQL里desc和asc是什么意思 -
雪狐一号:
非常好 顶一个
SQL里desc和asc是什么意思 -
boyleichinasoft:
thinking...
该如何去使用设计模式呢? -
nforce_com:
写的很好,学习了!不过Student 一般情况下不会删除所有 ...
JPA多对多 -
TaoistWar:
那是FCKEditor的,详细信息只能查看官方文档,或者直接看 ...
1.fckeditor-java-2.5给上传图片添加水印
EJB3的拦截器的开步骤:
1.开发拦截器
使用@AroundInvoke注释指定拦截器方法,方法格式为:
public Object XXX(InvocationContext ctx) throws Exception
其中,方法名XXX可以任意
2.在Session Bean中加入拦截器
@Interceptors( { 拦截器一.class,拦截器二.class })
方法二:
直接在Session Bean中,编写拦截器方法(只拦截该会话):
使用@AroundInvoke注释指定拦截器方法,方法格式为:
public Object XXX(InvocationContext ctx) throws Exception
其中,方法名XXX可以任意
例子:
一。实体Bean
package com.tao.ejb3.entity; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * 管理员 * * @author TaoistWar */ @Entity @Table(name = "t_operator") @SuppressWarnings("serial") public class Operator implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column private Long id; /** 用户名 */ @Column(length = 32, unique = true, nullable = false) private String username; /** 密码 */ @Column(length = 16, nullable = false) private String password; /** 创建日期 */ @Temporal(TemporalType.TIMESTAMP) private Date createDate; /** 最后修改日期 */ @Temporal(TemporalType.TIMESTAMP) private Date lastEdit; /** 启用状态 true启用,false禁用 */ @Column(length = 2, nullable = false) private Boolean enable = true; /** 最后登录 */ @Temporal(TemporalType.TIMESTAMP) private Date lastLogin; public Long getId() { return id; } public void setId(Long id) { this.id = id; } 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 Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public Date getLastEdit() { return lastEdit; } public void setLastEdit(Date lastEdit) { this.lastEdit = lastEdit; } public Boolean getEnable() { return enable; } public void setEnable(Boolean enable) { this.enable = enable; } public Date getLastLogin() { return lastLogin; } public void setLastLogin(Date lastLogin) { this.lastLogin = lastLogin; } }
二、会话Bean
package com.tao.ejb3.service; import javax.ejb.Remote; import com.tao.ejb3.entity.Operator; @Remote public interface OperatorService { public void save(Operator operator); }
package com.tao.ejb3.service; import javax.ejb.Local; @Local public interface OperatorServiceLocal extends OperatorService { }
package com.tao.ejb3.service.bean; import javax.ejb.Stateless; import javax.interceptor.Interceptors; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import com.tao.ejb3.entity.Operator; import com.tao.ejb3.interceptor.OperatorInterceptor; import com.tao.ejb3.service.OperatorService; import com.tao.ejb3.service.OperatorServiceLocal; @Stateless @Interceptors( { OperatorInterceptor.class }) public class OperatorServiceBean implements OperatorService, OperatorServiceLocal { @PersistenceContext(unitName="ejb3_unit") EntityManager em; public void save(Operator operator) { em.persist(operator); } }
package com.tao.ejb3.service.bean; import javax.ejb.Stateless; import javax.interceptor.AroundInvoke; import javax.interceptor.InvocationContext; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import com.tao.ejb3.entity.Operator; import com.tao.ejb3.service.OperatorService; import com.tao.ejb3.service.OperatorServiceLocal; @Stateless public class OperatorServiceBeanWithInterceptor implements OperatorService, OperatorServiceLocal { @PersistenceContext(unitName = "ejb3_unit") EntityManager em; public void save(Operator operator) { em.persist(operator); } /** * @AroundInvoke 注释指定了要用作拦截器的方法.用@AroundInvoke注释指定的方法必须遵守以下格式: * public Object XXX(InvocationContext ctx) throws Exception * XXX代表方法名可以任意. */ @AroundInvoke public Object log(InvocationContext ctx) throws Exception { long l1 = System.currentTimeMillis(); try { if (ctx.getMethod().getName().equals("save")) { System.out.println("添加管理员"); } return ctx.proceed(); } catch (Exception e) { e.printStackTrace(); return null; } finally { l1 = System.currentTimeMillis() - l1; System.out.println("执行时间:" + l1); } } }
三、拦截器
package com.tao.ejb3.interceptor; import javax.interceptor.AroundInvoke; import javax.interceptor.InvocationContext; public class OperatorInterceptor { /** * @AroundInvoke 注释指定了要用作拦截器的方法.用@AroundInvoke注释指定的方法必须遵守以下格式: public Object * XXX(InvocationContext ctx) throws Exception XXX代表方法名可以任意. */ @AroundInvoke public Object log(InvocationContext ctx) throws Exception { long l1 = System.currentTimeMillis(); try { if (ctx.getMethod().getName().equals("save")) { System.out.println("添加管理员"); } return ctx.proceed(); } catch (Exception e) { e.printStackTrace(); return null; } finally { l1 = System.currentTimeMillis() - l1; System.out.println("执行时间:" + l1); } } }
四、测试
package com.tao.ejb3.test; import java.util.Date; import javax.naming.InitialContext; import com.tao.ejb3.entity.Operator; import com.tao.ejb3.service.OperatorService; public class OperatorServericeBeanTest { public static void main(String[] args) { OperatorService cs = null; try { InitialContext ic = new InitialContext(); Date date = new Date(); /*cs = (OperatorService) ic.lookup("OperatorServiceBean/remote"); Operator operator = new Operator(); operator.setUsername("tao2008"); operator.setPassword("123"); operator.setCreateDate(date); operator.setLastEdit(date); operator.setLastLogin(date); operator.setEnable(true); cs.save(operator);*/ cs = (OperatorService) ic.lookup("OperatorServiceBeanWithInterceptor/remote"); Operator operator2 = new Operator(); operator2.setUsername("Taoist2008"); operator2.setPassword("123"); operator2.setCreateDate(date); operator2.setLastEdit(date); operator2.setLastLogin(date); operator2.setEnable(true); cs.save(operator2); } catch (Exception e) { e.printStackTrace(); System.out.println("init error!"); } } }
注意:实体Bean的username惟一不能相同
代码的环境变量需加入EJB容器环境,本代码加的是JBoss_HOME/client下所有的jar
- EJB3.rar (14.4 KB)
- 下载次数: 9
发表评论
-
Caused by: org.hibernate.HibernateException: unknown Oracle major version [0]
2010-02-24 09:34 1757昨天试了一下把mysql的数据源配置mysql-ds.xml放 ... -
detached entity passed to persist
2010-02-02 08:01 1694detached entity passed to persi ... -
实体的状态
2009-06-17 23:04 579新建状态:新建的实体对象,尚未拥有持久化主键,没有和一个持久化 ... -
EJB3的一些常见注解
2009-06-17 22:58 8990.实体管理器 @Persisten ... -
JPA双向一对多和多对一
2009-06-16 01:03 4666JPA中一对多和多对一双向关系中,多的一方为关系维护端 ... -
JPA一对多和多对一关系
2009-05-16 11:18 59981-m:多的一方为关系维护端,关系维护端负责外键纪录 ... -
JPA多对多
2009-05-16 10:38 8452维护端注解 @ManyToMany (cascade ... -
JPA(HIberante)环境的搭建
2009-04-19 14:18 18581.添加jar包 hibernate & jpa j ... -
6.2 配置JBoss数据源(Oracle10G)
2009-03-17 10:38 15821.配置数据源 <?xml version=" ... -
6.1 配置JBoss数据源(MS SQL Server2005)
2009-03-17 09:35 17181.SQL Server 2005 配置内容: <?xm ... -
8.开发消息驱动Bean
2009-03-13 22:59 10131.配置消息服务 <?xml version=&qu ... -
7.单表实体Bean
2009-03-09 23:47 997(1):建表SQL语句(MySQL) ... -
6.配置JBoss数据源
2009-03-09 18:57 2357以MySQL为例: (1):添 ... -
5.开发有状态Bean
2009-03-05 23:37 8061.无状态Bean使用实例池技术管理Bean.性能 ... -
4.开发本地接口的无状态会话Bean
2009-03-05 23:03 779远程接口需要 ... -
3.通过ANT来提高应用的开发效率
2009-03-05 22:21 596<?xml version="1.0" ... -
2.开发EJB的客户端
2009-03-05 20:49 879EJB是业务层,通常被客户端调用,客户端可以是J ... -
1.EJB的HelloWorld!
2009-03-05 20:32 1700用Eclipse开发EJB需要用到EJB的类库 ...
相关推荐
Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax....
javax.ejb.EJB.class javax.ejb.EJBAccessException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb.EJBLocalHome.class javax.ejb.EJBLocalObject.class javax...
Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax....
开发ejb时总是无法用@EJB 解决办法: javax.ejb.EJB 需要的jar___jboss-ejb3x.jar
javax.ejb.AccessLocalException.class javax.ejb.CreateException.class javax.ejb.DuplicateKeyException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb....
javax.ejb.jar.zip
Pro.EJB.3.Java.Persistence.API.pdf 有你分享,更精彩!
javax.ejb-api.jar 这个包是用于EJB开发的工具包,请需要的自行下载
Apress.Pro.EJB.3.Java.Persistence.API.pdf
开发EJB项目时需要的jar包
中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.part3.rar
Manning.EJB.3.in.Action.Apr.2007.rar
美河制作.中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.part01.rar美河制作.中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.part01.rar
中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.pdf3中文版
J2EE.DEVELOPMENT.WITHOUT.EJB(中文),rod johnson作品,学习j2ee及spring不可错过的经典。
POJO Application Frameworks_ Spring Vs. EJB 3
中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.pdf1中文版
IBM.EJB.2.0.Development.with.WebSphere.Studio.Application.Developer.eBook-KB.pdf