spring远程调用:
------------------------
-----------server-----------
1.创建web项目
2.添加spring类库
org.springframework.aop-3.1.0.RELEASE.jar
org.springframework.asm-3.1.0.RELEASE.jar
org.springframework.beans-3.1.0.RELEASE.jar
org.springframework.context-3.1.0.RELEASE.jar
org.springframework.context.support-3.1.0.RELEASE.jar
org.springframework.core-3.1.0.RELEASE.jar
org.springframework.web-3.1.0.RELEASE.jar
org.springframework.web.servlet-3.1.0.RELEASE.jar
org.springframework.expression-3.1.0.RELEASE.jarcom.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
3.创建接口和实现类
public interface WelcomeService {
public void sayHello(String name);
}public class WelcomeServiceImpl implements WelcomeService {
public void sayHello(String name) {
System.out.println(name);
}
}
4.配置spring配置文件.
[web-inf/${servler-name}-servlet.xml]
<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="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/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd "><!-- pojo -->
<bean id="welcomeService" class="cn.itcast.spring.rpc.service.WelcomeServiceImpl" /><!-- 导出器,将pojo对象转变成controller,处理请求 -->
<bean name="/ws.service" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="serviceInterface">
<value>cn.itcast.spring.rpc.service.WelcomeService</value>
</property>
<property name="service" ref="welcomeService" />
</bean>
</beans>-----------client-----------
5.创建java项目
6.引入类库
同服务端.
7.复制服务端接口到客户端.
8.创建src/client.xml spring配置文件
<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="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/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd ">
<!-- 客户端代理 -->
<bean id="wsClient" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl">
<value>http://localhost:8080/lsn_springrpc_0909_server/ws.service</value>
</property>
<property name="serviceInterface">
<value>cn.itcast.spring.rpc.service.WelcomeService</value>
</property>
</bean>
</beans>
9.创建测试类
public class App {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("client.xml");
WelcomeService ws = (WelcomeService) ac.getBean("wsClient");
ws.sayHello("tom");
}
}
10.运行
先启动服务器端
在启动客户端.将项目中的统计服务对外公开,供第三方系统整合
-------------------------------------------
--------- server ---------
1.引入类库
org.springframework.web.servlet-3.1.0.RELEASE.jar
2.配置web.xml文件DispatcherServlet
<!-- 配置spring远程调用使用的分发器servlet -->
<servlet>
<servlet-name>service</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:service-spring-http-inovker.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>service</servlet-name>
<url-pattern>/*.service</url-pattern>
</servlet-mapping>
3.配置spring远程调用配置文件
[conf/service-spring-http-invoker.xml]
<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="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/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd "><!-- 远程调用统计服务类 -->
<bean name="/ss.service" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="serviceInterface" value="cn.itcast.surveypark.service.StatisticsService" />
<property name="service" ref="statisticsService" />
</bean>
</beans>------- client ----------
4.添加客户端配置bean.
<!-- 客户端代理 -->
<bean id="ssClient" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl">
<value>http://localhost:8000/lsn_surveypark0909/ss.service</value>
</property>
<property name="serviceInterface">
<value>cn.itcast.surveypark.service.StatisticsService</value>
</property>
</bean>
5.测试
spring 远程调用
时间: 2024-10-12 23:59:46
spring 远程调用的相关文章
(转)Spring 远程调用工具类RestTemplateUtils
出处:https://www.cnblogs.com/jonban/p/rest.html Spring 远程调用Rest服务工具类,包含Get.Post.Put.Delete四种调用方式. 依赖jar <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.9.RELEASE<
Spring远程调用技术<;3>;-Spring的HTTP Invoker
前面提到RMI使用java标准的对象序列化机制,但是很难穿透防火墙. 另一方面,Hessian和Burlap能很好地穿透防火墙,但是使用私有的对象序列化机制. Spring提供的http invker是一个新的远程调用模型,作为Spring框架的一部分,能够执行基于HTTP的远程调用(让防火墙不为难),并使用java的序列化机制(让开发者也乐观其变). Spring的HTTPinvoker把HTTP的简单性和java内置的对象序列化机制融合在一起.这使得HTTPinvoker成为替代RMI H
Spring远程调用HTTP invoker
前言 在日常的工作中,会有客户端调用远程服务端接口的需求,这样的需求实现,在网上查到有像RMI.hessian.Burlap等,下文给出HTTP Invoker实现远程调用,他不用使用者考虑对象序列化的问题,对使用者,非常的友好. 下面介绍在Spring中配置HTTP Invoker实现远程调用.分为服务提供方和服务消费方两部分. 案例 服务提供方 1.定义一个接口和接口实现类,服务提供方提供. WelcomeService.java package com.aaron.service; imp
Spring 远程调用工具类RestTemplateUtils
RestTemplateUtils.java package utils; import java.util.Map; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import or
Spring HttpIvoker实现Java的远程调用
Spring HttpInvoker一种JAVA远程方法调用框架实现,使用的是HTTP协议,允许穿透防火墙,使用JAVA系列化方式,但仅限于Spring应用之间使用,即调用者与被调用者都必须是使用Spring框架的应用.基本原理如下: 在server端,springAOC管理着controller(bean),并暴露出远程调用的接口.在Client端,借助spring产生一个代理对象,通过代理对象实现与服务端的交互. 服务器端配置 1. 加入jar包 2. 在.xml中配置spring远程调用的
Spring使用Hessian实现远程调用
1.Spring中除了提供HTTP调用器方式的远程调用,还对第三方的远程调用实现提供了支持,其中提供了对Hessian的支持. Hessian是由Caocho公司发布的一个轻量级的二进制协议远程调用实现方案,Hessian也是基于HTTP协议的,其工作原理如下: (1).客户端: a.发送远程调用请求: 客户端程序->发送远程调用请求->Hessian客户端拦截器->封装远程调用请求->Hessian代理->通过HTTP协议发送远程请求代理到服务端. b.接收远程调用响应:
Hessian怎样实现远程调用
1.Spring中除了提供HTTP调用器方式的远程调用,还对第三方的远程调用实现提供了支持,其中提供了对Hessian的支持. Hessian是由Caocho公司发布的一个轻量级的二进制协议远程调用实现方案,Hessian也是基于HTTP协议的,其工作原理如下: (1).客户端: a.发送远程调用请求: 客户端程序—>发送远程调用请求—>Hessian客户端拦截器—>封装远程调用请求—>Hessian代理—>通过HTTP协议发送远程请求代理到服务端. b.接收远程调用响应:
使用Spring RMI调用远程方法
Spring有多种调用远程的方式,今天学习了一下远程方法调用(RMI). RMI需要服务端和客户端 我们先从服务器开始 我的代码结构 package rmi; public interface ServerRmiI { public String sayHi(String name); } package rmi; public class ServerRmiImpl implements ServerRmiI{ public String sayHi(String name) { return
【spring源码学习】spring的远程调用实现源码分析
[一]spring的远程调用提供的基础类 (1)org.springframework.remoting.support.RemotingSupport ===>spring提供实现的远程调用客户端实现的基础类 ===>例子:org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean org.springframework.remoting.caucho.HessianProxyFactoryBean (2)org.