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

Java Spring1.2 Remote Invoke HTTP Invoker

阅读更多

近日,一个项目涉及到系统间接口调用,考虑到系统间用的都是java, spring 技术,建议在可能情况下,与其它系统间接口协议采用Spring支持的HTTP Invoker协议(见http://lee79.iteye.com/blog/344322,http invoker 性能是最高的,webservice是性能最差的)


Spring的版本是基于1.2

 
使用方法:
客户端:
1、web.xml 中加载 spring 配置
    ...

   <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring/*context.xml           
        </param-value>
    </context-param>
    ...


2、spring (agent-context.xml) 中定义
    ...
    <bean id="adFetcher" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
        <property name="serviceUrl" value="${service.adfetch.url}"/>
        <property name="serviceInterface" value="com.test.adapter.AdFetcherIF"/>
        <property name="httpInvokerRequestExecutor">
            <ref local="httpInvokerRequestExecutor"/>
        </property>
    </bean>

     <bean id="cooperateService" class="com.test.client.service.CooperateService" init-method="init">
        <property name="adFetcher">
            <ref local="adFetcher"/>
        </property>
    </bean>

    <bean id="httpInvokerRequestExecutor"
          class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor">
        <property name="httpClient">
            <bean class="org.apache.commons.httpclient.HttpClient">               
                <property name="connectionTimeout" value="${service.connectionTimeout}"/>
                <property name="timeout" value="${service.timeout}"/>
            </bean>
        </property>
    </bean>
    ...

3、代码使用,就像调用本地一样,CooperateService.getAdInfoList
   
服务器端:
1、web.xml中发布
    ....
    <servlet>
        <servlet-name>remote</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/remote.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>remote</servlet-name>
        <url-pattern>/remote/*</url-pattern>
    </servlet-mapping>
    ...

2、spring 远程接口配置文件 remote.xml
    ... 定义
    !--服务器端接口暴露-->
    <bean name="/AdFetch" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
        <property name="service">
            <ref bean="adFetcher"/>
        </property>
        <property name="serviceInterface" value="com.test.adapter.AdFetcherIF"/>
    </bean>
    ...

3、测试服务器端是否可访问,启动后,在浏览器中输入:http://serverip:port/context/remote/AdFetch,如出现,
       java.io.EOFException
    java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
    java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
    则OK

 

4、TestCase:Test.test1()

其它:
客户端使用时,要部署服务器端接口相关的jar包,本便中就是AdFetcherIF.class、AdData.class

 

附件是一个DEMO(包含客户端、服务器端代码)

分享到:
评论

相关推荐

    Java Spring2.5 Remote Invoke HTTP Invoker

    Java Spring 2.5 Remote Invoke HTTP Invoker 是一个基于HTTP协议的远程调用框架,它允许Spring应用通过HTTP协议来调用远程服务。这个技术在分布式系统中非常有用,因为它可以轻松地跨越网络边界,实现服务间的通信...

    Spring HttpInvoker

    Spring HttpInvoker,是一套基于Maven+Spring+SpringMVC+MyBatis框架,还包含了Invoker的客户端及服务器端的demo实例

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

    Spring httpInvoker使用标准java序列化机制,通过Http暴露业务服务。如果你的参数和返回值是比较复杂的,通过httpInvoker有巨大的优势。 1. 远程访问流程 1) 服务端定义服务接口 2) 服务端实现服务接口 3) 暴露服务...

    基于Spring的HttpInvoker实现改写egova_invoker.zip

    基于Spring的HttpInvoker实现改写服务器端调用: HttpInvoker.invoker 方法,设置InvokerProcess处理客户端调用: ProxyFactory.proxy 方法,生成接口的代理对象,直接调用方法客户端和服务器端的接口和实体类要...

    fabric-sdk-java+ springBoot 简单invoke和query引用示例

    这是一个基于spingBoot的项目,通过此项目可以实现对fabric...5,执行QueryChaincode.java,或是InvokeChaincode.java 6,启动web服务:执行DemoApplication.java 详细教程见: https://mp.csdn.net/postedit/88354838

    Java spring AOP源码

    ### Java Spring AOP源码分析 #### 概述 在探讨Spring AOP源码之前,我们首先需要了解Spring AOP的基本概念以及它的工作原理。面向切面编程(Aspect-Oriented Programming, AOP)是一种编程范式,它通过将横切关注...

    详解Java中Method的Invoke方法

    Java 中 Method 的 Invoke 方法详解 Java 中的 Method 对象提供了 invoke 方法,这个方法可以动态地调用 Java 方法。下面详细介绍了 invoke 方法的实现机制。 首先,在调用 invoke 方法之前,需要检查 ...

    Java Method类及invoke方法原理解析

    Java Method类及invoke方法原理解析 Java Method类是Java反射机制中的一个重要组件,它提供了对Java方法的抽象表示和操作能力。通过Method类,可以获取方法的信息、调用方法、设置方法的访问权限等。 Method类的...

    Java动态代理(Spring Aop原理)

    在Spring框架中,AOP(面向切面编程)就是基于Java动态代理来完成的,用于实现横切关注点,如日志、事务管理等。这篇博客的文章链接虽然没有给出具体内容,但我们可以根据Java动态代理和Spring AOP的基本概念来深入...

    java反射机制及Method.invoke解释

    Java 反射机制及 Method.invoke 解释 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的...

    fabric-sdk-java+springBoot invoke和query引用示例

    详细教程请打开https://blog.csdn.net/qq_27348837/article/details/88354838 这是一个基于spingBoot的项目,通过此项目可以实现对fabric网络的简单调用,并且可以启动一个fabric网路的服务,直接在网页上调用.

    spring-rest-invoker:将远程REST服务映射到本地接口的Spring Invoke

    Spring休息祈求者Spring调用程序将远程JSON REST服务绑定到Java接口, 工作方式。 在这些接口上调用方法将向远程服务发出HTTP请求,并将任何对象与JSON(反序列化)。 接口和远程服务之间的具体映射可以通过编程或...

    Spring HttpInvoke实现,以及效率提升!

    1. **数据序列化与反序列化**:默认情况下,Spring HttpInvoke 使用 Java 对象序列化进行数据交换,这可能会成为性能瓶颈。为了提升效率,可以考虑使用更高效的序列化框架,如 Protobuf 或 JSON 格式(如 Jackson 或...

    自定实现Dubbo Invoker

    自己仿dubbo Invoker实现,思想跟dubbo实现一致。。。。。。。。。。。

    JAVA 导出WORD

    在Java编程环境中,导出Word文档是一项常见的任务,特别是在企业级应用中,如报表生成、数据导出等。本文将详细讲解如何使用Java实现Word文档的导出,并着重介绍涉及的库和关键技术。 首先,标题"JAVA 导出WORD"指...

    java反射机制详解及Method.invoke解释.pdf

    Java 反射机制详解及 Method.invoke 解释 Java 反射机制是 Java 语言中的一种功能,允许程序在运行时访问和修改类、对象、方法、变量等的信息。这种机制提供了许多强大的功能,例如在运行时判断对象所属的类、构造...

    Java反射、泛型和注解实战之Spring核心注入IOC的实现

    通过这个实战项目,你可以深入理解Java反射、泛型和注解的用法,并且了解到如何利用它们构建一个基本的依赖注入系统,这将有助于你更好地理解和使用Spring框架。同时,这样的实践也有助于提升你的编程技能,使你能够...

    java中动态代理,springAop.pdf

    Spring AOP(面向切面编程)是Spring框架的一部分,它利用了Java的动态代理机制来实现切面的功能,如日志、事务管理等。下面我们将详细探讨Java动态代理及其在Spring AOP中的应用。 首先,我们来看动态代理的基本...

Global site tag (gtag.js) - Google Analytics