`
longgangbai
  • 浏览: 7330553 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ActiveMQ 和JAXWS整合

 
阅读更多

    在多个系统中可能考虑到远程访问等的,采用WebService方式和远程系统的JMS消息系统交互。本文采用ActiveMQ和JAXWS实现。客户端通过webservice将消息发送给服务端的消息队列。

package easyway.app.activemq.ws;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
/**
 * 服务端接口
 * @author longgangbai
 *
 */
@WebService
public interface HelloWorld {
	/**
	 * 启动相关的服务方法
	 * @param name
	 * @return
	 */
    @WebMethod
    String sayHi(@WebParam(name = "name") String name);
}

 

 

 

 

package easyway.app.activemq.ws;

import javax.jws.WebService;

/**
 * 服务端实现
 * @author longgangbai
 *
 */
@WebService
public class HelloWorldImpl implements HelloWorld {
    /*
     * (non-Javadoc)
     * @see test.IHello#sayHi(java.lang.String)
     */
    public String sayHi(String name) {
        return "Hello " + name;
    }
}

 

 

 

服务端通过WebService发布JMS消息的信息:

package easyway.app.activemq.ws.server;

import javax.xml.ws.Endpoint;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.broker.BrokerService;
import easyway.app.activemq.ws.HelloWorldImpl;

/**
 * 通过WebService提供本地的JMS服务
 * @author longgangbai
 *
 */
public class ActiveMQWServer {
	
    //设置JMS的URI的格式:jms:queue or topic:destination
	private static final String JMS_ENDPOINT_URI = "jms:queue:jaxws.jmstransport.queue?timeToLive=1000"
			+ "&jndiConnectionFactoryName=ConnectionFactory"
			+ "&jndiInitialContextFactory"
			+ "=org.apache.activemq.jndi.ActiveMQInitialContextFactory";

	private ActiveMQWServer() {
	}

	public static void main(String args[]) throws Exception {
		ActiveMQWServer  server=new ActiveMQWServer();
		//初始化Broker的方法
		server.initBrokerService();
		//启动JAXWS相关的 服务
		server.launchJaxwsApi();

		System.out.println("Server ready... Press any key to exit");
		System.in.read();
		System.out.println("Server exiting");
		System.exit(0);
	}
	/**
	 * 启动ActiveMQ的Broker
	 * @throws Exception
	 */
	public void initBrokerService() throws Exception{
		BrokerService  brokerService=new BrokerService();
		brokerService.addConnector( ActiveMQConnectionFactory.DEFAULT_BROKER_BIND_URL);
		brokerService.setDataDirectory("target/activemq-data");
		brokerService.start();
	}


    /**
     * 发布WebService服务
     *
     */
	private  void launchJaxwsApi() {
		Endpoint.publish(JMS_ENDPOINT_URI, new HelloWorldImpl());
	}
}

 

 

 

客户端通过webservice发送消息到服务端的消息队列:

package easyway.app.activemq.ws.client;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import org.apache.cxf.transport.jms.spec.JMSSpecConstants;
import easyway.app.activemq.ws.HelloWorld;
/**
 * 客户端通过WebService向服务端队列中发送消息
 * @author longgangbai
 *
 */
public final class ActiveMQWSClient {
	//WebService请求的url的路径
	private static final String JMS_ENDPOINT_URI = "jms:queue:jaxws.jmstransport.queue?timeToLive=1000"
			+ "&jndiConnectionFactoryName=ConnectionFactory"
			+ "&jndiInitialContextFactory"
			+ "=org.apache.activemq.jndi.ActiveMQInitialContextFactory";
	
    private static final QName SERVICE_QNAME =
        new QName("http://ws.activemq.app.easyway/", "HelloWorldImplService");
    private static final QName PORT_QNAME =
        new QName("http://ws.activemq.app.easyway/", "HelloWorldPort");

    private ActiveMQWSClient() {
    }
    /**
     * 客户端调用WS服务
     * @return
     */
    private static HelloWorld createClientJaxWs() {
    	//创建相关的 服务
        Service service = Service.create(SERVICE_QNAME);
        // Add a port to the Service
        service.addPort(PORT_QNAME, JMSSpecConstants.SOAP_JMS_SPECIFICATION_TRANSPORTID, JMS_ENDPOINT_URI);
        return service.getPort(HelloWorld.class);
    }
    
    public static void main(String[] args) throws Exception {
    	
        HelloWorld client = createClientJaxWs();

        String reply = client.sayHi("HI");
        System.out.println(reply);
    }


}

 

分享到:
评论

相关推荐

    ActiveMQ与spring整合封装

    以上就是ActiveMQ与Spring整合封装的基本过程,通过这样的方式,我们不仅实现了全注解开发,简化了操作,还提高了系统的性能和可扩展性。在实际应用中,还可以根据需求进行更深入的定制,比如添加事务支持、错误处理...

    Spring和ActiveMQ整合的完整实例

    将Spring与ActiveMQ整合,可以轻松地在Spring应用中实现消息队列的功能,提高系统的可扩展性和可靠性。 首先,让我们了解Spring框架如何支持消息传递。Spring提供了JmsTemplate类,这是一个模板类,用于简化发送和...

    activemq与tomcat整合

    整合ActiveMQ和Tomcat的好处在于,它允许Web应用程序利用ActiveMQ的强大功能,如发布/订阅模式和点对点模式的消息传递,以及高可用性和故障恢复能力。同时,由于ActiveMQ是独立于Tomcat运行的,因此可以与其他应用...

    JMS教程+activemq以及activemq和tomcat的整合

    通过整合ActiveMQ和Tomcat,可以在Web应用中充分利用消息队列的优势,实现异步处理、提高系统的可扩展性和可靠性。同时,正确配置持久化消息和Tomcat服务器对于保证服务的稳定性和数据的完整性至关重要。在实际项目...

    activemq与spring整合源代码

    ActiveMQ和Spring的整合是企业级应用中常见的一种技术组合,尤其在分布式系统和微服务架构中,消息队列(Message Broker)如ActiveMQ扮演着至关重要的角色。它能有效地实现系统间的异步通信,提高系统的可扩展性和...

    activeMQ+spring整合

    将ActiveMQ与Spring整合,可以充分利用Spring的便捷性来管理和使用消息队列,使得消息的发送和接收更加简单。 首先,要进行ActiveMQ与Spring的整合,你需要在项目中引入相应的依赖。通常,这可以通过在Maven或...

    activemq和spring整合发布消息和订阅消息demo

    在IT行业中,Apache ActiveMQ和Spring框架的整合是常见的企业级消息传递解决方案。这个"activemq和spring整合发布消息和订阅消息demo"是用于演示如何在Spring环境中配置和使用ActiveMQ来实现实时的数据通信。现在,...

    ActiveMQ与Tomcat整合教程

    在实际应用中,ActiveMQ与Tomcat的整合可以实现应用程序间的异步通信,提高系统的响应速度和可扩展性。通过Topic和Queue,你可以构建发布/订阅模型或者点对点的消息传递模式,从而解耦不同的服务组件,使得系统更加...

    ActiveMQ与Tomcat整合

    将ActiveMQ与Tomcat整合,可以让Tomcat应用利用消息队列实现更高效的通信,提高系统的可扩展性和可靠性。 **一、ActiveMQ简介** ActiveMQ的主要功能包括: 1. **消息队列**: 提供点对点和发布/订阅两种模式的消息...

    activemq与spring整合发送jms消息入门实例

    在Java世界中,ActiveMQ和Spring的整合是企业级应用中常见的消息中间件解决方案,用于实现JMS(Java Message Service)消息传递。本教程将深入探讨如何将这两个强大的工具结合在一起,以创建一个简单的发送JMS消息的...

    Springboot和ActiveMQ的整合实例

    在IT行业中,Spring Boot和ActiveMQ的整合是一个常见的任务,特别是在构建分布式系统和微服务架构时。Spring Boot以其简化配置和快速开发的特性受到广泛欢迎,而ActiveMQ作为一款开源的消息中间件,提供了消息队列...

    activeMQ与spring整合开发的例子程序

    将ActiveMQ与Spring整合可以极大地简化消息队列的使用,提高系统的可维护性和扩展性。 本例子程序的主题是"activeMQ与spring整合开发",这意味着它将展示如何在Spring应用中集成ActiveMQ,以便利用消息队列进行异步...

    Apache ActiveMQ教程 JMS 整合Tomcat

    ### Apache ActiveMQ与JMS整合Tomcat:深入解析与实践 #### 一、Apache ActiveMQ:强大而灵活的开源消息中间件 Apache ActiveMQ作为一款成熟的开源消息中间件,不仅遵循了JMS 1.1规范,还兼容J2EE 1.4以上的标准,...

    activemq与spring整合

    **标题:“ActiveMQ与Spring整合”** 在Java企业级应用中,消息中间件扮演着重要的...提供的activemq_demo示例代码应该包含了整合的完整流程和优化措施,学习和研究这些代码可以帮助我们更好地理解和实践这个过程。

    ActiveMQ与Spring整合示例Demo

    将ActiveMQ与Spring整合,可以方便地在Spring应用中使用消息队列,实现异步处理和分布式通信。 **一、ActiveMQ安装与配置** 在Linux系统中安装ActiveMQ,首先需要下载ActiveMQ的二进制包,解压后将其放置在合适的...

    JMS之ActiveMQ与Spring整合源码

    通过以上知识点的讲解,我们可以看到,ActiveMQ与Spring的整合使得在Java应用中使用JMS变得更加简单和高效。无论是消息的生产还是消费,都能通过Spring的抽象和ActiveMQ的稳定性能得到很好的支持。在实际项目中,...

    java springboot整合activemq工程

    java springboot整合activemq工程 #activemq配置 #默认情况下activemq提供的是queue模式 true是可以使用topic,false是仅使用queue模式 spring.jms.pub-sub-domain: true # 设置连接的activemq服务器 spring....

    springBoot2.0.1、zookeeper、dubbo、activemq、redis整合分布式架构

    在构建分布式架构的过程中,SpringBoot 2.0.1、Zookeeper、Dubbo、ActiveMQ 和 Redis 是五款至关重要的技术组件。它们各自扮演着不同的角色,共同为系统的高效运行和扩展性提供支持。 首先,SpringBoot 2.0.1 是...

Global site tag (gtag.js) - Google Analytics