- 浏览: 327220 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
di1984HIT:
谢谢,写的不错。
使用hector操作Cassandra -
mr_von:
非常感谢!
paoding的分词使用 -
howgoo:
http://www.dhtmlx.com/docs/prod ...
dhtmlxGrid分页与排序 -
青春的、脚步:
谢谢
spring-data-mongodb的MongoTemplate 使用小例子 -
青春的、脚步:
xiaofancn 写道青春的、脚步 写道这个能查询都个值在某 ...
spring-data-mongodb的MongoTemplate 使用小例子
JBoss中先用xml文件定义我们的消息管道
定义规则是后最为XXXXXX-service.xml文件,
我定义为snailteam-service.xml
定义我们的Queue消息管道
name=snailteamQueue
JNDIName queue/snailteam
定义我们的
Topic消息管道
name=snailteamTopic
JNDIName topic/snailteamTopic
如下
<?xml version="1.0" encoding="UTF-8"?> <server> <!-- 在Jboss中用xml定义Queue消息管道,单用户发送,接受为单用户 --> <mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=snailteamQueue"> <attribute name="JNDIName">queue/snailteamQueue</attribute> <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends> </mbean> <!-- 在Jboss中用xml定义Topic消息管道,单用户发送,接受可为单用户 --> <mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.mq.destination:service=Topic,name=snailteamTopic"> <attribute name="JNDIName">topic/snailteamTopic</attribute> <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends> </mbean> </server>
放到目录中
Myeclipse中启动JBoss,
控制台观察到如下信息,说明发布成功
[TopicService] Topic[topic/snailteamTopic] started, fullSize=200000, pageSize=2000, downCacheSize=2000 [QueueService] Queue[queue/snailteamQueue] started, fullSize=200000, pageSize=2000, downCacheSize=2000
接着写我们服务端的消息管道监听Bean(消息驱动Bean)
Myeclipse中新建一个EJB项目,
别忘了将JBoss的jar包添加进我们的lib中
package org.snailtea.message; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; @MessageDriven(activationConfig = { //propertyValue = "javax.jms.Queue" 用来监听javax.jms.Queue消息 @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), //propertyValue = "queue/snailteamQueue" 监听的消息管道 @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/snailteamQueue"), }) public class MessageDrivenBean implements MessageListener { public void onMessage(Message message) { //Message接受到的消息,我们发送的是TextMessage。 TextMessage msg = (TextMessage)message; try { //简单的把消息控制台输出 System.out.println(msg.getText()); } catch (JMSException e) { e.printStackTrace(); } } }
同样的步骤,新建一个消息Bean,ReceiveBean
package org.snaiteam.message; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; @MessageDriven(mappedName = "jms/ReceiveBean", activationConfig = { //propertyValue = "topic/snailteamTopic" 监听的消息管道 @ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/snailteamTopic"), //propertyValue = "javax.jms.Topic" 用来监听javax.jms.Topic消息 @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic") }) public class ReceiveBean implements MessageListener { public void onMessage(Message message) { TextMessage msg = (TextMessage) message; try { //简单的打印我们的消息 System.out.println(this.getClass()+msg.getText()); } catch (JMSException e) { e.printStackTrace(); } } }
开发好我们消息驱动Bean了,发布到JBoss容器中
控制台会输出
STARTED EJB: org.snaiteam.message.MessageDrivenBean ejbName: MessageDrivenBean STARTED EJB: org.snaiteam.message.ReceiveBean ejbName: ReceiveBean
发布成功。
开发我们的客户端,
为了能找到JBossRMI接口
我们需要定义一个jndi.properties文件,src目录下
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=localhost:1099
新建一个类 QueueSender.java
public static void main(String[] args) { try { //读取jndi.properties文件中的参数 InitialContext ctx = new InitialContext(); //连接JBoss连接工厂 QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("ConnectionFactory"); QueueConnection conn = factory.createQueueConnection(); //false不需要事务 QueueSession session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE); //查找queue/snailteamQueue消息管道 Destination destination = (Destination)ctx.lookup("queue/snailteamQueue"); MessageProducer producer = session.createProducer(destination); //向管道发送消息 producer.send(session.createTextMessage("中国小樊")); //关闭连接会话 session.close(); //关闭连接 conn.close(); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
新建一个类 TopicSender.java
public static void main(String[] args) { // TODO Auto-generated method stub try { //读取jndi.properties文件中的参数 InitialContext ctx = new InitialContext(); //连接JBoss连接工厂 TopicConnectionFactory factory = (TopicConnectionFactory)ctx.lookup("ConnectionFactory"); TopicConnection conn = factory.createTopicConnection(); //false不需要事务 TopicSession session = conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE);//false不需要事务 //查找topic/snailteamTopic消息管道 Destination destination = (Destination)ctx.lookup("topic/snailteamTopic"); MessageProducer producer = session.createProducer(destination); //向管道发送消息 producer.send(session.createTextMessage("中国小樊")); session.close(); conn.close(); System.out.println("ok"); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
运行,观察我们的控制台,JBoss是否会输出我们发送的消息
我们可以多写几个消息Bean,用来监听JBoss容器的消息管道。
发表评论
-
spring cloud gateway 全局过滤器。
2019-03-17 23:11 500spring cloud gateway 网关 ... -
elasticsearch 5.4搜索
2017-05-19 08:37 148@Test public void t ... -
netty简单的操作memcached
2017-04-19 18:59 950pom文件 <dependency> ... -
juc系列-Executor框架
2017-03-20 13:34 672转自 juc系列-Executor框架 什 ... -
ReentrantLock 类
2017-03-19 21:11 11.1 什么是reentrantlock java.u ... -
juc之CountDownLatch、CyclicBarrier和Semaphore例子
2017-03-19 17:23 805import java.util.concurren ... -
netty客户端与服务端例子
2017-03-12 20:07 2774package com.snailteam.nett ... -
freemaker集成spring
2017-02-26 19:00 536<bean id="freeMark ... -
spring集成Hessian插件配置改成自动注入。
2017-02-10 15:39 809原来的配置 <bean name="/ ... -
web开发模版
2017-02-09 14:42 0# Rules reminder: # DEBUG &l ... -
Java多线程
2017-02-04 14:39 495线程状态图 新建状态(New): ... -
hash冲突解决
2017-01-23 18:30 4321、开放地址法有一个公式: m是hash表长度,di ... -
mybatis +spring 分库
2015-04-30 17:56 353<context:component-scan b ... -
Java并发任务处理例子
2014-02-12 16:06 1107public void init() { su ... -
JAVA动态代理模式
2012-10-03 01:01 1161这是我要实现的效果 public static ... -
paoding的分词使用
2012-06-13 21:30 4851paoding下载 http://code.googl ... -
使用spring-hadoop操作hadoop
2012-05-20 02:12 32参考文章 http://blog.springsource. ... -
solr3.5集成paoding和位置搜索及对solrj的使用。
2012-04-28 02:12 1929http://xiaofancn.iteye.com/blog ... -
日期处理DateUtils
2012-03-24 09:47 4761import java.text.SimpleDateF ... -
Cassandra的数据分布情况测试
2012-03-16 15:09 20071、规划种子节点ip和Token值的对应 4个种子 ...
相关推荐
NULL 博文链接:https://8366.iteye.com/blog/502114
NULL 博文链接:https://fruitking.iteye.com/blog/564183
文档目录: 一.JBOSS入门 1.下载和安装JBoss ...3.消息驱动Bean (Message Driven Bean) 3.1 Queue消息的发送与接收(PTP消息传递模型) 3.2 Topic消息的发送与接收(Pub/sub 消息传递模型) 4.实体Bean(Entity Bean)
8.7 在Session Bean中使用事务 327 8.7.1 容器管理事务 327 8.7.2 Bean管理事务 330 8.8 拦截器 332 8.9 依赖注入 335 8.9.1 EJB注入 336 8.9.2 资源注入 339 8.10 配置EJB引用 340 8.11 使用计时器进行任务调度 342...
本资源为PPT,配套视频为: ... 11_开发消息驱动bea 12_开发EJB容器模型的WEB服务 附录01_EJB3基本概念及发展前景 附录02_EJB3.0推荐教程 附录03_EJB3的运行环境 如果需要配套视频,请给本人私信。
1.3. Seam 中的可点击列表:消息示例............................................................................................................................. 27 1.3.1. 理解代码.........................
第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN) .....33 第六章 实体 BEAN(ENTITY BEAN) .36 6.1 实体 BEAN的组成文件PERSISTENCE.XML配置.36 6.2 JBOSS数据源的配置......36 6.2.1 MySql数据源的配置...........37 ...
第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN) .....33 第六章 实体 BEAN(ENTITY BEAN) .36 6.1 实体 BEAN的组成文件PERSISTENCE.XML配置.36 6.2 JBOSS数据源的配置......36 6.2.1 MySql数据源的配置...........37 ...
|--persistence.xml EJB3的持久化配置文件 <br> |--DBScript |--employee.sql 数据库脚本及测试数据 |--mysql-connector-java-5.1.5-bin.jar MySql的驱动程序包 |--mysql-ds.xml 在JBoss中配置...
Tomcat JSP Web 开发中的乱码问题小结 164 第九章 开发Struts 1.x应用 166 9.1 介绍 166 9.2 创建Struts项目 168 9.2.1 创建Web项目 169 9.2.2 加入 Struts开发功能 169 9.3 使用Struts工具 171 9.3.1 Struts配置...
当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...
页面操作会被自动映射到对应的java bean中,后台逻辑只需要同java bean发生交互。整个过程是通过“依赖注入(DI)”来实现的,看来这是目前解偶合的最佳途径啊,spring的影响真是深远。不过正式因为jsf采用了这样的...
在配置完LobHandler后, 还需要将其注入到sessionFactory的Bean中,下面是调用后的sessionFactory Bean的配置: 代码 6 将lobHandler注入到sessionFactory中的配置 1. 2. … 3. <bean id="sessionFactory" 4. ...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener 在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被...