- 浏览: 347685 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
孙大圣123:
大神,你分享的castor dtd文件中没有field-han ...
Castor (二) -- 自定义映射 -
ananeye:
建议举些通俗的例子,说明下。光这样讲,不好懂。
ORACLE 索引原理 -
度_java:
1.不在不同的机器上实现集群功能,除非他们的时钟同步精确到秒。 ...
Quartzs -- Quartz.properties 配置 -
2047699523:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
MAVEN3--(三)创建MAVEN项目 -
qgm168:
写的不错,借用啦,哈哈,多谢!
自定义POI EXCEL模板
通过与TOMCAT整合,使用TOMCAT的JNDI服务,通过JNDI获取ConnectionFactory等
与MQ提供商API耦合的资源,从而实现真正意义上的JMS编程。
1.准备:
将%ACTIVEMQ_HOME%\lib中的
activemq-core-5.1.0.jar
activemq-web-5.1.0.jar
geronimo-j2ee-management_1.0_spec-1.0.jar
geronimo-jms_1.1_spec-1.1.1.jar
geronimo-jta_1.0.1B_spec-1.0.1.jar
COPY到%TOMCAT6.0_HOME%\lib
(我的ACTIVEMQ是5.1.0所以要和TOMCAT6.0整合)
2.配置JNDI
在WEB APP的META-INF目录下新建context.xml,内容如下:
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource
name="jms/NormalConnectionFactory"
auth="Container"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="tcp://localhost:61616"
brokerName="localhost"
useEmbeddedBroker="false"/>
<Resource name="jms/queue/sender"
auth="Container"
type="org.apache.activemq.command.ActiveMQQueue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="MY.TEST.SENDER"/>
<Resource name="jms/queue/receiver"
auth="Container"
type="org.apache.activemq.command.ActiveMQQueue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="MY.TEST.RECEIVER"/>
</Context>
3.通过ServletContextListener在WEB APP启动时将JNDI中可并发复用的部分保存于application上下文中。
JMSInitContextListener.java
package listener;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class JMSInitContextListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent e) {
// TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent event) {
ServletContext application = event.getServletContext();
String jmsConnFactory = application.getInitParameter("jmsConnFactory");
String jmsQueueSendTo = application.getInitParameter("jmsQueueSendTo");
String jmsQueueReceiveFrom = application.getInitParameter("jmsQueueReceiveFrom");
try {
Context ctxt = new InitialContext();
ConnectionFactory factory = (ConnectionFactory) ctxt.lookup(jmsConnFactory);
Connection conn = factory.createConnection();
conn.start();
Queue queueSendTo = (Queue) ctxt.lookup(jmsQueueSendTo);
Queue queueReceiveFrom = (Queue) ctxt.lookup(jmsQueueReceiveFrom);
application.setAttribute("jmsConnection", conn);
application.setAttribute("jmsQueueSendTo", queueSendTo);
application.setAttribute("jmsQueueReceiveFrom", queueReceiveFrom);
} catch (NamingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4.在WEB.XML中申明该Listener
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>jmsConnFactory</param-name>
<param-value>java:comp/env/jms/NormalConnectionFactory</param-value>
</context-param>
<context-param>
<param-name>jmsQueueSendTo</param-name>
<param-value>java:comp/env/jms/queue/sender</param-value>
</context-param>
<context-param>
<param-name>jmsQueueReceiveFrom</param-name>
<param-value>java:comp/env/jms/queue/receiver</param-value>
</context-param>
<listener>
<listener-class>listener.JMSInitContextListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
5.创建一测试用的JSP
index.jsp 本例子实现的功能是模拟一MQ 消息客户端,模拟与上一节中的消息处理器进行通讯
<%@ page language="java" pageEncoding="UTF-8"%>
<jsp:directive.page import="javax.jms.Connection"/>
<jsp:directive.page import="javax.jms.Queue"/>
<jsp:directive.page import="javax.jms.Session"/>
<jsp:directive.page import="javax.jms.MessageProducer"/>
<jsp:directive.page import="javax.jms.TextMessage"/>
<jsp:directive.page import="javax.jms.MessageConsumer"/>
<jsp:directive.page import="javax.jms.Message"/>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
Connection connection = (Connection) application.getAttribute("jmsConnection");
Queue queueSendTo = (Queue) application.getAttribute("jmsQueueSendTo");
Queue queueReceiveFrom = (Queue) application.getAttribute("jmsQueueReceiveFrom");
Session jmsSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer sender = jmsSession.createProducer(queueSendTo);
TextMessage messageToSend = jmsSession.createTextMessage();
messageToSend.setText("Nice to meet u!");
messageToSend.setJMSCorrelationID("99999");
sender.send(messageToSend);
MessageConsumer receiver = jmsSession.createConsumer(queueReceiveFrom, "JMSCorrelationID='99999'");
Message messageReceived = receiver.receive(3000);
receiver.close();
sender.close();
jmsSession.close();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>JMS Queue Test</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
JMS Queue Test<br>
<%="Send :" + messageToSend.getText()%><br>
<%="Send JMSCorrelationID :" + messageToSend.getJMSCorrelationID()%><br>
<%="-----------------------------------------" %><br>
<% if (messageReceived instanceof TextMessage) { %>
<%="Receive : " + ((TextMessage) messageReceived).getText()%><br>
<%="Receive JMSCorrelationID : " + ((TextMessage) messageReceived).getJMSCorrelationID()%><br>
<% } %>
</body>
</html>
6.测试
开启MQ,创建对应的QUEUE,运行上一节的消息处理器,启动TOMCAT,进入index.jsp,刷新index.jsp
7.参考资料
http://activemq.apache.org/tomcat.html
发表评论
-
自定义POI EXCEL模板
2013-07-01 17:51 23121.背景 项目中需要将相关数据导出为EXCEL文件,该文 ... -
POI操作EXCEL
2013-07-01 15:55 9741.简介 Apache POI是Apache软件基金会的开 ... -
JSON-LIB
2013-06-30 15:44 16301.关于JSON JSON(JavaScript Obj ... -
Jasperreport应用小结
2013-06-19 23:15 14271.简介 JasperReport是一 ... -
JAVA实现FTP
2013-06-09 09:05 151001.关于FTP FTP:File Transfe ... -
Digester解析的顺序
2013-03-11 18:07 14611.说明 本文将通过一段代码来说明Digester解析X ... -
ONGL介绍
2012-10-16 17:02 58901.简介 OGNL:Object Graph Navi ... -
MyBatis(一)----基础使用
2012-06-10 22:24 9231.简介 --MyBatis是支持普通SQL查询,存储 ... -
SMOOKS--XSL
2012-06-07 13:33 30871.简介 Smooks是一个用于出力XML和非XML数 ... -
Log4j
2012-05-25 15:28 10781。简介 Log4j是一个应 ... -
commons-logging
2012-05-23 22:25 1054一。简介 commons-logging是Apache下的一 ... -
JFreeChart -- Web应用
2012-01-06 00:26 10181) Model index.jsp < ... -
JUnit -- 分析
2011-12-11 18:08 9921.类结构图 Assert : 大量的ass ... -
Quartzs -- JDBC-JobStore - Oracle 实现 + Cluster
2011-09-13 16:44 4485数据库 从%QUARTZ_HOME%/docs/dbTa ... -
Quartzs -- Quartz.properties 配置
2011-09-13 11:23 46254文件加载位置 默认:优先顺序 Classpath: ... -
StringTemplate学习笔记(四) StringTemplateGroup文件
2011-08-27 10:31 3500一,简介 StringTemplateGroup ... -
StringTemplate学习笔记(三) st文件加载
2011-08-22 22:40 4368一,简介 ST通过StringTemplateGr ... -
StringTemplate学习笔记(二) 语法
2011-08-21 16:11 10943一,分隔符,注释 <...>貌似只能在Stri ... -
StringTemplate学习笔记(一) 简介
2011-08-21 09:47 2602一,简介 StringTemplate(简称ST ... -
Castor (二) -- 自定义映射
2011-08-03 23:33 39051.概述 Castor的自定义映射关系通过XML设置。 ...
相关推荐
active mq 实战教程,写的很不错,拿来分享
包含两个示例中,第一个示例须要运行单独MQ(Apache Active MQ 5.15.0以下的版本)。第二个示例不需要运行单独的MQ。 有兴趣的朋友可以看看。两个示例运用的不同的方法去实现的。
Active MQ 与 WebSphere MQ 高可用性和管理分析。
active MQ maven POM方式 初学者
Active MQ in Action,英文版。主要是ActiveMQ,manning
Active MQ C++实现通讯 X86 librariy:CMS (stands for C++ Messaging Service)类似于JMS API用于同Message Brokers通讯(例如Active MQ)。 APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如...
Jfinal -active mq: 消费:extends JFinalQueueConsumer 生产:JFinalQueue.sendMessage(queueName, message);
active_mq_mvc 源码,由一段if...else..判断引起的代码重构...,主要讲设计思想,以及设计模式,合理的运用反射,极度的省略了代码
集成了所有active MQ资源,应用于windows和linux即时通信
active mq的学习手册,例子等。你可以一步步地上手。
Active MQ 基础知识思维导图。主要是JMS总结介绍。用于学习和复习
Camel IBM Websphere MQ 到 Active MQ 桥接路由 先决条件 IBM 为安装在 Fuse 上的 MQ 客户端提供了 OSGi jar 文件IBM_MQ_INSTALL_DIR/java/lib/OSGi 运行 AMQ 代理 带有填充属性的 JBOSS_FUSE_INSTALL_DIR/etc/ 中...
开发active-mq的良好帮助指导手册
activeMQ的一个小例子 包含处理附件的代码例子 完整版 包含jar包和配置文件
ActiveMQ Manning.Active.MQ.in.Action.(MEAP) Active.MQ Active.MQ Manning.Active.MQ.in.Action.(MEAP) Active.MQ Active.MQ
主要介绍了Spring Boot基于Active MQ实现整合JMS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
ActiveMQ is the most popular and powerful open source Message Bus.ActiveMQ 是一个完全支持JMS1.1 和J2EE 1.4 规范的JMS Provider 实现,尽管JMS 规范出台 已经是很久的事情了,但是JMS 在当今的J2EE 应用中间仍然...
NULL 博文链接:https://manzuosteve.iteye.com/blog/1859288
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的...
基于Spring+JMS+ActiveMQ+Tomcat,做一个Spring4.1.0和ActiveMQ5.11.1整合实例,实现了Point-To-Point的异步队列消息和PUB/SUB(发布/订阅)模型,简单实例,不包含任何业务。