RPC远程过程调用之Hessian 基于HTTP

Hessian使用C/S方式,基于HTTP协议传输,使用Hessian二进制序列化。

添加依赖:

<dependency><groupId>com.caucho</groupId><artifactId>hessian</artifactId><version>4.0.7</version>
</dependency>

服务端使用Web服务tomcat:

<web-app><servlet><servlet-name>HessianServlet</servlet-name><servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class><init-param><param-name>service-class</param-name><param-value>com.itheima.service.impl.UserServiceImpl</param-value></init-param></servlet><servlet-mapping><servlet-name>HessianServlet</servlet-name><url-pattern>/hessianServlet</url-pattern></servlet-mapping></web-app>

注意web-app中的servlet写法

package com.itheima.service;public interface UserService {String sayHello(String name);
}
package com.itheima.service.impl;import com.itheima.service.UserService;public class UserServiceImpl implements UserService {@Overridepublic String sayHello(String name) {return name + "调用了服务端sayHello方法";}
}

Hessian_client

package com.itheima;import com.caucho.hessian.client.HessianProxyFactory;
import com.itheima.service.UserService;import java.net.MalformedURLException;public class HessianMain {public static void main(String[] args) throws MalformedURLException {String url = "http://localhost:8080/hessianServlet";HessianProxyFactory factory = new HessianProxyFactory();UserService service = (UserService) factory.create(UserService.class, url);String hello = service.sayHello("客户端");System.out.println(hello);}
}

注意和RMI一样,都需要将服务端的UserService接口复制到客户端,路径包名要一直,否则报错:

启动Server:

执行客户端main方法

执行结果::

客户端调用了服务端sayHello方法 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EF框架中,在实体中手动更新字段,数据库数据未同步到程序中应该怎么解决呢?

在一些技术不是很强的选手手中&#xff0c;设计数据库时&#xff0c;难免会未考虑到某些字段&#xff0c;只能到后期实现功能时&#xff0c;才能觉察出来数据库中或是少写字段&#xff0c;或是多加了无用的字段&#xff0c;故我们还不得不去数据库中做些手脚。 本文列举的是在…

[.NET跨平台]Jexus独立版本的便利与过程中的一些坑

本文环境与前言 之前写过一篇相关的文章:在.NET Core之前,实现.Net跨平台之MonoCentOSJexus初体验 当时的部署还是比较繁琐的,而且需要联网下载各种东西..有兴趣的可以看看,但是..已经过时了.. 虽然已经出了.NET Core2.0 但是目前是预览版本,而且部署来说 相对比较麻烦. 今…

nacos伪集群安装注意到

1&#xff1a;端口需要隔离开 新版增加GRPC 不要挨着设置ip&#xff0c;否则会出现端口占用。 可以使用 8848 8858 8868 8848GRPC会占用9848 9899 8849&#xff1a; 占用9849 9850 8850&#xff1a; 占用9850 9851 nginx 负载也需要与上述端口 隔离开…

Comparator 和 Comparable

Comparator 和 Comparable 相同点 Comparator 和 Comparable都是java的接口&#xff0c;并且是用来对自定义的class比较大小的。 对于自定义类如&#xff1a;public class Person{ String name; int age }.   当我们有这么一个personList&#xff0c;里面包含了person1, pe…

利用JEXL实现动态表达式编译

转载自 利用JEXL实现动态表达式编译 背景 做项目突然遇到这样的需求: 系统要获取多个数据源的数据&#xff0c;并进行处理&#xff0c;最后输出多个字段。字段的计算规则一般是简单的取值最多加一点条件判断。 而且需要动态变动&#xff01;&#xff01;例如一个字段a的取值…

《四世同堂》金句摘抄(二)

System.out.println("今天读的是什么书呢&#xff1f;"); String bname "《四世同堂》"; System.out.println("今天读的书是&#xff1a;"bname);Console.WriteLine("今天读的是什么书呢&#xff1f;"); String bname "《四世同…

码农不重视文档:开源项目深受其苦

GitHub 刚刚发布了《2017 开源调查》报告&#xff0c;这家知名编程社交网站走访了 github.com 社区内 3800 多个项目和超过 5500 名成员&#xff0c;并且与 500 名在 GitHub 项目生态系统之外的编程者们进行了交谈。本次调查涉及多方面&#xff0c;比如人们在为开源项目做开发、…

