消息驱动Bean(MDB)的开发

18、企业应用开发:从业务层到持久化层的技术实践 本文探讨了企业应用开发中从业务层到持久化层的技术实践,详细介绍了消息驱动Bean(MDB)的构建、Java消息服务(JMS)的应用,以及持久化层的设计与实现。内容涵盖使用JDBC API、实体Bean和对象-关系框架等多种持久化方式,分析了它们的优缺点和适用场景,并提供了选择流程和最佳实践建议,旨在帮助企业开发者构建高效、稳定的应用系统。 阅读详情

开发的基本过程包括:

u       创建EJB工程

u       创建消息驱动Bean

u       创建客户端程序

u       运行测试

2、创建EJB工程

选择【File】à【New Project】,在弹出的界面上选择【Enterprise】à【EJB Module】,在弹出的界面中输入工程的名字“MDBTest”,完成工程的创建。

3、创建消息驱动Bean

    在工程上面点击右键,选择【New】à【Message-Driven Bean…】,如下图所示。

在弹出的界面上输入消息驱动Bean的名字,并为Bean类指定包。这里包名为“ch20”,类名是“TextMDB”。

创建后的消息驱动Bean的代码如下:

/*

 * TextMDB.java

 *

 * Created on 2007年5月14日, 下午7:28

 *

 * To change this template, choose Tools | Template Manager

 * and open the template in the editor.

 */

 

package ch20;

 

import javax.ejb.ActivationConfigProperty;

import javax.ejb.MessageDriven;

import javax.jms.Message;

import javax.jms.MessageListener;

 

/**

 * Entity class TextMDB

 *

 * @author Administrator

 */

@MessageDriven(mappedName = "jms/TextMDB", activationConfig =  {

        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),

        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")

    })

public class TextMDB implements MessageListener {

   

    /** Creates a new instance of TextMDB */

    public TextMDB() {

    }

 

    public void onMessage(Message message) {

    }

   

}

在类前面的代码:

@MessageDriven(mappedName = "jms/TextMDB", activationConfig =  {

        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),

        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")

    })

声明这个消息驱动Bean使用的目的是“jms/TextMDB”,默认的生成的连接工厂的名字是“jms/TextMDBFactory”。activationConfig声明消息的确认模式和目的的类型(队列)。

在onMessage方法中添加对消息处理的代码,这里假设接收到的消息是TextMessage,接收到消息之后把消息输出到控制台。修改onMessage方法如下:

    public void onMessage(Message message) {

        TextMessage msg = (TextMessage)message;

        try{

            System.out.println(msg.getText());

        }catch(Exception e){

            System.out.println(e.getMessage());

        }

    }

部署该EJB应用,在该工程上点击右键选择【Deploy project】,完成消息驱动Bean的部署。

4、创建客户端程序

选择【File】à【New Project】,在弹出的界面中选择【Enterprise】à【Enterprise Application Client】,输入客户端工程的名字“mdbClient”。

客户端的代码如下:

/*

 * Main.java

 *

 * Created on 2007年5月14日, 下午7:51

 *

 * To change this template, choose Tools | Template Manager

 * and open the template in the editor.

 */

 

package mdbclient;

 

import javax.naming.*;

import javax.jms.*;

 

 

/**

 *

 * @author Administrator

 */

public class Main {

   

    /** Creates a new instance of Main */

    public Main() {

    }

   

    /**

     * @param args the command line arguments

     */

    public static void main(String[] args) {                         

        try{

            // 创建上下文环境

            Context ctx = new InitialContext();

           

            // 查找连接工厂

            QueueConnectionFactory qConFactory = (QueueConnectionFactory)

            ctx.lookup("jms/TextMDBFactory");

           

            // 查找队列

            javax.jms.Queue messageQueue = (javax.jms.Queue) ctx.lookup("jms/TextMDB");

           

            // 创建连接

            QueueConnection qCon = qConFactory.createQueueConnection();

 

            // 创建会话Bean

            QueueSession session = qCon.createQueueSession(

                    false, /* not a transacted session */

                    Session.AUTO_ACKNOWLEDGE

                    );

            // 创建消息发送者

            QueueSender sender = session.createSender(messageQueue);

           

            // 创建要发送的消息

            TextMessage msg = session.createTextMessage();

           

            // 为消息赋值

            msg.setText("发送给消息驱动Bean的消息!");

           

            System.out.println("开始发送消息!");

            // 发送消息

            sender.send(msg);

           

            qCon.close();

           

            System.out.println("消息发送成功!");

       

        }catch(Exception e){

            System.out.println(e.getMessage());

        }

    }   

}

注意:这里发送消息的连接工厂和目的应该与消息驱动Bean的相同。

5、运行测试

