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:开头)
注入完成。
分享到:
相关推荐
2. **轻量级API** - EJB 3.0引入了无状态会话bean(Stateless Session Beans, SSB)和有状态会话bean(Stateful Session Beans, SSB),这些bean无需实现复杂的EJB接口,而是直接继承自Java类,使得开发更加简单。...
有无状态会话bean和有状态会话bean两种,前者对每个请求都创建一个新的bean实例,而后者则维护了请求之间的状态。 2. Message-driven Beans:是专门为处理JMS(Java Message Service)消息设计的组件。当队列或主题...
- **Session Beans**:负责处理客户端请求,可以进一步分为无状态会话Bean和有状态会话Bean。 - **Entity Beans**:持久化数据的容器,用于存储数据库中的记录。 - **Message-Driven Beans**:用于接收并处理来自...
- **EJB**:提供了一种容器管理的对象,用于实现业务逻辑,包括会话bean(Session Beans)用于交互式会话,实体bean(Entity Beans)表示数据库中的持久化对象,以及消息驱动bean(Message-Driven Beans)用于处理...
EJB主要分为三种类型:Session Beans(会话Bean)、Message Driven Beans(消息驱动Bean)和Entity Beans(实体Bean)。Session Beans用于封装业务逻辑,Message Driven Beans用于处理消息队列中的事件,而Entity ...
8. **Chap2.9**:可能讲解了EJB(Enterprise JavaBeans)技术,包括无状态会话bean、有状态会话bean和消息驱动bean的使用,以及它们在分布式系统中的角色。 9. **Chap2.8**:可能涉及到JavaEE的安全机制,如角色基...
4. **EJB 3.0**:深入剖析Enterprise JavaBeans 3.0,包括无状态会话bean、有状态会话bean、实体bean(包括容器管理持久性[CMP]和Bean管理持久性[BMP])以及消息驱动bean的使用和配置。 5. **JMS与消息传递**:讨论...
- **会话Bean(Session Bean)**:提供业务逻辑服务,可以是无状态的(Stateless Session Beans)或有状态的(Stateful Session Beans)。无状态Bean适用于一次性的、不依赖上下文的请求,而有状态Bean可以维护...
EJB包含三种主要类型的组件:会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean(Message-driven Beans)。理解它们各自的职责和使用场景,以及如何处理事务、安全性和并发性问题是面试中可能遇到...
- **会话Bean(Session Beans)**:代表一次客户端会话,通常用于处理单个用户请求,如计算或业务逻辑处理。 - **实体Bean(Entity Beans)**:映射数据库中的持久数据,用于表示业务对象,支持CRUD操作(创建、...
例如,`@Stateless`、`@Stateful`、`@MessageDriven`和`@Remote`等注解分别用于声明无状态会话bean、有状态会话bean和消息驱动bean及其接口。 2. **persistence.xml**:对于实体bean,EJB 3.0使用JPA(Java ...
附录可能包含代码示例、项目截图或其他辅助材料,以补充报告内容。 通过上述内容的学习和实践,掌握了JSP基础,为Web开发打下了坚实的基础。在未来的学习中,将持续深入研究Web开发的高级主题,如Spring框架、AJAX...
EJB分为三种类型:会话Bean、实体Bean和消息驱动Bean。 - **会话Bean**:用于实现业务逻辑和服务。 - **实体Bean**:用于表示持久化数据对象。 - **消息驱动Bean**:用于接收来自Java消息服务(JMS)的消息。 4. **...
2. **业务逻辑层**:可能涉及EJB,包括无状态会话bean和有状态会话bean,以及实体bean,展示了如何封装和管理业务逻辑。 3. **持久层**:可能讲解了JPA(Java Persistence API)或Hibernate,用于数据库操作,以及...
掌握EJB(Enterprise JavaBeans)规范,理解无状态会话Bean、有状态会话Bean、实体Bean(BMP/CMP)和消息驱动Bean(MDB)的使用场景。 #### 18. 应用服务器选择与配置 熟悉WebLogic、JBoss等应用服务器的安装、配置...
有三种类型的EJB:无状态会话bean、有状态会话bean和实体bean,每种都有其特定的用途和生命周期。 9. **Web服务**:J2EE支持创建和消费Web服务,如通过JAX-WS(Java API for XML Web Services)创建SOAP(Simple ...
3. **EJB(Enterprise JavaBeans)**:学习实体Bean(Entity Beans)、会话Bean(Session Beans)和消息驱动Bean(Message-Driven Beans),以及它们在业务逻辑层的角色。 4. **JDBC(Java Database Connectivity)...
这个系统通常包括三个主要的EJB组件类型:会话Bean(Session Beans)处理客户端请求,实体Bean(Entity Beans)持久化数据,以及消息驱动Bean(Message-Driven Beans)处理JMS消息。 设计模式在EJB开发中起着至关...
`session`表示将bean存储在用户的会话中,直到会话结束或bean被显式删除为止。 **9. Servlet中,如何实现HTTP请求的重定向?** - **选项分析**: - a)sendURL()(错误) - b)redirectURL()(错误) - c)...