`

spring3.0和JBoss5.1的JMS集成

    博客分类:
  • J2EE
 
阅读更多

参考 http://blog.csdn.net/liuzhenwen/article/details/3768766

 

注意:Entity中有个Transient标注的属性无法序列化到queue中,可以用一个DTO重新组装对象传送。

 

定我们的Queue文件adServerLog-service.xml

 

<?xml version="1.0" encoding="UTF-8"?>  
<server>  
    <mbean code="org.jboss.mq.server.jmx.Queue"  
           name="jboss.mq.destination:service=Queue,name=adServerQueue">  
        <attribute name="JNDIName">queue/adServerQueue</attribute>  
        <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>      
    </mbean>  
</server>  
 

applicationContext.xml的配置

 

 

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   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   http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
	http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

	<!-- This will automatically locate any and all property files you have 
		within your classpath, provided they fall under the META-INF/spring directory. 
		The located property files are parsed and their values can then be used within 
		application context files in the form of ${propertyKey}. -->
	<context:property-placeholder location="classpath*:META-INF/spring/*.properties" />
	<context:spring-configured />

	<context:component-scan base-package="com.mogenesis">
		<context:exclude-filter expression="org.springframework.stereotype.Controller"
			type="annotation" />
	</context:component-scan>

	<bean class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close" id="dataSource">
		<property name="driverClassName" value="${database.driverClassName}" />
		<property name="url" value="${database.url}" />
		<property name="username" value="${database.username}" />
		<property name="password" value="${database.password}" />
	</bean>

	<bean class="org.springframework.orm.jpa.JpaTransactionManager"
		id="transactionManager">
		<property name="entityManagerFactory" ref="entityManagerFactory" />
	</bean>

	<tx:annotation-driven transaction-manager="transactionManager" />
	<bean
		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
		id="entityManagerFactory">
		<property name="dataSource" ref="dataSource" />
		<property name="persistenceXmlLocation" value="classpath*:/META-INF/persistence-spring.xml" />
		<property name="loadTimeWeaver">
			<bean
				class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
		</property>
	</bean>

	<!-- JMS configure -->
	<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">localhost:1099</prop>
				<prop key="java.naming.factory.url.pkgs">
					org.jnp.interfaces:org.jboss.naming
	           </prop>
			</props>
		</property>
	</bean>

	<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiTemplate">
			<ref bean="jndiTemplate" />
		</property>
		<property name="jndiName">
			<value>XAConnectionFactory</value>
		</property>
	</bean>

	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate102">
		<property name="connectionFactory" ref="jmsConnectionFactory" />
		<property name="defaultDestination" ref="destination" />

		<!-- true for Topic false for Queue -->
		<property name="pubSubDomain">
			<value>false</value>
		</property>
		<!-- message waiting time(ms) -->
		<property name="receiveTimeout">
			<value>30000</value>
		</property>
	</bean>
	<bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiTemplate">
			<ref bean="jndiTemplate" />
		</property>
		<property name="jndiName">
			<value>queue/adServerQueue</value>
		</property>
	</bean>

	<!-- and this is the message listener container -->
	<bean id="jmsContainer"
		class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="jmsConnectionFactory" />
		<property name="destination" ref="destination" />
		<!-- 监听队列的bean声明在注解之中 -->
		<property name="messageListener" ref="adServerJmsQueueListener" />
	</bean>
</beans>
 

 

服务端监听类AdServerJmsQueueListener.java

 

 

package com.mogenesis.mobileadplatform.adserver.log;

import javax.annotation.Resource;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.mogenesis.mobileadplatform.domain.AdRequest;
import com.mogenesis.mobileadplatform.service.adserver.AdMetricsService;

@Service("adServerJmsQueueListener")
public class AdServerJmsQueueListener implements MessageListener {

	@Resource
	private JmsTemplate jmsTemplate;

	@Resource
	private AdMetricsService adMetricsService;

	public void onMessage(Message message) {
		ObjectMessage objMessage = (ObjectMessage) message;
		try {
			AdRequest adRequest = (AdRequest) objMessage.getObject();
			adMetricsService.processAdMetrics(adRequest);
		} catch (JMSException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
 

 

 

客户端操作类AdServerJmsQueueSender.java

 

 

package com.mogenesis.mobileadplatform.adserver.log;
import javax.annotation.Resource;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.ObjectMessage;
import javax.jms.Session;

import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;

import com.mogenesis.mobileadplatform.domain.AdRequest;

@Component
public class AdServerJmsQueueSender {

	@Resource
	private JmsTemplate jmsTemplate;

	public void sendMessage(final AdRequest adRequest) {
		jmsTemplate.send(new MessageCreator() {
			public Message createMessage(Session session) throws JMSException {
				ObjectMessage objMessage = session.createObjectMessage();
				objMessage.setObject(adRequest);
				return objMessage;
			}
		});
	}
}

 

 

 

  在我们需要的组件类中添加

@Resource private AdServerJmsQueueSender adServerJmsQueueSender;

就可以使用了。

 

其中项目jms.jar包和jboss的jms.jar包冲突,所以我把项目中pom.xml文件为,编译的时候使用,次jar包部署的时候不用打包进项目

 

 

<dependency>
			<groupId>jms</groupId>
			<artifactId>jms</artifactId>
			<version>1.1</version>
			<scope>provided</scope>
		</dependency>
分享到:
评论
1 楼 liuwenjun05101 2012-08-08  
为什么我也是这样配置的,但是发送消息的时候,就傻傻的等待着,没有任何反应,这个为什么呢???请赐教

相关推荐

    jboss5.1集群操作说明 apache2.2.4

    JBoss 5.1 是一个基于 Java 的应用服务器,提供了高度可扩展性和高可用性,支持集群部署。集群操作能够使多个 JBoss 实例协同工作,以提高应用程序的性能和容错能力。Apache 2.2.4 是一个常用的开源 Web 服务器,它...

    JBOSS5.1安装配置说明

    JBOSS5.1安装配置说明 JBOSS 是一个基于 Java 的开源应用服务器,可以运行在 Windows、Linux、Unix 等多种操作系统平台上。...通过按照上述步骤进行操作,我们可以成功地安装和配置 JBOSS 5.1 在 Windows 平台下。

    ejb课程测试代码,eclipse+jboss5.1 ant编译等代码

    在这里,它被用来创建、编辑和管理EJB项目,提供了诸如代码提示、调试和集成构建等功能,使得EJB的开发过程更加高效和便捷。 【JBoss 5.1】是一个基于Java EE 5规范的开源应用服务器,它为EJB提供了运行环境。EJB...

    ejb3.0 +jboss4.2 实例开发

    总之,ejb3.0 + jboss4.2 的实例开发涵盖了从环境准备、代码编写、bean 创建、打包到部署的全过程,是学习 EJB 3.0 和 JBoss 集成应用的基础步骤。通过这样的实践,开发者能够更好地理解和掌握企业级 Java 应用的...

    EJB3.0+JBOSS+MyEclipse初体验(完整代码和过程)

    你将找到一个完整的示例,涵盖了上述所有步骤,包括具体的代码片段和执行过程,这对于初学者来说是一个很好的起点,可以快速理解并实践EJB 3.0在JBOSS和MyEclipse环境下的开发流程。通过这个初体验,你可以了解到...

    ejb3.0及JBoss配置运行动画全过程

    理解EJB 3.0和JBoss的配置运行过程对Java EE开发者至关重要,因为这涉及到企业级应用的开发、部署和管理。掌握这一技能可以帮助开发者更好地利用Java EE平台提供的强大功能,构建高效、可扩展的后端系统。

    springmvc4.2+mybatis3.0+jboss

    Spring MVC 4.2 和 MyBatis 3.0 是两个非常重要的Java Web开发框架,它们经常被一起使用来构建高效、灵活的企业级应用程序。在本项目中,这两个框架与JBoss应用服务器相结合,提供了完整的后端解决方案。下面将详细...

    替换两个文件解决Tomcat6项目移植到JBoss5.1下的Logging异常

    除了加入jboss-web.xml,删除xerces-2.6.2.jar和xml-apis.jar之外, &lt;!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"&gt; &lt;jboss-web&gt; &lt;...

    EJB3.0+JBOSS4.2.2GA集群

    JBoss AS 提供了运行企业级Java应用程序所需的基础设施,如安全、事务管理、集群和JMS(Java Message Service)等。 在标题中提到的“集群”是指通过多台服务器来分发负载,提高系统的可用性和可伸缩性。在Java EE...

    servlet3.0+jboss7+jsp+Mysql5.0+IDEA13 登录注册(jar包,css齐全)

    在本项目中,我们主要探讨的是一个基于Servlet 3.0、JBoss 7应用服务器、JSP(JavaServer Pages)、MySQL 5.0数据库以及IntelliJ IDEA 13集成开发环境的登录注册系统。这个系统包含了完整的CSS样式,确保了用户界面...

    jboss-jms包

    【JBoss JMS包详解】 JBoss JMS(Java Message Service)是Red Hat公司开发的JMS实现,它是JBoss Application Server的一...了解和熟练掌握JMS以及其在JBoss环境中的使用,对于提升企业级应用的稳定性和效率至关重要。

    jboss-web-3.0.0-beta-2.zip_beta_jboss_jboss web 3.0_jboss-web

    4. **安全管理**:JBoss Web 3.0.0可能包括了增强的安全特性,如JAAS(Java Authentication and Authorization Service)集成,提供用户认证和授权功能,以保护Web应用程序免受未经授权的访问。 5. **性能优化**:...

    JBOSS建立JMS应用实例

    总结来说,JBOSS中的JMS应用实例涉及了JMS的基本概念、JBOSST的配置、代码编写以及具体的应用场景。通过实践这些步骤,开发者可以掌握如何在JBOSST环境中利用JMS进行高效的数据通信。同时,提供的文档和项目文件为...

    EJB3.0和Spring比较

    EJB3.0允许在不同应用服务器上运行,如JBoss的Hibernate实现和Oracle的TopLink实现。即使EJB3.0规范尚未最终确定,开发者仍可以通过嵌入式EJB3.0产品获得支持。 - 相反,Spring是一个非标准的开源解决方案,使用...

    spring3.0+struts2.0+mybatis3.2+jta+xapool配置文件示例

    本示例"spring3.0+struts2.0+mybatis3.2+jta+xapool配置文件"就是一个典型的Java企业级应用的集成框架,用于实现数据持久层、业务逻辑层以及控制层的整合。以下将详细介绍这些组件及其配置要点。 **Spring 3.0** 是...

    spring-jboss整合

    在JBOSS应用服务器上集成Spring和EJB3.0可以充分利用这两种技术的优势。Spring可以简化EJB3.0组件的配置和管理,同时保持良好的扩展性和可维护性。 - **2.4.2 在JBOSS Application Server 7上的安装** 在JBOSS ...

    Spring与JBoss JBPM工作流集成开发指南

    本指南旨在介绍如何将JBoss JBPM与Spring框架集成,以便更好地管理和自动化业务流程。 #### 二、工作流管理系统的概念 **工作流(Workflow)**: 工作流是指业务过程中的文档、信息或任务按照预定义的规则在参与者...

Global site tag (gtag.js) - Google Analytics