在客户端程序所在的工程上点击右键选择【Run project】。可以在服务器端的控制台上看到消息驱动Bean的输出信息如下图所示:

 
17、Java消息驱动Bean(MDB)与JMS技术详解 本文详细介绍了Java消息驱动Bean(MDB)与JMS技术的核心概念、架构设计、消息传递模型、版本发展以及实际应用。内容涵盖MDB的配置、JMS消息类型、消息确认机制、消息选择器、订阅持久性等关键技术点,并通过实际案例说明如何在企业级应用中使用MDB和JMS实现异步通信。文章还探讨了MDB与JMS的未来发展趋势及与其他消息技术的对比,适合希望深入了解Java异步消息处理机制的开发者阅读。 阅读详情

相关推荐

MDB合并工具:操作详解与应用实践

本文还有配套的精品资源,点击获取 简介:MDB文件是Microsoft Access数据库的标准格式,用于数据存储与处理。"MDB合并工具"为合并多个MDB文件而设计,简化了数据整合的过程。本文将详细介绍如何使用该工具,包括合并过程中的功能、注意事项和适用场景。同时,指南中还提到了工具在不同操作系统下的兼容性以及如何处理"Release"文件。 1. MDB文件在...

weixin_35639680的博客 2833

基于AUTOSAR架构的MBD开发方式

Simulink和AUTOSAR建模

wo的专栏 571

mdb:增强 mongodb 开发工作流程

用于在任何目录中启动 MongoDB 和从 json 文件 init/reinit db/collection 的实用程序。 如何安装 与npm i依赖关系 使用npm link注册模块 将默认值放在 config.json 中 使用mdb start 、 mdb init db 、 mdb init collection 运行node mdb help查看所有命令以及如何使用它 如何使用 用法: node mdb help或node mdb --help 显示帮助 node mdb started 显示正在运行的 mongo 进程 node mdb start {--in LOCATION} 仅当此位置存在时才在指定位置启动 mongodb。 否则 mongodb 在默认位置启动。 如果未指定 'in' 参数,则 mongodb 在默认位置启动。 必须在 config.json

MDB的配置与开发

