博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring_远程调用
阅读量:5291 次
发布时间:2019-06-14

本文共 3575 字,大约阅读时间需要 11 分钟。

参考文章:

 

例子:远程服务器上提供了计算两个数的和的接口,利用spring的httpinvoker技术在客户端实现远程调用,将计算功能交给服务器来执行,然后服务器将结果返回给客户端。

 

服务器端结构:

 

客户端机构:

其中GetSumService.jar是服务器端提供给客户端使用的接口,用来计算两个数的和。就是服务器端com.yuan.service打出的jar包。

 

服务器端代码分析:

计算接口(TestService.java):

1 package com.yuan.service;2 3 /**4  * @author Caihanyuan5  * @time 2012-10-26 上午10:56:466  */7 public interface TestService {8     public double getSum(double numberA, double numberB);9 }

计算接口的实现(TestServiceImp.java):

1 package com.sunflower.serviceimp; 2  3 import com.yuan.service.TestService; 4  5 /** 6  * @author Caihanyuan 7  * @time 2012-10-26 上午10:57:23 8  */ 9 public class TestServiceImp implements TestService {10 11     @Override12     public double getSum(double numberA, double numberB) {13         return numberA + numberB;14     }15 16 }

在spring配置文件中声明服务的出口(application-context.xml):

1 
2 4
5
7
8
9
10
11
com.yuan.service.TestService
12
13
14 15
16 17

在org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter配置服务的接口和接口的实现。

配置服务器的属性(web.xml):

1 
2
6 7
8
contextConfigLocation
9
/WEB-INF/application-context.xml
10
11 12
13
14 org.springframework.web.context.ContextLoaderListener15
16
17 18 19
20
service
21
org.springframework.web.servlet.DispatcherServlet
22
1
23
24 25 26
27
service
28
/service/*
29
30 31 32 33
34
index.jsp
35
36

第7~10行配置上下文路径,就是服务出口配置文件的路径。12~16行配置转载上下文的监听器。19~29行配置Http请求中服务对应的路径。

配置路径映射(service-servlet.xml):

1 
2 4
5
7
8
9
httpService
10
11
12
13

这个配置文件的名字是有规范的,后缀为-servlet.xml,前缀是上面web.xml中配置的servlet名字。

 

 

客户端代码分析:

配置远程调用代理(application-context.xml):

1 
2 4
5
7
8
http://localhost:80/service/service/httpService
9
10
11
com.yuan.service.TestService
12
13
14

 

测试(Test.java):

1 package com.yuan.test; 2  3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5  6 import com.yuan.service.TestService; 7  8 /** 9  * @author Caihanyuan10  * @time 2012-10-26 上午11:14:0911  */12 public class Test {13     private static ApplicationContext appContext = new ClassPathXmlApplicationContext(14             "application-context.xml");15 16     public static TestService getTestService() {17         return (TestService) appContext.getBean("httpService");18     }19 20     public static void main(String[] args) {21         double numberA = 12.5;22         double numberB = 52.3;23 24         System.out.println("sum of numberA and numberB is:"25                 + getTestService().getSum(numberA, numberB));26 27     }28 }

 

测试结果:

 

源码下载:

转载于:https://www.cnblogs.com/hanyuan/archive/2012/10/27/2740666.html

你可能感兴趣的文章
第一册:lesson seventy nine.
查看>>
GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例
查看>>
团队作业
查看>>
数据持久化时的小bug
查看>>
mysql中key 、primary key 、unique key 与index区别
查看>>
bzoj2257
查看>>
Linux查看文件编码格式及文件编码转换<转>
查看>>
Leetcode: Find Leaves of Binary Tree
查看>>
Vue 模板解释
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>