当前位置: 首页 > news >正文

沭阳网站制作今日国际新闻事件

沭阳网站制作,今日国际新闻事件,网站建设越来越难做,客服云系统平台为什么学习Hessian RPC? 存粹的RPC,只解决PRC的四个核心问题(1.网络通信2.协议 3.序列化 4.代理)Java写的HessianRPC落伍了,但是它的序列化方式还保存着,被Dubbo(Hessian Lite)使用。 被落伍,只…

为什么学习Hessian RPC?

  • 存粹的RPC,只解决PRC的四个核心问题(1.网络通信2.协议 3.序列化 4.代理)
  • Java写的
  • HessianRPC落伍了,但是它的序列化方式还保存着,被Dubbo(Hessian Lite)使用。
    被落伍,只是因为Hessian RPC出的比较早,当时没有注册中心,熔断,限流等。所以当我们学习PRC时,最好学一个简单的,存粹的,没有其他的额外功能。

Hessian 的概念

Hession 是Resin服务器的伴生产品。基于Java编程语言设计的RPC框架,只支持Java编程语言使用,现在新出的gRPC Thrift,支持多语言。Hessian的序列化是二进制的。

Hessian设计思想

Hessian使用的resin服务器,类似于Tomcat,使用的是HTTP协议,由于使用的是JDK做代理,所以必须要用接口定义调用类。对象的数据类型,必须要实现Serliazble。服务的发布需要使用HessanServlet进行配置,在web.xml进行配置。
那么如何进行调用配置的服务,客户端进行代理,HessianProxyFactory做代理服务。
PRC调用

RPC的开发

引入依赖

<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.1</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.32</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.9</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></dependency><dependency><groupId>com.caucho</groupId><artifactId>hessian</artifactId><version>4.0.38</version></dependency>
</dependencies>

开发服务端

1. 开发Service
2. DAO --- Mybaits
注意:一定要定义Service的接口,自定义的数据类型实现Serliazliable

模拟一下登录功能:
实体类

@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {private static final long serialVersionUID = 1L;private String name;private String password;
}

Service

public interface UserService {public boolean login(String username,String password);public void register(User user);}

ServrceImpl

@Slf4j
public class UserServiceImpl implements UserService {@Overridepublic boolean login(String username, String password) {log.debug("login method invoke name {} password {}",username,password);return false;}@Overridepublic void register(User user) {log.debug("register method invoke user {}",user);}
}

配置web.xml

 <servlet><servlet-name>userServiceRPC</servlet-name><servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class><init-param><param-name>home-api</param-name><param-value>com.liu.service.UserService</param-value></init-param><init-param><param-name>home-class</param-name><param-value>com.liu.service.UserServiceImpl</param-value></init-param></servlet><servlet-mapping><servlet-name>userServiceRPC</servlet-name><url-pattern>/userServiceRPC</url-pattern></servlet-mapping>

客户端开发

@Slf4j
public class HessianRPCClient {public static void main(String[] args) throws MalformedURLException {// TODOHessianProxyFactory factory = new HessianProxyFactory();String urlName = "http://localhost:8080/rpc_hessian/userServiceRPC";UserService userService = (UserService) factory.create(UserService.class, urlName);boolean login = userService.login("liu", "123456");log.debug("userService value is {}",login);}
}

HessianRPC核心源码分析

1. HessianRPC client创建代理的方式 JDK Proxy.newProxyInstance()public Object create(Class<?> api, URL url, ClassLoader loader){if (api == null)throw new NullPointerException("api must not be null for HessianProxyFactory.create()");InvocationHandler handler = null;handler = new HessianProxy(url, this, api);return Proxy.newProxyInstance(loader,new Class[] { api,HessianRemoteObject.class },handler);}2. 代理中   通过网络 Http请求 连接 远端RPC服务通过流 数据写出去了。HessianProxy#invoke()  1.通过 URLConnection 进行网络连接 2.解析协议 传递数据

Hessian序列化

前面说了,Hessian已经落伍了,但他的序列化方式还保留着,我们看看怎么使用的。

  // 1. 序列化OutputStream  outputStream = new FileOutputStream("D:\\StudyCodes\\rpc_lession\\rpc_hessian\\test");Hessian2Output hessian2Output = new Hessian2Output(outputStream);hessian2Output.writeObject(new User("liu", "123456"));hessian2Output.flush();outputStream.close();// 2. 反序列化InputStream inputStream = new FileInputStream("D:\\StudyCodes\\rpc_lession\\rpc_hessian\\test");Hessian2Input hessian2Input = new Hessian2Input(inputStream);User user = (User) hessian2Input.readObject();System.out.println(user);inputStream.close();log.info("user: {}", user);
http://www.ds6.com.cn/news/42775.html

相关文章:

  • 制作图片模板小红书seo排名规则
  • 360做企业网站多少钱网络营销乐云seo
  • 网站开发快递文件seo如何快速出排名
  • 企业网站建设宣贯南京百度提升优化
  • 公司营销网站怎么做网站查询地址
  • 网站建设企业宣传口号打开百度首页
  • 做玻璃瓶的网站合肥网络关键词排名
  • 做代购网站有哪些求几个微信推广平台
  • 东莞网站视频舆情分析网站
  • 大公司做网站的优势网站站长工具
  • 莱芜 网站seo查询是什么
  • win7云主机怎么做网站网站收录免费咨询
  • 镇网站建设管理工作总结网站制作哪家公司好
  • 福田做棋牌网站建设哪家好色盲悖论
  • wap html网站模板seo的工具有哪些
  • 温州建设网站制作营销必备十大软件
  • 智慧团建注册登录入口下载湖南专业关键词优化服务水平
  • 莱西做网站百度关键词优化培训
  • 深圳有什么做招聘网站的公司吗收录网站查询
  • 找外包网站 和自己做最吸引人的营销广告文案
  • 网站建设 淘宝客末班郑州网络营销学校
  • 公司网站建设行业怎么样自建站seo如何做
  • 做动态网站的步骤手机版百度一下
  • web网站开发的流程图推广赚钱app哪个靠谱
  • 华人国际婚恋网站建设方案网站设计的基本原则
  • 怎样使自己做的网站上线看片应该搜什么关键词哪些词
  • 北川建设局网站优化设计三年级上册语文答案
  • 网站如何做品牌营销关键词分析软件
  • 网站字体设计规范b站推广网站mmmnba
  • 快速搭建网站域名绑定设置谷歌独立站