- 浏览: 959013 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
在Spring中嵌入ActiveMQ有四种方式:纯Spring配置文件、在Spring的配置文件中引入ActiveMQ的配置文件、使用硬代码及ActiveMQ配置文件和在Spring配置文件中使用特定的schema。
纯Spring配置文件
在Spring的配置文件中引入ActiveMQ的配置文件
硬编码+activemq配置文件方式
使用特定的Schema
客户端配置
可以使用连接池
配置JMS消息目的地
消息消费者和消息生产者
Spring中接收消息的基本抽象机制是使用消息监听器容器(MLC: 参阅 http://mng.bz/LJti).
MLC是在消息监听器和代理之间设计的中间件,用来处理连接,线程等等,让开发者只需要关注
消息监听器中具体的业务逻辑.
同接收消息一样,Spring同样为发送消息提供了便利.Spring中发送消息的基本机制是使用JmsTemplate类.
JmsTemplate使用标准的模板模式为发送消息提供一个很方便的类.
使用Spring发送消息的一个常用方法是实现Spring的MessageCreator接口然后使用JmsTemplate类中合适
的send()方法
注意JmsTemplate使用了一个池化的连接工厂.这点很重要,因为JmsTemplate是专门设计成使用
Java EE容器的,而Java EE规范要求提供池化连接.每次调用JmsTemplate的send()方法都会创建
和销毁JMS资源(连接,消费者和生产者).因此,如果你没有使用Java EE容器,请确保在利用
JmsTemplate发送消息时使用的是池化的连接工厂.
纯Spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="admins" class="org.apache.activemq.security.AuthenticationUser"> <constructor-arg index="0" value="admin" /> <constructor-arg index="1" value="password" /> <constructor-arg index="2" value="admins,publishers,consumers" /> </bean> <bean id="publishers" class="org.apache.activemq.security.AuthenticationUser"> <constructor-arg index="0" value="publisher" /> <constructor-arg index="1" value="password" /> <constructor-arg index="2" value="publishers,consumers" /> </bean> <bean id="consumers" class="org.apache.activemq.security.AuthenticationUser"> <constructor-arg index="0" value="consumer" /> <constructor-arg index="1" value="password" /> <constructor-arg index="2" value="consumers" /> </bean> <bean id="guests" class="org.apache.activemq.security.AuthenticationUser"> <constructor-arg index="0" value="guest" /> <constructor-arg index="1" value="password" /> <constructor-arg index="2" value="guests" /> </bean> <bean id="simpleAuthPlugin" class="org.apache.activemq.security.SimpleAuthenticationPlugin"> <property name="users"> <list> <ref bean="admins" /> <ref bean="publishers" /> <ref bean="consumers" /> <ref bean="guests" /> </list> </property> </bean> <bean id="broker" class="org.apache.activemq.broker.BrokerService" init-method="start" destroy-method="stop"> <property name="brokerName" value="myBroker" /> <property name="persistent" value="false" /> <property name="transportConnectorURIs"> <list> <value>tcp://localhost:61616</value> </list> </property> <property name="plugins"> <list> <ref bean="simpleAuthPlugin" /> </list> </property> </bean> </beans>
在Spring的配置文件中引入ActiveMQ的配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 其他Spring配置 --> <bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean"> <property name="config" value="activemq.xml" /> <property name="start" value="true"></property> </bean> </beans>
硬编码+activemq配置文件方式
public static void main(String[] args) throws Exception { String configUri = MyConfiguration3.class.getResource("/") + "activemq.xml"; System.setProperty("activemq.base", System.getProperty("user.dir")); new FileSystemXmlApplicationContext(configUri); }
使用特定的Schema
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" <span style="color:#ff0000;">xmlns:amq="http://activemq.apache.org/schema/core"</span> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd <span style="color:#ff0000;">http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd</span> "> <!-- 其他Spring配置 --> <amq:broker brokerName="myBroker" dataDirectory="${activemq.base}/data"> <amq:transportConnectors> <amq:transportConnector name="openwire" uri="tcp://localhost:61616" /> </amq:transportConnectors> <amq:plugins> <amq:simpleAuthenticationPlugin> <amq:users> <amq:authenticationUser username="admin" password="password" groups="admins,publishers,consumers" /> <amq:authenticationUser username="publisher" password="password" groups="publishers,consumers" /> <amq:authenticationUser username="consumer" password="password" groups="consumers" /> <amq:authenticationUser username="guest" password="password" groups="guests" /> </amq:users> </amq:simpleAuthenticationPlugin> </amq:plugins> </amq:broker> </beans>
客户端配置
<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616" /> <property name="userName" value="admin" /> <property name="password" value="password" /> </bean>
可以使用连接池
<bean id="pooledJmsConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"> <property name="connectionFactory" ref="jmsConnectionFactory" /> </bean>
配置JMS消息目的地
<bean id="cscoDest" class="org.apache.activemq.command.ActiveMQTopic"> <constructor-arg value="STOCKS.CSCO" /> </bean> <bean id="orclDest" class="org.apache.activemq.command.ActiveMQTopic"> <constructor-arg value="STOCKS.ORCL" /> </bean>
消息消费者和消息生产者
Spring中接收消息的基本抽象机制是使用消息监听器容器(MLC: 参阅 http://mng.bz/LJti).
MLC是在消息监听器和代理之间设计的中间件,用来处理连接,线程等等,让开发者只需要关注
消息监听器中具体的业务逻辑.
<!-- 这个监听器实现需要自己编写 --> <bean id="portfolioListener" class="org.apache.activemq.book.ch3.portfolio.Listener"> </bean> <!-- Spring DMLC --> <bean id="cscoConsumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsConnectionFactory" /> <property name="destination" ref="cscoDest" /> <property name="messageListener" ref="portfolioListener" /> </bean> <!-- Spring DMLC --> <bean id="orclConsumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsConnectionFactory" /> <property name="destination" ref="orclDest" /> <property name="messageListener" ref="portfolioListener" /> </bean>
同接收消息一样,Spring同样为发送消息提供了便利.Spring中发送消息的基本机制是使用JmsTemplate类.
JmsTemplate使用标准的模板模式为发送消息提供一个很方便的类.
使用Spring发送消息的一个常用方法是实现Spring的MessageCreator接口然后使用JmsTemplate类中合适
的send()方法
public class StockMessageCreator implements MessageCreator { private int MAX_DELTA_PERCENT = 1; private Map<Destination, Double> LAST_PRICES = new Hashtable<Destination, Double>(); Destination stock; public StockMessageCreator(Destination stock) { this.stock = stock; } public Message createMessage(Session session) throws JMSException { Double value = LAST_PRICES.get(stock); if (value == null) { value = new Double(Math.random() * 100); } // lets mutate the value by some percentage double oldPrice = value.doubleValue(); value = new Double(mutatePrice(oldPrice)); LAST_PRICES.put(stock, value); double price = value.doubleValue(); double offer = price * 1.001; boolean up = (price > oldPrice); MapMessage message = session.createMapMessage(); message.setString("stock", stock.toString()); message.setDouble("price", price); message.setDouble("offer", offer); message.setBoolean("up", up); System.out.println("Sending: " + ((ActiveMQMapMessage)message).getContentMap() + " on destination: " + stock); return message; } protected double mutatePrice(double price) { double percentChange = (2 * Math.random() * MAX_DELTA_PERCENT) - MAX_DELTA_PERCENT; return price * (100 + percentChange) / 100; } }
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="pooledJmsConnectionFactory" /> </bean>
注意JmsTemplate使用了一个池化的连接工厂.这点很重要,因为JmsTemplate是专门设计成使用
Java EE容器的,而Java EE规范要求提供池化连接.每次调用JmsTemplate的send()方法都会创建
和销毁JMS资源(连接,消费者和生产者).因此,如果你没有使用Java EE容器,请确保在利用
JmsTemplate发送消息时使用的是池化的连接工厂.
发表评论
-
activemq in action 翻译
2014-11-20 10:45 856http://jackyin5918.iteye.com/ca ... -
高并发
2014-11-16 21:58 1597垂直扩展 垂直扩展是一种用于增加单个ActiveMQ代理连接数 ... -
删除不活动的队列(Delete Inactive Destinations)
2014-11-16 16:41 1353一般情况下,ActiveMQ的queue在不使用之后,可以通过 ... -
代理网络中消息传递
2014-11-13 21:21 792常见的方式是让所有客户端都连接到一个中心代理,而这不是使用消息 ... -
企业部署
2014-11-13 14:26 689主从备份方式 多个代理 ... -
REST和AJAX
2014-11-12 17:01 789REST 通过activemq提供的servlet < ... -
安全机制
2014-10-15 15:22 1248ActiveMQ中所有安全相关的概念都是通过插件的形式实现的. ... -
activemq 消息存储
2014-10-13 17:03 2342JMS规范支持两种方式分发消息:持久化和非持久化。Active ... -
ActiveMQ配置 连接activemq
2014-10-08 10:13 39061activemq代理 JMS代理(如ActiveMQ bro ... -
ActiveMQ简介
2014-10-08 09:49 775支持跨平台跨语言等特点,由于它是用JAVA实现的一套中间件,跨 ... -
jms-spring
2014-09-30 10:37 935同步接收和同步发送的情况(使用JNDI) 异步接收消息 ... -
jms-事物
2014-09-29 16:52 682JMSRedelivered可以检查消 ... -
过滤器与消息选择器
2014-09-28 23:08 705过滤器 String filter = &quo ... -
发布订阅模式
2014-09-28 11:52 1025特点 1.通过话题通道进行交互。 2.可以有多个订阅者,订阅者 ... -
jms-点对点
2014-09-27 23:45 984在点对点模式中,消息创建者称为发送者,消息消费者称为接收者。 ... -
jms-message对象
2014-09-26 14:40 1206message必须通过session创建,以便完成对应的初始化 ... -
jms基础,与例子
2014-09-24 22:14 1014MOM,面向消息中间件的交互模式 各个系统间,可以认为 ... -
jms的两种模式
2014-09-23 22:49 2275JMS有两种通信方式 P2P,点对点 方式和 发布/订阅模式P ...
相关推荐
在将Hadoop与Spring结合的过程中,RPC(Remote Procedure Call)起到了桥梁作用。Hadoop的RPC机制允许远程节点调用服务,使得分布式环境中不同节点间能够进行高效通信。Spring可以通过配置RPC客户端和服务端,实现对...
**JMX与Spring结合** 的主要目的是让Spring应用可以被远程管理和监控。下面我们将详细介绍几个关键点: 1. **JMX与Spring 结合实例**:在Spring应用中,可以通过配置或者编程方式来注册MBeans(Managed Beans),...
将GXT、GWT与Spring结合使用,可以构建出高效、可维护且功能齐全的企业级Web应用。 GXT是Ext JS的一个Java版本,提供了大量的桌面级UI组件,如表格、图表、树形视图等,同时还支持数据绑定和分页功能。GXT的优势...
在标题“mx4j管理jmx的jar与spring结合使用”中,我们关注的重点是MX4J如何与Spring协作来实现JMX的功能。MX4J提供的`mx4j-tools-2.1.1.jar`是MX4J的核心库,包含了用于JMX操作的各种工具和API。这个版本(2.1.1)...
5. **与Spring结合的Web例子**: Spring框架是Java企业级应用开发的主流选择,而Hessian与Spring的集成可以方便地创建和管理服务。这个例子可能展示了如何配置Spring的ApplicationContext来定义Hessian服务,以及如何...
本文将详细探讨如何将SmartClient与Spring框架结合,以实现一个测试tree和list组建的应用实例。 首先,我们需要理解SmartClient的核心特性。SmartClient包含一套丰富的JavaScript和Java UI组件库,这些组件可以提供...
当MINA与Spring结合时,可以创建高效且易于维护的网络服务应用。 标题中的"mina 与spring的结合开发,包头指令"可能是指在使用MINA构建网络服务时,如何利用Spring框架来管理和配置MINA的应用上下文,以及如何通过...
下面我们将详细探讨JMX和Spring的结合使用: 1. **JMX基础**: - **MBeans**:JMX的核心组件,是可管理的Java对象,代表了被管理的资源或服务。 - **MBeanServer**:管理MBeans的服务器,负责注册、查询和操作...
在将JSF与Spring结合时,通常会使用Spring的依赖注入来管理JSF的Managed Beans,这样可以实现更灵活的控制和更好的测试性。为了实现这种结合,你需要以下jar包: 1. **JSF相关的jar包**:这通常包括jsf-api.jar和...
将XFire与Spring结合使用,可以实现以下几种发布Web服务的方式: 1. **基于Spring Bean的配置**:通过在Spring配置文件中定义Bean,可以将Web服务的实现类声明为一个Bean。Spring会自动检测该Bean上的JAX-WS注解...
将DWR与Spring结合,可以创建出高效且易于维护的消息推送系统。首先,我们需要在Spring配置中声明DWR的相关bean,包括`DWRConfiguration`、`CatalinaReverseAjaxServlet`以及应用中定义的远程服务接口。这些配置通常...
接下来,我们将深入探讨CXF与Spring结合开发Web服务所需的关键知识点。 首先,Spring框架的组件在整合中起着至关重要的作用。以下是压缩包中包含的Spring库的简要介绍: 1. **spring-context-3.0.5.RELEASE.jar**...
当我们将CXF与Spring结合使用时,可以利用Spring的管理能力,简化CXF的配置和部署,提升应用的可维护性和可扩展性。 在“CXF与Spring 2.5整合”中,主要涉及到以下几个知识点: 1. **Spring的依赖注入**:Spring的...
总之,将Axis2与Spring结合可以创建出高性能、可扩展且易于维护的Web服务。这种集成不仅简化了服务的部署和管理,还利用了Spring的强大功能,如依赖注入和AOP,提高了代码的可测试性和可维护性。对于任何需要构建...
**Spring与DWR结合** Spring框架是Java领域中广泛使用的轻量级应用框架,它提供了依赖注入、面向切面编程、事务管理等核心功能,帮助开发者构建可维护性高、可扩展性强的企业级应用程序。而Direct Web Remoting ...
将CXF与Spring结合,可以利用Spring的IoC容器管理和配置Web服务,使得服务的创建、部署和测试更加便捷。 在标题中提到的"webservice CXF结合Spring所需jar包",这是开发过程中必不可少的依赖。以下是一些关键的jar...
本教程主要针对MyBatis与Spring的集成进行讲解,适合对MyBatis有一定了解但尚未接触过两者结合使用的初学者。 1. **MyBatis简介** MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。...
将CXF与Spring结合,可以充分利用Spring的DI和AOP能力来管理Web服务的生命周期,同时利用CXF的强大功能来处理Web服务的通信细节。以下是结合这两者实现Web服务的基本步骤: 1. **配置Spring**:首先,在Spring配置...
标题“spring与xfire结合”涉及的是在Java开发中整合Spring框架和XFire服务引擎的技术。Spring是一个广泛应用的开源框架,主要用于简化企业级应用的开发,而XFire(现已被Apache CXF所吸收)则是一个用于创建Web服务...