kafka监控软件kafka-eagle搭建 web无法访问

https://www.likecs.com/show-204789016.html

《四世同堂》金句摘抄(三)

System.out.println("今天读的是什么书呢&#xff1f;"); String bname "《四世同堂》"; System.out.println("今天读的书还是&#xff1a;"bname);Console.WriteLine("今天读的是什么书呢&#xff1f;"); String bname "《四世…

[翻译]编写高性能 .NET 代码 第一章:性能测试与工具 -- 平均值 vs 百分比

平均值 vs 百分比 在考虑要性能测试的目标值时&#xff0c;我们需要考虑用什么统计口径。大多数人都会首选平均值&#xff0c;但在大多数情况下&#xff0c;这个正确的&#xff0c;但你也应该适当的考虑百分数。但你有可用性的要求&#xff0c;作为性能测试的目标里肯定会有用…

《四世同堂》金句摘抄(四)

System.out.println("今天读的是什么书呢&#xff1f;"); String bname "《四世同堂》"; System.out.println("今天读的书还是&#xff1a;"bname); System.out.println("在摘抄一下");下面是今天的摘抄内容 生在某一种文化中的人&a…

面对枯燥的源码,如何才能看得下去

转载自 面对枯燥的源码&#xff0c;如何才能看得下去 一个软件开发人员&#xff0c;工作到了一定的年限&#xff08;一般是3、4年左右&#xff09;&#xff0c;如果他还没学会阅读源码&#xff0c;那么他就会遇到瓶颈。因为到了这个时候的开发&#xff0c;他应该不仅仅只会做…

前端防xss攻击(去掉空格等能影响和攻击数据库的字段)

用法&#xff1a;把要传给后端的数据放到此能过滤的函数里面即可就能实现自动过滤的功能 eg 代码 export function XSSFilter(str: string) {// 过滤emoji表情str str.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, );// 过滤所有html标签str str.replace(/&l…

《四世同堂》金句摘抄(五)

System.out.println("今天读的是什么书呢&#xff1f;"); String bname "《四世同堂》"; System.out.println("今天读的书还是&#xff1a;"bname); System.out.println("在摘抄一下");他们呆呆的看着他。惊异&#xff0c;怜悯&#…

[深圳/广州]微软SQL技术沙龙分享会(MVP)

[深圳/广州] 新一期俱乐部活动报名开始&#xff0c;这次是广深地区SQL Server 技术沙龙分享会&#xff08;MVP)&#xff0c;SQL Server作为一个数据平台&#xff0c;不管是SQL Server 2017 on Linux 还是把一门开源R语言融入其最赚钱的旗舰商业数据库&#xff0c;微软已经决定&…

搜索时展示的是名字,传给后端的是id

展示普通的select框 const [typeList, setTypeList] useState(["增加","减少"]);<Form.Item name"fruitType" label"类型" rules{[{ required: true }]}><Select style{{width:500}} placeholder"请选择类型">…

IntelliJ IDEA 2018.2 发布,支持 Java 11

转载自 IntelliJ IDEA 2018.2 发布&#xff0c;支持 Java 11 近期&#xff0c;JetBrains发布了其旗舰产品IntelliJ IDEA的2018.2版本。新版本支持即将推出的Java 11、断点意图&#xff08;Breakpoints Intentions&#xff09;、MacBook的Touch Bar等特性&#xff0c;并改进了…

发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner

应用场景 多线程在需要批量处理一些任务的时候相当有用&#xff0c;也更加有利于充分利用现有计算机的能力。所有主流的开发语言都支持多线程。 默认情况下&#xff0c;PowerShell作为一个脚本语言&#xff0c;是不支持多线程操作的&#xff0c;虽然有所谓的后台任务&#xf…

java中,在一个有序数组中插入元素,使得数组保持有序排列

//已知有一个数组&#xff0c;/*数组里面的元素有a b c d e f y z,从控制台中随机输入一个字母&#xff0c;按照升序的顺序插入到该数组中并且遍历输出。*/public static void test1(){String [] str{"a","b","c","d","e",&…