`

会话bean 知识补充

阅读更多

1 改变会话bean的JNDI名

@Stateless(name="A_Bean") //此处定义的是beanName,注入此bean到其它的bean时会用到

@Remote(A.class)

@RemoteBinding(jndiBinding="AA") //@Stateless(mappedname=" ")可以统一规定全局jndi名,而不是远程,本地分别各自定义

class ABean implements A{

}

这样原来的jndi为 ABean/remote ,现在为 AA

(local本地接口 以此类推)

2 会话bean的生命周期

无状态会话bean :创建 ,销毁

有状态会话bean:创建,钝化/激活循环,销毁

我们可以将会话bean的一个普通方法,定义为 bean不同生命周期的 回调函数

@PostConstruct (bean实例化后立即执行)

public void run(){}

这样run方法在所在bean实例话后就会立刻执行,此外还有

@PreDestroy (bean销毁前)

@Remove (此注解的方法被调用的话,会执行销毁bean的动作)

此外有状态会话bean还有额外的生命周期管理

@PrePassivate (钝化前,有状态会话bean长时间空闲,容器会钝化它,存入缓存,钝化后一段时间仍然未被使用将会清除)

@PostActivate (激活后,立即执行)

@Init (有状态会话bean可以有多个@Init但是只有一个会被调用,它在@PostConstruct之前执行)

3 EJB拦截器

先创建 拦截器类

public class MyInterceptor {

@AroundInvoke

publicObjectXXX(InvocationContext ctx) throws Exception{ //只有红色部分是可选的,其它东西必须固定格式

String name=ctx.getMethod().getName();

System.out.println("before "+name);

Object o=ctx.proceed(); -----此处是被拦截的方法在执行,可以在它的前后加上自己的业务

System.out.println("after "+name);

return o;

}

}

在需要的业务方法上 插入 拦截器

@Interceptors(XXX.class)

4 依赖注入(包括EJB注入,资源注入)

EJB注入,就是会话bean的注入,比如在一个会话bean内使用别的会话bean

a。可以通过JNDI查找的方式注入,必须之前JNDI ENC中添加注册项,这是ejb-jar.xml 必须放在META-INF文件夹下

它是以 java:comp/env 为上下文的 如ava:comp/env/xxxx

b。使用 @EJB(beanName="xxx") XxxBean myBean;

beanName是@Stateless.name()和Stateful.name()

此外还可以是mappedName他是全局JNDI名不过他和容器厂商有关不利于移植

资源类型注入(注入的对象是任何由JCA资源适配器定义的类型)

以注入mysql数据源为例(有了数据源,就可以方便的进行jdbc开发了)

a。将mysql-jdbc的驱动放入%JBOSS_HOME%\server\default\lib

b。%JBOSS_HOME%\docs\examples\jca中找到mssql-ds.xml这是mysql数据源的配置文件

c。对其稍作修改如改改连接地址,密码什么的。发布到%JBOSS_HOME%\server\default\deploy目录

d。在 会话bean内

@Resource(mappedName="java:MySqlDS",type=DataSource.class)

DataSource ds;

( 全局jndi为java:MySqlDS是因为 他不是全局jndi不能被外部访问,以java:开头)

注入完成。

分享到:
评论

相关推荐

    EJB3.0 实例教程

    2. **轻量级API** - EJB 3.0引入了无状态会话bean(Stateless Session Beans, SSB)和有状态会话bean(Stateful Session Beans, SSB),这些bean无需实现复杂的EJB接口,而是直接继承自Java类,使得开发更加简单。...

    EJT j2ee 补遗

    有无状态会话bean和有状态会话bean两种,前者对每个请求都创建一个新的bean实例,而后者则维护了请求之间的状态。 2. Message-driven Beans:是专门为处理JMS(Java Message Service)消息设计的组件。当队列或主题...

    JBoss下配置和部署EJB英文版.pdf

    - **Session Beans**:负责处理客户端请求,可以进一步分为无状态会话Bean和有状态会话Bean。 - **Entity Beans**:持久化数据的容器,用于存储数据库中的记录。 - **Message-Driven Beans**:用于接收并处理来自...

    J2EE 课件 (又补充内容)

    - **EJB**:提供了一种容器管理的对象,用于实现业务逻辑,包括会话bean(Session Beans)用于交互式会话,实体bean(Entity Beans)表示数据库中的持久化对象,以及消息驱动bean(Message-Driven Beans)用于处理...

    hello-ejb.rar_ejb_ejb java

    EJB主要分为三种类型:Session Beans(会话Bean)、Message Driven Beans(消息驱动Bean)和Entity Beans(实体Bean)。Session Beans用于封装业务逻辑,Message Driven Beans用于处理消息队列中的事件,而Entity ...

    JavaEE应用开发教程代码.rar

    8. **Chap2.9**:可能讲解了EJB(Enterprise JavaBeans)技术,包括无状态会话bean、有状态会话bean和消息驱动bean的使用,以及它们在分布式系统中的角色。 9. **Chap2.8**:可能涉及到JavaEE的安全机制,如角色基...

    图书:JBoss AS 5开发

    4. **EJB 3.0**:深入剖析Enterprise JavaBeans 3.0,包括无状态会话bean、有状态会话bean、实体bean(包括容器管理持久性[CMP]和Bean管理持久性[BMP])以及消息驱动bean的使用和配置。 5. **JMS与消息传递**:讨论...

    EJB3_study

    - **会话Bean(Session Bean)**:提供业务逻辑服务,可以是无状态的(Stateless Session Beans)或有状态的(Stateful Session Beans)。无状态Bean适用于一次性的、不依赖上下文的请求,而有状态Bean可以维护...

    java学习资源,给出入社会的人帮助

    EJB包含三种主要类型的组件:会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean(Message-driven Beans)。理解它们各自的职责和使用场景,以及如何处理事务、安全性和并发性问题是面试中可能遇到...

    东北大学EJB实验报告

    - **会话Bean(Session Beans)**:代表一次客户端会话,通常用于处理单个用户请求,如计算或业务逻辑处理。 - **实体Bean(Entity Beans)**:映射数据库中的持久数据,用于表示业务对象,支持CRUD操作(创建、...

    在JBoss下配置EJB

    例如,`@Stateless`、`@Stateful`、`@MessageDriven`和`@Remote`等注解分别用于声明无状态会话bean、有状态会话bean和消息驱动bean及其接口。 2. **persistence.xml**:对于实体bean,EJB 3.0使用JPA(Java ...

    JSP基础 课程知识点总结论文

    附录可能包含代码示例、项目截图或其他辅助材料,以补充报告内容。 通过上述内容的学习和实践,掌握了JSP基础,为Web开发打下了坚实的基础。在未来的学习中,将持续深入研究Web开发的高级主题,如Spring框架、AJAX...

    Your First Cup An Introduction to the javaee platform.pdf

    EJB分为三种类型:会话Bean、实体Bean和消息驱动Bean。 - **会话Bean**:用于实现业务逻辑和服务。 - **实体Bean**:用于表示持久化数据对象。 - **消息驱动Bean**:用于接收来自Java消息服务(JMS)的消息。 4. **...

    我的j2ee成功之路源码第十一章

    2. **业务逻辑层**:可能涉及EJB,包括无状态会话bean和有状态会话bean,以及实体bean,展示了如何封装和管理业务逻辑。 3. **持久层**:可能讲解了JPA(Java Persistence API)或Hibernate,用于数据库操作,以及...

    Java学习的30个目标

    掌握EJB(Enterprise JavaBeans)规范,理解无状态会话Bean、有状态会话Bean、实体Bean(BMP/CMP)和消息驱动Bean(MDB)的使用场景。 #### 18. 应用服务器选择与配置 熟悉WebLogic、JBoss等应用服务器的安装、配置...

    Java.Web应用开发.J2EE和Tomcat第2版

    有三种类型的EJB:无状态会话bean、有状态会话bean和实体bean,每种都有其特定的用途和生命周期。 9. **Web服务**:J2EE支持创建和消费Web服务,如通过JAX-WS(Java API for XML Web Services)创建SOAP(Simple ...

    niit J2EE在线考试

    3. **EJB(Enterprise JavaBeans)**:学习实体Bean(Entity Beans)、会话Bean(Session Beans)和消息驱动Bean(Message-Driven Beans),以及它们在业务逻辑层的角色。 4. **JDBC(Java Database Connectivity)...

    ejb.rar_ejb_petstore

    这个系统通常包括三个主要的EJB组件类型:会话Bean(Session Beans)处理客户端请求,实体Bean(Entity Beans)持久化数据,以及消息驱动Bean(Message-Driven Beans)处理JMS消息。 设计模式在EJB开发中起着至关...

    Java Web 测试题及参考答案

    `session`表示将bean存储在用户的会话中,直到会话结束或bean被显式删除为止。 **9. Servlet中,如何实现HTTP请求的重定向?** - **选项分析**: - a)sendURL()(错误) - b)redirectURL()(错误) - c)...

Global site tag (gtag.js) - Google Analytics