注意:在EJB中对Bean的定位是通过JNDI的名称来确定的
一:当EJB发布到JBOSS时,如果我们没有为它指定全局JNDI名称或修改其默认的EJB名称,
JBOSS就会按照默认的命名规则为EJB生成全局JNDI名称。默认的命名规则如下:
如果把EJB作为模块打包进后缀*.ear的JAVA EE企业应用文件,默认的全局JNDI名称是
本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
如果把EJB应用打包成后缀为*.jar的模块文件,默认的全局JNDI名称是
本地接口:EJB-CLASS-NAME/local
远程接口:EJB-CLASS-NAME/remote
二:通过远程接口调用EJB的过程
首先客户端需要和EJB服务器建立Socket通信,在通信管道上他们需要来回发送IIOP协议消息。
因为数据要在网络进行传输,存放数据的JAVA对象必须要序列化。
三:通过本地接口调用EJB的过程
通过本地接口调用EJB,直接在内存中进行交互,这样可以避免网络开销、协议解析的开销和对象序列化的开销。
但是大家必须要注意,只有客户端与EJB应用在同一个JVM内运行的时候,我们才能调用本地接口 。
四:如何通过使用注解方式注入并使用其他的EJB和服务
注入和使用其他EJB的方式如下:
@EJB EJB的接口 EJB的变量
通过注解"@EJB"可以注入并使用其他的EJB,如果有多个EJB的类实现了同一个接口,那么在使用"@EJB"的时候
需要明确指定是注入和使用哪一个EJB的Bean。指定方式如下:
@EJB(beanName="EJB类的名称") EJB的接口 EJB的变量
注入和使用其他服务的方式如下:
@Resource 服务名称 服务变量
注意在指定数据源的使用需要配置mappedName的属性值,例如:
@Resource(mappedName="数据库的JNDI名称") DataSource dataSource
五:JMS中的消息
消息传递系统的中心是消息,一条消息有三部分组成
头(Header),属性(property),主体(body)
消息有以下几种类型,他们都是派生自Message接口
StreamMessage:一种主体中包含JAVA基原值流的消息,如填充和读取均按顺序进行。
MapMessage:一种主体中包含一组名-值对的消息,没有定义条目顺序
TextMessage:一种主体中包含JAVA字符串的消息(例如:XML消息)
ObjectMessage:一种主体中包含序列化的JAVA对象的消息
BytesMessage:一种主体中包含连续字节流的消息
消息的传递模型为以下两种:
点对点(point-to-point:PTP):该消息传递模型规定,一条消息只能传递给一个接收方,可以接受过时的消息。采用javax.jms.Queue表示。
发布/订阅(publish/subscribe):该消息传递模型规定,一条消息可以传递给多个接收方,只能接受实时的消息。采用javax.jms.Topic表示。
六:如何发送消息(以Queue为例,如果是Topic则应把所有的Queue改为Topic)
1.得到一个JNDI的初始化上下文(Context)
InitialContext ctx = new InitialContext();
2.根据上下文查找一个连接工厂QueueConnectionFactory。该连接工厂是用JMS提供的,不需要我们自己创建,
每个工厂都绑定一个全局的JNDI,我们通过全局的JNDI来获取它
QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("QueueConnectionFactory");
3.通过连接工厂得到一个连接QueueConnection
QueueConnection conn = factory.createQueueConnection();
4.通过连接来建立一个会话(Session)
QueueSession session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
建立一个不需要事物的并且能启动确认消息已接受的会话
5.查找目标地址
Destination destination = (Destination)ctx.lookup(配置文件的JNDI名称);
6.根据会话和目标地址来建立消息生产者MessageProducer
MessageProducer producer = session.createProducer(destination);
TextMessage msg = session.createTextMessage("hello world");
producer.send(msg);
七:建立一个Message Driver Bean(以Queue为例,如果是Topic则应把所有的Queue改为Topic)
1.实现javax.jms.MessageListener
2.通过注解指定监听设置
@MessageDriven(activationConfig ={
@ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Queue"),//监听消息传递的类型
@ActivationConfigProperty(propertyName="destination",propertyValue="queue/studiozeroQueue"),//设置消息接收方
@ActivationConfigProperty(propertyName="acknowledgeMode",propertyValue="Auto-acknowledge") //设置传递模型
})
八:WEB服务
分享到:
相关推荐
在不使用EJB的情况下有效地管理事务;如何利用AOP和loC解决企业级软件开发中的常见问题;web层设计,以web层在设计良好的J2EE应用中的地位;J2EE应用中最有效的数据访问技术,包括JDBC、Hibernate和JDO;如何利用...
### EJB 3.0 学习心得及关键技术解析 #### EJB 3.0 概述 EJB (Enterprise JavaBeans) 是一种基于 Java 的企业级应用开发模型,它为构建可伸缩、可移植且健壮的企业级应用程序提供了一种标准化的方法。随着技术的...
### EJB学习笔记第六部分详解 #### 一、EJB之间的调用 EJB (Enterprise JavaBeans) 是Java EE平台中用于开发分布式企业应用程序的重要组件。在实际开发过程中,经常需要一个EJB调用另一个EJB来实现更复杂的业务...
### EJB学习笔记4:深入理解实体与JPA #### 实体的概念与作用 实体,在企业级Java开发中,特别是EJB(Enterprise JavaBeans)框架下,指的是具有持久化能力的POJO(Plain Old Java Object)类。不同于实体Bean...
### EJB学习笔记8:深入理解事务处理机制 #### 一、事务的背景知识 **事务**是指一系列操作,这些操作作为一个不可分割的工作单元来执行,即要么全部完成,要么完全不执行。事务的主要特性包括: - **原子性...
### 深入解析《ejb学习笔记5》——消息驱动Bean详解 #### 消息驱动Bean概述 消息驱动Bean(MDB,Message Driven Bean)是Enterprise JavaBeans(EJB)框架中的一个重要组成部分,主要用于接收并处理来自消息中间件...
### EJB学习笔记7知识点详解 #### 实体(消息)- 重点篇章解析 ##### 继承映射策略深入理解 在实体继承映射中,我们主要探讨了三种不同的策略,每种策略都有其特定的应用场景及优缺点。 1. **所有继承结构一张表...
经典资料+个人心得,希望大家能喜欢
### EJB学习笔记:深入解析会话Bean #### 一、会话Bean概览 **会话Bean**作为企业级Java Beans(EJB)模型的一部分,主要用于建模和管理业务流程,尤其关注业务逻辑的执行而非数据持久化。在EJB 3.0中,会话Bean...
### j2ee入门心得,EJB,Java WEB 开发 #### 关键知识点概述: - **Java Web开发基础**:包括对JSP、Servlet等基础知识的理解。 - **MVC框架的应用**:如Struts 1与Struts 2的区别及应用场景。 - **Spring框架**:...
本文将基于标题“JAVA工作流的学习心得(转)”和描述“关于工作流的内容,与数据库及J2EE结合的相关技术!”深入探讨Java中的工作流技术和实践,尤其是jBPM这一开源工作流引擎。 首先,工作流是系统中实现业务流程...
本文档总结了 Java 基础学习心得,并详细介绍了 SOAP 请求、EJB 组件实现代码中的限制、Java 平台的安全策略等内容。 一、SOAP 请求 SOAP(Simple Object Access Protocol)是一种基于 XML 的消息协议,用于在网络...
### Java学习心得分享 #### 一、引言 随着信息技术的快速发展,编程语言成为现代社会发展不可或缺的一部分。在众多编程语言中,Java凭借其强大的功能、跨平台的优势以及丰富的类库支持,成为了许多开发者首选的...
Java学习心得主要涵盖Java编程的基础知识以及在企业级应用开发中的最佳实践,特别是关于Enterprise JavaBeans (EJB)组件的实现。以下是对标题和描述中提及的几个关键知识点的详细解释: 1. **HTTP POST方法**:在...
大学生 Java 学习心得 ...本文档提供了一个 Java 学习心得,涵盖了多个方面的知识点,包括 SOAP 协议、EJB 组件实现、Java 语言特性限制、Java 平台安全策略等。这些知识点对于大学生群体的 Java 学习非常有价值。
**jBPM3学习心得** jBPM3是一款开源的工作流管理系统,主要用于处理业务流程的自动化和管理。它提供了一套完整的解决方案,包括流程建模、执行和监控,旨在帮助企业提高工作效率,规范业务流程,并实现流程的灵活...
- **官方MSNG群**: 设立官方群组,为读者提供了一个交流平台,可以分享学习心得、讨论技术难题。 #### 第二章 运行环境配置 - **下载与安装**: 详细指导了EJB3.0运行环境的搭建过程,包括JBOSS服务器、开发工具等的...