近日,一个项目涉及到系统间接口调用,考虑到系统间用的都是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 Spring 2.5 Remote Invoke HTTP Invoker 是一个基于HTTP协议的远程调用框架,它允许Spring应用通过HTTP协议来调用远程服务。这个技术在分布式系统中非常有用,因为它可以轻松地跨越网络边界,实现服务间的通信...
Spring HttpInvoker,是一套基于Maven+Spring+SpringMVC+MyBatis框架,还包含了Invoker的客户端及服务器端的demo实例
Spring httpInvoker使用标准java序列化机制,通过Http暴露业务服务。如果你的参数和返回值是比较复杂的,通过httpInvoker有巨大的优势。 1. 远程访问流程 1) 服务端定义服务接口 2) 服务端实现服务接口 3) 暴露服务...
基于Spring的HttpInvoker实现改写服务器端调用: HttpInvoker.invoker 方法,设置InvokerProcess处理客户端调用: ProxyFactory.proxy 方法,生成接口的代理对象,直接调用方法客户端和服务器端的接口和实体类要...
这是一个基于spingBoot的项目,通过此项目可以实现对fabric...5,执行QueryChaincode.java,或是InvokeChaincode.java 6,启动web服务:执行DemoApplication.java 详细教程见: https://mp.csdn.net/postedit/88354838
### Java Spring AOP源码分析 #### 概述 在探讨Spring AOP源码之前,我们首先需要了解Spring AOP的基本概念以及它的工作原理。面向切面编程(Aspect-Oriented Programming, AOP)是一种编程范式,它通过将横切关注...
Java 中 Method 的 Invoke 方法详解 Java 中的 Method 对象提供了 invoke 方法,这个方法可以动态地调用 Java 方法。下面详细介绍了 invoke 方法的实现机制。 首先,在调用 invoke 方法之前,需要检查 ...
Java Method类及invoke方法原理解析 Java Method类是Java反射机制中的一个重要组件,它提供了对Java方法的抽象表示和操作能力。通过Method类,可以获取方法的信息、调用方法、设置方法的访问权限等。 Method类的...
在Spring框架中,AOP(面向切面编程)就是基于Java动态代理来完成的,用于实现横切关注点,如日志、事务管理等。这篇博客的文章链接虽然没有给出具体内容,但我们可以根据Java动态代理和Spring AOP的基本概念来深入...
Java 反射机制及 Method.invoke 解释 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的...
详细教程请打开https://blog.csdn.net/qq_27348837/article/details/88354838 这是一个基于spingBoot的项目,通过此项目可以实现对fabric网络的简单调用,并且可以启动一个fabric网路的服务,直接在网页上调用.
Spring休息祈求者Spring调用程序将远程JSON REST服务绑定到Java接口, 工作方式。 在这些接口上调用方法将向远程服务发出HTTP请求,并将任何对象与JSON(反序列化)。 接口和远程服务之间的具体映射可以通过编程或...
1. **数据序列化与反序列化**:默认情况下,Spring HttpInvoke 使用 Java 对象序列化进行数据交换,这可能会成为性能瓶颈。为了提升效率,可以考虑使用更高效的序列化框架,如 Protobuf 或 JSON 格式(如 Jackson 或...
自己仿dubbo Invoker实现,思想跟dubbo实现一致。。。。。。。。。。。
在Java编程环境中,导出Word文档是一项常见的任务,特别是在企业级应用中,如报表生成、数据导出等。本文将详细讲解如何使用Java实现Word文档的导出,并着重介绍涉及的库和关键技术。 首先,标题"JAVA 导出WORD"指...
Java 反射机制详解及 Method.invoke 解释 Java 反射机制是 Java 语言中的一种功能,允许程序在运行时访问和修改类、对象、方法、变量等的信息。这种机制提供了许多强大的功能,例如在运行时判断对象所属的类、构造...
通过这个实战项目,你可以深入理解Java反射、泛型和注解的用法,并且了解到如何利用它们构建一个基本的依赖注入系统,这将有助于你更好地理解和使用Spring框架。同时,这样的实践也有助于提升你的编程技能,使你能够...
Spring AOP(面向切面编程)是Spring框架的一部分,它利用了Java的动态代理机制来实现切面的功能,如日志、事务管理等。下面我们将详细探讨Java动态代理及其在Spring AOP中的应用。 首先,我们来看动态代理的基本...