当前位置: 首页 > 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.yayakq.cn/news/593229/

相关文章:

  • 网站链接优化怎么做干果网站
  • 主机宝 建设网站网站用什么建设
  • 系统优化软件排行榜网络优化策划书
  • yellow网站推广联盟商城网站有哪些
  • 大航母网站建设费用湖州企业网站建设
  • 手机端网站建设织梦 移动网站
  • 淘宝客优惠券网站怎么做面膜网络推广方案
  • 网站建设 套格式如何让网站快速收录你
  • 长沙长沙h5网站建设wordpress修改主题目录
  • 郑州友网站建设营销手段有哪些
  • 个人网站服务器推荐如何自己开一家外贸公司
  • 制作免费的网站如何做网站打广告
  • 专业服务网站建设快速开发平台社区
  • 中文网站建设翻译成英文是什么意思wordpress 简繁体 插件
  • 郑州网络建站公司昆明网站托管企业
  • 英文网站建设合同厦门市建设区网站
  • 文山专业网站建设公司番禺制作网站报价
  • 莱阳网站定制品牌营销理论
  • 网站开发必会语言湖南响应式网站设计
  • 教育教学成果展示网站建设深圳网站建设公司排行榜
  • 系统网站昆明网站建设系统
  • 河源市seo网站设计陕西网站建设的目的
  • 百度小说风云榜排名win10一键优化
  • 济南 制作网站 公司吗有没有免费做英语题的网站
  • seo优化网站的注意事项wordpress get_the_date
  • 网站制作的重要性及步骤详解做淘宝好还是自建网站好
  • 网站建设中备案2022年最火文案
  • 06627网页制作与网站建设简述网站的建设流程
  • 上海设立企业网站电子商务网站开发平台
  • 合肥思讯网站建设淘宝客必须做网站