这里我的环境是MyEclipse8.0 + WebLogic10.3 + Ubuntu9.10,EJB的开发其实与这三个环境没有关系,我最早也是在WindowsVista + MyEclipse6.0 + WebLogic10.3上开发成功的,关于Weblogic配置JMS服务大家可以去搜一下,有好多,这里主要是在环境都OK的基础上配置开发MDB,首先是我的MDB代码:/** * 测试

IT人生 3021

基于模型开发MBD流程资料——北汽

development-and-platform-with-model-based-design,北汽新能源MBD流程

消息驱动Bean(Message Driven Bean)

消息驱动Bean(MDB) 是设计用来专门处理基于消息请求的组件。一个MDB类必须实现MessageListener 接口。当容器检测到bean守候的队列一条消息时,就调用onMessage()方法,将消息作为参数传入。MDB在OnMessage()中决定如何处理该消息。你可以用注释来配置MDB 监听哪一条队列。当MDB 部署时,容器将会用到其中的注释信息。

使用MDB开发JMS步骤

  一.介绍JMS  Java 消息服务(Java Message Service,简称JMS)是企业级消息传递系统,紧密集成于Jboss Server 平台之中。企业消息传递系统使得应用程序能够通过消息的交换与其他系统之间进行通信。JMS 支持两种消息传递模型:点对点(point-to-point,简称PTP)和发布/订阅(publish/subscribe,简称pub/sub)。这

黄瓜和土豆的专栏 2852

告别实车测试:手把手教你用Vector VT平台搭建OBC/DCDC的HIL测试台架

本文详细介绍了如何利用Vector VT平台搭建新能源汽车OBC/DCDC的HIL测试台架,涵盖硬件选型、模型部署到自动化测试的全流程。通过HIL仿真测试技术,工程师可以高效验证动力域关键部件,大幅缩短开发周期并降低成本,特别适合新能源汽车三电系统的开发验证。

weixin_42659194的博客 340

JMS和消息驱动Bean(MDB)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34126215的博客 137

从UC3842的FB脚到COMP脚:一次讲透反激电源两种光耦反馈接法的选择与实战

本文深入探讨了UC3842 PWM控制器在反激式开关电源设计中的两种光耦反馈接法:FB脚与COMP脚方案。通过分析信号极性差异、稳定性特点及动态响应性能,提供场景化选型指南和可靠性设计要点,帮助工程师优化反馈环路设计,提升系统稳定性与效率。特别针对TL431和PC817等关键元件在温度漂移、老化衰减等实际问题给出解决方案。

weixin_28717683的博客 710

[STM32]HAL STM32F103 软件I2C读写MPU6050(附DMP库移植)

本文介绍了如何在STM32F103C8T6上通过I2C协议与MPU6050传感器通信并实现DMP功能。首先,使用STM32CubeMX配置项目,设置时钟和I2C接口。然后,编写软件I2C协议的读写函数与MPU6050交互。接着,移植DMP库并进行必要修改,获取加速度计和陀螺仪数据,并将其转换为欧拉角显示在OLED上。最后,利用Keil的逻辑分析仪监测I2C时序。

m0_56841583的博客 2325

MDB 消息驱动bean开发

MDB用于异步通信,其原理与android中的Intent和IntentFilter类似MDB实际就是个监视特定地点destination的监听器关于消息MDB只关心 消息格式和消息目的JMS异步,安全(确保发送成功且只发送一次消息)JMS像JDBC一样只是一个接口,标准。有P2P和Pub/Sub两种形式消息分为 消息头,消息属性,消息体MDB开发流程。(和MDB通信的唯一

孙健的专栏 1312

iOS自动化之打包-xcodebuild命令行打包.app并安装到ios模拟器

xcode xcodebuild xcrun ios模拟器 iOS UI自动化测试 ios自动打包安装到ios模拟器

z12347891的博客 5079

myeclipse8+jboss5开发EJB3消息驱动Bean(MDB)实例

先看最后的目录结构:   mdb为EJB3项目;mdbTest为Web项目,add project:     上代码: web项目中的servlet:   mdb.java: import java.io.IOException; import java.io.PrintWriter;import javax.jms.JMSException; import javax.jms.Q

itzyjr的专栏 1837

【无人机智能避障】基于深度强化学习的城市复杂环境路径规划实战

本文探讨了基于深度强化学习的无人机在城市复杂环境中的智能避障与路径规划。针对传统算法难以应对动态与非结构化障碍的痛点,文章详细介绍了如何利用DQN算法,通过设计合理的状态空间、奖励函数,并结合经验回放、目标网络等技巧,训练无人机自主学会在楼宇间安全、高效飞行的策略。

weixin_28224217的博客 736

【MATLAB】嵌入式PID控制参数整定与优化

本文提出了一种基于MATLAB仿真的嵌入式PID参数优化方法,解决了传统人工试凑法效率低、适应性差的问题。通过建立一阶滞后被控对象模型,对比分析了不同PID参数组合的性能表现,筛选出最优参数。仿真结果表明,优化后的PID参数能有效降低超调量(从传统方法的显著超调降至接近0%),缩短调节时间,提高稳态精度。最终将优化算法部署到STM32平台,实现了"仿真整定-参数优化-嵌入式落地"的完整开发流程。该方法显著提升了嵌入式系统的响应速度和控制精度,为工业控制应用提供了标准化解决方案。

unber的博客 46

带你走进EJB--MDB

在之前的文章中我们介绍了带你走进EJB--JMS 和 带你走进EJB--JMS编程模型 对JMS有了初步的了解, 作为EJB系列的文章我们会继续对EJB相关的内容做进一步深的学习和了解.而此次需要进行的是MDB.         MDB(Message DrivenBean)消息驱动Bean.它是EJB跟JMS的一个整合,跟SessionBean 一样,MDB是由EJB容器进行管

潛龍,勿用 3961

大数据领域数据产品的交通运输行业应用

您是否经历过早高峰被堵在桥上,看着导航显示“前方5公里缓行”却无能为力?是否见过货车司机绕远路导致成本飙升?这些“交通痛点”的背后,是传统交通管理依赖经验决策的局限。本文将聚焦“大数据数据产品”这一核心工具,从技术原理到实际应用,全面解析它如何为交通运输行业“开天眼”,解决从城市拥堵到物流效率的一系列难题。本文将按照“问题引入→概念拆解→技术原理→实战案例→应用场景→未来趋势”的逻辑展开,用生活化比喻降低理解门槛,用代码和数学模型提升专业性,最终帮您建立“大数据+交通”的完整认知框架。交通数据。

操作系统内核探秘的博客 237

Jboss下开发ejb应用之一消息驱动bean的应用

Jboss下开发ejb应用之一消息驱动bean的应用,这是一篇紧接着学习会话bean和实体bean之后而写的 JMS(Java Message Service):即Java消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。JMS支持两种消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即点对点和发布订阅模型。 消息驱...

fruitking 165

openbmc mctp i3c适配步骤

本文介绍了在Intel OKS平台下,BMC作为I3C从设备如何适配MCTP over I3C的实现方法。主要内容包括:1)关键术语解释,如MDB(Mandatory Data Byte)值为0xAE,DCR(Device Characteristics Register)和BCR(Bus Characteristics Register)的设置;2)适配流程说明,包括BMC作为控制器主节点分配地址后成为MCTP端点,CPU作为总线所有者的角色转换;3)测试验证步骤,展示通过mctp-client工具发送指

wit_yuan的专栏 132

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 为什么要使用EJB
下一篇: Java持久性API(JPA)第1讲——简单实例
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值