- 浏览: 209746 次
- 性别:
- 来自: 厦门
-
文章分类
- 全部博客 (100)
- java设计模式学习 (1)
- javascript (2)
- sqlserver (3)
- java基础 (18)
- spring (8)
- webwork (3)
- itext (4)
- xstream (1)
- freemarker (2)
- jsp (6)
- hibernate (7)
- jquery (1)
- json (1)
- poi (2)
- iprocess (1)
- bw (1)
- bpm (0)
- java2word (0)
- ireport (1)
- Struts2.0 (13)
- webservice (6)
- j2ee基础 (7)
- jms (3)
- protocol buffer (3)
- jfreechart (1)
- spring mvc (0)
- http编程机制探析 (1)
- pb (2)
- oracle (0)
- sso (0)
- mybatis (0)
- ssl与ca认证 (0)
- cas (1)
最新评论
-
mayucai:
这个博客写的我是真服,写了一大堆,结果最后来一句这是错的。
poi获取excel和word总页数 -
iris_1992:
2005年以前,国外开原报表完全碾压国产软件,但是现在国内软件 ...
ireport与jasperreports开发总结 -
高攀sky:
...
Servlet中的八大Listener -
rmn190:
多谢, 试了N多个后, 终于参考您的内容, 设置出来了。老天开 ...
ireport与jasperreports开发总结 -
辣油_:
System.out.println("草 ...
Spring-JNDI配置
在Spring JMS、中可以通过实现MessageConverter自定义自己的消息转换器实现消息的转换。在Spring 的JMS1.1有SimpleMessageConverter实现基本的消息转换,在JMS1.02中SimpleMessageConverter102实现消息的转换的工作。
- package com.easyway.jboss.jms.ptp.service;
- public class SMS implements java.io.Serializable{
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private String username;
- private String message;
- public SMS(){
- }
- public SMS(String username,String message){
- this.username=username;
- this.message=message;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getMessage() {
- return message;
- }
- public void setMessage(String message) {
- this.message = message;
- }
- }
package com.easyway.jboss.jms.ptp.service; public class SMS implements java.io.Serializable{ /** * */ private static final long serialVersionUID = 1L; private String username; private String message; public SMS(){ } public SMS(String username,String message){ this.username=username; this.message=message; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
消息转换器:
- package com.easyway.jboss.jms.ptp.spring.service;
- import javax.jms.JMSException;
- import javax.jms.MapMessage;
- import javax.jms.Message;
- import javax.jms.Session;
- import org.springframework.jms.support.converter.MessageConversionException;
- import org.springframework.jms.support.converter.MessageConverter;
- import com.easyway.jboss.jms.ptp.service.SMS;
- /**
- * 自定义消息转换器MessageConverter实现
- * 在JmsTemplate提供了各种send方法,供发送消息使用,其中JmsTemplate中的
- * convertAndSend和receiveAndConvert方法能够借助于MessageConverter接口
- * 实现消息做相应的转换。
- * JMS1.1中SimpleMessageConverter实现String与TextMessage,等之间的转换
- * @author longgangbai
- *
- */
- public class SMSConverter implements MessageConverter {
- @Override
- public Object fromMessage(Message message) throws JMSException,
- MessageConversionException {
- SMS sms=new SMS();
- MapMessage mapmessage= (MapMessage )message;
- sms.setMessage(mapmessage.getString("message"));
- sms.setUsername(mapmessage.getString("username"));
- return sms;
- }
- @Override
- public Message toMessage(Object object, Session session)
- throws JMSException, MessageConversionException {
- SMS sms=(SMS)object;
- MapMessage mapmessage=session.createMapMessage();
- mapmessage.setString("username", sms.getUsername());
- mapmessage.setString("message", sms.getMessage());
- return mapmessage;
- }
- }
package com.easyway.jboss.jms.ptp.spring.service; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.Message; import javax.jms.Session; import org.springframework.jms.support.converter.MessageConversionException; import org.springframework.jms.support.converter.MessageConverter; import com.easyway.jboss.jms.ptp.service.SMS; /** * 自定义消息转换器MessageConverter实现 * 在JmsTemplate提供了各种send方法,供发送消息使用,其中JmsTemplate中的 * convertAndSend和receiveAndConvert方法能够借助于MessageConverter接口 * 实现消息做相应的转换。 * JMS1.1中SimpleMessageConverter实现String与TextMessage,等之间的转换 * @author longgangbai * */ public class SMSConverter implements MessageConverter { @Override public Object fromMessage(Message message) throws JMSException, MessageConversionException { SMS sms=new SMS(); MapMessage mapmessage= (MapMessage )message; sms.setMessage(mapmessage.getString("message")); sms.setUsername(mapmessage.getString("username")); return sms; } @Override public Message toMessage(Object object, Session session) throws JMSException, MessageConversionException { SMS sms=(SMS)object; MapMessage mapmessage=session.createMapMessage(); mapmessage.setString("username", sms.getUsername()); mapmessage.setString("message", sms.getMessage()); return mapmessage; } }
applicationContext-cjms-sender.xml:
- <?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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
- <!-- 设置消息服务的初始化参数信息 -->
- <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
- <property name="environment">
- <props>
- <prop key="java.naming.factory.initial">
- org.jnp.interfaces.NamingContextFactory
- </prop>
- <prop key="java.naming.provider.url">
- jnp://localhost:1099
- </prop>
- <prop key="java.naming.factory.url.pkgs">
- org.jboss.naming:org.jnp.interfaces
- </prop>
- </props>
- </property>
- </bean>
- <!--
- 创建消息服务的连接工厂的信息
- JMS1.02 TopicConnectionFactory 和QueueConnectionFactory
- JMS1.1 TopicConnectionFactory 和QueueConnectionFactory合并为ConnectionFactory
- -->
- <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
- <property name="jndiName">
- <value>ConnectionFactory</value>
- </property>
- <property name="jndiTemplate">
- <ref local="jndiTemplate"/>
- </property>
- </bean>
- <!-- 创建JMS的目的地信息 -->
- <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
- <property name="jndiName">
- <value>queue/longgangbai</value>
- </property>
- <property name="jndiTemplate">
- <ref local="jndiTemplate"/>
- </property>
- </bean>
- <!--
- 创建自定义转换器
- -->
- <bean id="smsconverter" class="com.easyway.jboss.jms.ptp.spring.service.SMSConverter"></bean>
- <!-- 创建JMS发送信息的模板的对象 -->
- <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
- <property name="connectionFactory">
- <ref local="connectionFactory"/>
- </property>
- <property name="defaultDestination">
- <ref local="destination"/>
- </property>
- <!-- 设置自定义转换器 -->
- <property name="messageConverter">
- <ref local="smsconverter"/>
- </property>
- </bean>
- </beans>
<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- 设置消息服务的初始化参数信息 --> <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> <property name="environment"> <props> <prop key="java.naming.factory.initial"> org.jnp.interfaces.NamingContextFactory </prop> <prop key="java.naming.provider.url"> jnp://localhost:1099 </prop> <prop key="java.naming.factory.url.pkgs"> org.jboss.naming:org.jnp.interfaces </prop> </props> </property> </bean> <!-- 创建消息服务的连接工厂的信息 JMS1.02 TopicConnectionFactory 和QueueConnectionFactory JMS1.1 TopicConnectionFactory 和QueueConnectionFactory合并为ConnectionFactory --> <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>ConnectionFactory</value> </property> <property name="jndiTemplate"> <ref local="jndiTemplate"/> </property> </bean> <!-- 创建JMS的目的地信息 --> <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>queue/longgangbai</value> </property> <property name="jndiTemplate"> <ref local="jndiTemplate"/> </property> </bean> <!-- 创建自定义转换器 --> <bean id="smsconverter" class="com.easyway.jboss.jms.ptp.spring.service.SMSConverter"></bean> <!-- 创建JMS发送信息的模板的对象 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref local="connectionFactory"/> </property> <property name="defaultDestination"> <ref local="destination"/> </property> <!-- 设置自定义转换器 --> <property name="messageConverter"> <ref local="smsconverter"/> </property> </bean> </beans>
发送消息的代码那:
- package com.easyway.jboss.jms.ptp.spring.service;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import org.springframework.jms.core.JmsTemplate;
- import com.easyway.jboss.jms.ptp.service.SMS;
- /**
- * Spring中JMS的简单应用
- * Spring JMS的创建并发送
- * @author longgangbai
- *
- */
- public class SpringCJMSQueueSender {
- private static final Log log=LogFactory.getLog(SpringCJMSQueueSender.class);
- public static void main(String[] args) {
- ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext-cjms-sender.xml");
- JmsTemplate jt=(JmsTemplate)ctx.getBean("jmsTemplate");
- SMS sms=new SMS();
- sms.setMessage("message");
- sms.setUsername("wangna");
- jt.convertAndSend(sms);
- log.info("发送信息成功!");
- }
- }
package com.easyway.jboss.jms.ptp.spring.service; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jms.core.JmsTemplate; import com.easyway.jboss.jms.ptp.service.SMS; /** * Spring中JMS的简单应用 * Spring JMS的创建并发送 * @author longgangbai * */ public class SpringCJMSQueueSender { private static final Log log=LogFactory.getLog(SpringCJMSQueueSender.class); public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext-cjms-sender.xml"); JmsTemplate jt=(JmsTemplate)ctx.getBean("jmsTemplate"); SMS sms=new SMS(); sms.setMessage("message"); sms.setUsername("wangna"); jt.convertAndSend(sms); log.info("发送信息成功!"); } }
applicationContext-cjms-receive.xml:
- <?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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
- <!-- 设置消息服务的初始化参数信息 -->
- <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
- <property name="environment">
- <props>
- <prop key="java.naming.factory.initial">
- org.jnp.interfaces.NamingContextFactory
- </prop>
- <prop key="java.naming.provider.url">
- jnp://localhost:1099
- </prop>
- <prop key="java.naming.factory.url.pkgs">
- org.jboss.naming:org.jnp.interfaces
- </prop>
- </props>
- </property>
- </bean>
- <!--
- 创建消息服务的连接工厂的信息
- JMS1.02 TopicConnectionFactory 和QueueConnectionFactory
- JMS1.1 TopicConnectionFactory 和QueueConnectionFactory合并为ConnectionFactory
- -->
- <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
- <property name="jndiName">
- <value>ConnectionFactory</value>
- </property>
- <property name="jndiTemplate">
- <ref local="jndiTemplate"/>
- </property>
- </bean>
- <!-- 创建JMS的目的地信息 -->
- <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
- <property name="jndiName">
- <value>queue/longgangbai</value>
- </property>
- <property name="jndiTemplate">
- <ref local="jndiTemplate"/>
- </property>
- </bean>
- <!--
- 创建自定义转换器
- -->
- <bean id="smsconverter" class="com.easyway.jboss.jms.ptp.spring.service.SMSConverter"></bean>
- <!-- 创建JMS发送信息的模板的对象 -->
- <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
- <property name="connectionFactory">
- <ref local="connectionFactory"/>
- </property>
- <property name="defaultDestination">
- <ref local="destination"/>
- </property>
- <!-- 设置自定义转换器 -->
- <property name="messageConverter">
- <ref local="smsconverter"/>
- </property>
- </bean>
- </beans>
<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- 设置消息服务的初始化参数信息 --> <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> <property name="environment"> <props> <prop key="java.naming.factory.initial"> org.jnp.interfaces.NamingContextFactory </prop> <prop key="java.naming.provider.url"> jnp://localhost:1099 </prop> <prop key="java.naming.factory.url.pkgs"> org.jboss.naming:org.jnp.interfaces </prop> </props> </property> </bean> <!-- 创建消息服务的连接工厂的信息 JMS1.02 TopicConnectionFactory 和QueueConnectionFactory JMS1.1 TopicConnectionFactory 和QueueConnectionFactory合并为ConnectionFactory --> <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>ConnectionFactory</value> </property> <property name="jndiTemplate"> <ref local="jndiTemplate"/> </property> </bean> <!-- 创建JMS的目的地信息 --> <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>queue/longgangbai</value> </property> <property name="jndiTemplate"> <ref local="jndiTemplate"/> </property> </bean> <!-- 创建自定义转换器 --> <bean id="smsconverter" class="com.easyway.jboss.jms.ptp.spring.service.SMSConverter"></bean> <!-- 创建JMS发送信息的模板的对象 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref local="connectionFactory"/> </property> <property name="defaultDestination"> <ref local="destination"/> </property> <!-- 设置自定义转换器 --> <property name="messageConverter"> <ref local="smsconverter"/> </property> </bean> </beans>
接收消息的代码如下:
- package com.easyway.jboss.jms.ptp.spring.service;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import org.springframework.jms.core.JmsTemplate;
- import com.easyway.jboss.jms.ptp.service.SMS;
- /**
- * Spring JMS 消息的接受
- * @author longgangbai
- *
- */
- public class SpringCJMSQueueReceive {
- private static final Log log=LogFactory.getLog(SpringCJMSQueueReceive.class);
- public static void main(String[] args) {
- ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext-cjms-receive.xml");
- JmsTemplate jt=(JmsTemplate)ctx.getBean("jmsTemplate");
- SMS sms=(SMS)jt.receiveAndConvert();
- System.out.println("username:"+sms.getUsername());
- System.out.println("message:"+sms.getMessage());
- System.out.println(".......");
- }
- }
相关推荐
Spring 提供了多种内置的消息转换器,如 `SimpleMessageConverter` 和 `XmlMessageConverter`,但也可以自定义转换器。 例如,如果我们要将 Java 对象转换为 JSON 格式并发送,可以使用 Jackson 库配合 `...
通过定义消息通道(channels)、消息源(sources)、消息处理器(gateways)和消息转换器(transformers),可以构建出强大的集成解决方案。同时,其丰富的监控和日志记录功能也有助于排查和优化系统的运行情况。 ...
Registering a LoadTimeWeaver允许在应用类加载器的加载时将类转换器应用到类上。 此外,ApplicationContext接口提供了Spring IoC容器的主要实现,它扩展了BeanFactory接口,增加了更多的企业级功能,如支持国际化...
7. **消息转换器**: Spring JMS提供了一些内置的消息转换器,如`StringMessageConverter`,可以根据需要自定义转换规则,确保消息体能在消息生产者和消费者之间正确转换。 8. **Web层整合**: 将JMS与RESTful API...
Spring提供了对JMS的全面支持,包括连接工厂配置、消息生产者、消费者以及消息转换器等。JMS允许应用程序通过消息中间件进行解耦通信,提高系统的可扩展性和可靠性。Spring JMS抽象了JMS API,提供了更易于使用的...
Spring框架作为一个强大的企业级应用开发框架,提供了对JMS的全面支持,使得开发者能够方便地在Spring应用中集成JMS,实现异步消息处理和高可用性。 一、JMS简介 JMS是一种API,用于在分布式环境中发送、接收和管理...
#### 四、使用Spring Security保护BlazeDS目的地 ##### 4.1 引言 为了确保应用程序的安全性,需要对BlazeDS目的地进行访问控制。Spring Security提供了一种强大的方式来实现这一点。 ##### 4.2 配置Spring ...
Spring-JMS Spring的生态 Spring Boot Spring XD Spring Cloud Spring Data Spring Integration Spring Batch Spring Security Spring HATEOAS Spring ...
Spring提供了强大的验证、数据绑定和类型转换功能,这对于Web开发尤为重要。主要包括以下几个方面: - **Validation using Spring’s Validator interface**:Spring支持通过Validator接口实现数据验证。 - **...
当我们谈论"Spring整合JMS"时,意味着我们要将Spring框架与Java消息服务(Java Message Service)进行集成,以便利用JMS的异步通信能力来处理应用程序中的消息传递。 **JMS简介** JMS是一种标准API,用于在分布式...
总的来说,Spring MQ的使用能够帮助开发者轻松地在Spring应用中实现消息驱动的架构,提升系统的稳定性和扩展性。"spring-MQ-main"项目可能包含了这些概念的实现,通过学习和运行这个项目,你可以更深入地理解和掌握...
19.3.1. 使用消息转换器 19.3.2. SessionCallback 和ProducerCallback 19.4. 接收消息 19.4.1. 同步接收 19.4.2. 异步接收 - 消息驱动的POJOs 19.4.3. SessionAwareMessageListener 接口 19.4.4. ...
Spring框架是一个轻量级的Java应用开发框架,旨在简化企业级应用的开发过程。它通过提供一系列强大的特性来实现这一目标,比如依赖注入(Dependency Injection, DI)、面向切面编程(Aspect-Oriented Programming, ...
Spring框架是Java开发中不可或缺的一部分,它以其模块化、易用性和灵活性著称。源码分析可以帮助我们深入了解其内部机制,提升我们的编程技能。以下是对标题"spring的jar包源码"和描述"spring的jar包源码"中涉及的...
6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...
五、消息转换器与消息模板 Spring Messaging提供了`MessageConverter`接口,用于在消息体和Java对象之间进行转换。常见的实现有`SimpleMessageConverter`和`Jackson2JsonMessageConverter`,分别支持基本类型和JSON...
- **Spring Integration 如何简化集成开发:** 通过使用标准的 Java POJO 和 Spring Bean 定义,简化了集成应用的开发和维护过程。 #### Part 2 - 消息传递 **3: 消息和通道** - **消息模型:** 解释了 Spring ...
- **@IntegrationConverter**:自定义消息转换器,可以在消息转换过程中进行转换。 - **@EnablePublisher**:用于启用对发布者的支持,能够发送消息到一个或多个订阅者。 - **Redis Channel Message Stores**:使用 ...
Spring Framework 是一个开源的企业级 Java 应用程序框架,旨在简化企业级应用程序的开发过程。它提供了全面的编程模型,使得开发者能够更轻松地构建和维护复杂的应用系统。 **1.2 依赖注入与控制反转** - **1.2.1...