`
m635674608
  • 浏览: 5041990 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

jms客户端与服务端暴露接口与调用

    博客分类:
  • MQ
 
阅读更多

1.6. JMS
 
使用JMS来作为底层的通信协议透明暴露服务也是可能的。Spring框架中对JMS的远程支持也很基础 - 它在同一线程和同一个非事务 Session上发送和接收,这些吞吐量将非常依赖于实现。
The following interface is used on both the server and the client side.
下面的接口可同时用在服务端和客户端。
package com.foo;

public interface CheckingAccountService {

    public void cancelAccount(Long accountId);
}
对于上面接口的使用在服务的端简单实现如下。
package com.foo;

public class SimpleCheckingAccountService implements CheckingAccountService {

    public void cancelAccount(Long accountId) {
        System.out.println("Cancelling account [" + accountId + "]");
    }
}
这个包含JMS设施的bean的配置文件可同时用在客户端和服务端。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://ep-t43:61616"/>
    </bean>

    <bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg value="mmm"/>
    </bean>

</beans>
1.6.1. 服务端配置
 
在服务端你只需要使用JmsInvokerServiceExporter来暴露服务对象。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="checkingAccountService"
          class="org.springframework.jms.remoting.JmsInvokerServiceExporter">
        <property name="serviceInterface" value="com.foo.CheckingAccountService"/>
        <property name="service">
            <bean class="com.foo.SimpleCheckingAccountService"/>
        </property>
   </bean>

   <bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
       <property name="connectionFactory" ref="connectionFactory"/>
       <property name="destination" ref="queue"/>
       <property name="concurrentConsumers" value="3"/>
       <property name="messageListener" ref="checkingAccountService"/>
   </bean>

</beans>
package com.foo;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Server {

    public static void main(String[] args) throws Exception {
        new ClassPathXmlApplicationContext(new String[]{"com/foo/server.xml", "com/foo/jms.xml"});
    }
}
1.6.2. 客户端配置
 
客户端仅仅需要创建一个客户端代理来实现上面的接口(CheckingAccountService)。根据后面的bean定义创建的结果对象可以被注入到其它客户端对象中,而这个代理会负责通过JMS将调用转发到服务端。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="checkingAccountService"
          class="org.springframework.jms.remoting.JmsInvokerProxyFactoryBean">
        <property name="serviceInterface" value="com.foo.CheckingAccountService"/>
        <property name="connectionFactory" ref="connectionFactory"/>
        <property name="queue" ref="queue"/>
    </bean>

</beans>
package com.foo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Client {

    public static void main(String[] args) throws Exception {
        ApplicationContext ctx = new ClassPathXmlApplicationContext(
                new String[] {"com/foo/client.xml", "com/foo/jms.xml"});
        CheckingAccountService service = (CheckingAccountService) ctx.getBean("checkingAccountService");
        service.cancelAccount(new Long(10));
    }
}
你可能也希望研究Lingo 项目提供的支持,它(引用到主页) “... 是一个基于轻量级POJO的远程核消息代码库,它使用并扩展了Spring框架的远程代码库以支持JMS。”

分享到:
评论

相关推荐

    CXF与web项目服务端整合的例子以及客户端调用详细说明

    1. 创建服务代理:客户端首先需要通过JAX-WS或JAX-RS API创建服务代理对象,这将暴露与服务端相同的接口。CXF提供了工具,如wsdl2java,可以自动生成这些代理类。 2. 调用服务:通过服务代理对象,客户端可以像调用...

    JMS远程调用

    这个bean将服务接口和其实现绑定到JMS队列,使得客户端可以通过发送消息到队列来触发服务端的方法执行。 在客户端,我们需要创建一个消息生产者,它负责包装调用请求为JMS消息,并将其发送到服务端的队列。服务端则...

    webservice接口调用

    在服务端,你可以使用Axis将Java类或者Java接口转换为Web服务,而客户端则可以通过WSDL(Web服务描述语言)文件生成客户端 stubs 来调用服务。Axis还支持多种协议,如HTTP、HTTPS和JMS,以及多种数据绑定机制,如...

    springboot 和cfx 集成服务端代码

    客户端通过CXF的客户端API与服务端进行通信,调用服务端提供的接口,传递参数,接收返回结果。客户端通常会包含服务代理的创建、调用方法和处理响应的代码。 6. 服务调用流程: - 客户端通过服务地址(如URL)获取...

    CXF服务端和客户端 应用开发指南

    ### CXF服务端和客户端应用开发指南:详细解析与实践 #### 一、CXF概述与应用场景 CXF(Camel XFire Framework)是Apache软件基金会的一个开源项目,旨在简化Web Services的开发过程,提供了一个强大的框架来创建...

    CXF开发完整包,版本一致,可用作服务端和客户端

    这个"CXF开发完整包"包含了所有你需要的组件,确保版本一致,无论是用于服务端部署还是客户端调用。CXF允许开发者通过Java编程模型来创建和消费Web服务,使得API的开发和使用变得更加简单。 1. **CXF简介** Apache...

    Spring 实现远程访问详解——rmi

    Spring为各种远程访问技术提供集成工具类。Spring远程访问通过使用普通POJOs,能更容易的开发远程访问服务。... 客户端定义与服务端已暴露的相同接口 4). 客户端通过RmiProxyFactoryBean调用服务接口

    web service调用与发布技术

    Web服务调用与发布技术是IT领域中一种重要的通信机制,它允许不同的应用程序之间通过互联网进行数据交换和功能共享。Web服务基于开放标准,如XML(可扩展标记语言)、SOAP(简单对象访问协议)和WSDL(Web服务描述...

    HttpInvoker Sample

    HttpInvoker是Spring框架中的一种远程调用机制,主要用于在分布式系统中实现服务间的通信...通过阅读和运行这个示例,你可以掌握配置、客户端调用和服务端暴露服务的基本步骤,进一步提升你在分布式系统开发中的技能。

    rpc的简单实现.docx

    - **服务引用(Service Reference)**:`RpcExample.reference()`方法在客户端创建一个`Socket`连接到服务端,通过动态代理创建接口的实例,所有对这个接口的调用都会被转发到服务端执行。 4. **消息中间件:** -...

    cxf开发教程2

    首先,需要定义服务接口和实现,然后使用CXF的注解或者XML配置来暴露这个服务。CXF会自动生成WSDL文件,描述服务的接口和操作。最后,启动服务器监听指定端口,等待客户端的请求。 **客户端开发** "Cxf_Client...

    CXF创建webService接口

    本篇文章将深入探讨如何使用CXF创建Web服务接口,包括服务端和客户端的构建,并提供详细的步骤和文档。 1. **服务端创建** - 首先,我们需要定义服务接口。这通常是一个Java接口,其中包含了我们希望暴露为Web服务...

    rmi.rar_RMI java_basic rmi

    - **远程接口(Remote Interface)**:定义了远程对象需要暴露给客户端调用的方法。这些接口必须继承自java.rmi.Remote接口。 - **远程实现(Remote Implementation)**:实现了远程接口的具体类,包含了业务逻辑...

    shell-plus工具

    Shell Plus 是一款基于RMI(Remote Method Invocation,远程方法调用)技术的服务器管理工具,主要由服务端、注册中心和客户端三部分构成。这款工具主要用于合法的服务器管理和攻防后门安全测试,严禁用于非法活动。...

    Java远程方法调用(RMI)

    RMI是分布式计算的基础,广泛应用于构建分布式应用系统,如服务器端与客户端之间的交互。本篇文章将深入探讨RMI的工作原理、实现步骤以及相关示例。 一、RMI工作原理 1. 注册表:RMI的核心是注册表,它是一个全局的...

    这是cxf的例子(代码)

    客户端用于调用服务端提供的Web服务。在CXF中,客户端可以通过WSDL(Web服务描述语言)文件生成服务代理,这个代理就像服务的本地代理,使得调用远程服务如同调用本地方法一样简单。也可以通过动态客户端API直接构造...

    web service入门学习笔记

    服务端实现这个接口并暴露为Web Service,客户端通过SOAP请求调用这个服务,接收返回的问候消息。 1. 服务端: - 使用JAX-WS(Java API for XML Web Services)创建Web Service。JAX-WS是Java标准版的一部分,提供...

    XfireWebService实例源码

    这个实例源码提供了一个完整的示例,包括服务端的配置和服务的实现,以及客户端如何通过Web页面和JavaScript进行调用。 1. **Xfire框架**:Xfire是Apache CXF的前身,它提供了快速构建SOAP Web服务的能力。它的核心...

    RMI 简单示例-Java Remote Methods Invocation

    在这个例子中,我们有一个服务端,它暴露了一个远程接口,以及一个客户端,该客户端能够调用服务端的方法。 1. **RMI的基本概念**: - **远程接口**:这是定义远程方法的Java接口,需要使用`java.rmi.Remote`作为...

    jacorb学习材料

    - **JMS集成**:通过CORBA的GIOP协议,JacORB可以与Java消息服务(JMS)结合,实现消息驱动的分布式应用。 - **Web服务集成**:可以通过JacORB的WS-IF支持,将CORBA对象暴露为Web服务,或者消费Web服务。 ### 6. ...

Global site tag (gtag.js) - Google Analytics