首页 > 其他分享 >HMdubbo6【dubbo高级:序列化】

HMdubbo6【dubbo高级:序列化】

时间:2022-10-14 23:13:58浏览次数:66  
标签:dubbo HMdubbo6 yppah id User 模块 import 序列化 public

1 理论

消费者A和消费者B分别部署在两台机器上

image-20221014221633542

image-20221014221930569

一般将User类定义为独立模块,A模块和B模块都通过maven依赖于该模块即可

image-20221014222050742

  • dubbo 内部已经将序列化和反序列化的过程内部封装了

  • 只需要在定义pojo类时实现Serializable接口即可

  • 一般会定义一个公共的pojo模块,让生产者和消费者都依赖该模块。

2 实践

image-20221014222335230

image-20221014222352190

image-20221014224627220

package com.yppah.pojo;

import java.io.Serializable;

/**
 * @Author: haifei
 * @Date: 2022/10/14 22:24
 */
public class User implements Serializable {

    private int id;
    private String username;
    private String password;

    // 快捷键:alt + insertwedfd
    public User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public User() {
    }

    // 快捷键:alt + insert
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

image-20221014224735059

image-20221014224753848

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yppah</groupId>
    <artifactId>dubbo-interface</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.yppah</groupId>
            <artifactId>dubbo-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>
package com.yppah.service;

import com.yppah.pojo.User;

/**
 * @Author: haifei
 * @Date: 2022/10/9 0:06
 */
public interface UserService {

    public String sayHello();

    /**
     * 查询用户
     */
    public User findUserById(int id);
}

image-20221014224852128

package com.yppah.service.impl;

import com.yppah.pojo.User;
import com.yppah.service.UserService;
import org.apache.dubbo.config.annotation.Service;
//import org.springframework.stereotype.Service;

/**
 * @Author: haifei
 * @Date: 2022/10/9 0:07
 */
//@Service //定义bean:将该类的对象创建出来,放到spring的IOC容器中
@Service //将该类提供的方法(服务)对外发布,将访问地址(ip,端口,路径)注册到注册中心中(zk)
public class UserServiceImpl implements UserService {

    @Override
    public String sayHello() {
        return "hello dubbo! hihihi";
    }

    @Override
    public User findUserById(int id) {
        // 查询User对象
        User user = new User(1, "zhangsan", "123");
        return user;
    }
}

image-20221014224932877

package com.yppah.controller;

//import com.yppah.service.UserService;
import com.yppah.pojo.User;
import com.yppah.service.UserService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author: haifei
 * @Date: 2022/10/9 0:30
 */
@RestController
@RequestMapping("/user")
public class UserController {

    //@Autowired//本地注入
    /*
        1. 从注册中心zk获取useService的访问url
        2. 进行远程调用RPC
        3. 将结果封装为一个代理对象,并给变量赋值
     */
    @Reference//远程注入
    private UserService userService;

    @RequestMapping("/sayHello")
    public String sayHello(){
        return userService.sayHello();
    }

    /**
     * 根据id查询用户信息
     * @param id
     * @return
     */
    @RequestMapping("/findUser")
    public User findUser(int id){
        return userService.findUserById(id);
    }
}


  • pojo模块被interface模块依赖
  • 而service模块和web模块又依赖于interface模块
  • 所以service模块和web模块间接依赖于pojo模块
  • 启动顺序:pojo模块install,interface模块install,service模块和web模块tomcat-run
  • 注意:被依赖的模块有了改动后,一定要重新install后才能生效

image-20221014225028852

image-20221014225102689

image-20221014225130902

image-20221014225153611

访问<localhost:8000/user/findUser.do?id=1>测试

image-20221014225439269

标签:dubbo,HMdubbo6,yppah,id,User,模块,import,序列化,public
From: https://www.cnblogs.com/yppah/p/16793281.html

相关文章

  • 二叉树的序列化和反序列化
    二叉树的序列化和反序列化作者:Grey原文地址:博客园:二叉树的序列化和反序列化CSDN:二叉树的序列化和反序列化题目链接见:LeetCode297.SerializeandDeserializeBinary......
  • PHP Phar反序列化学习
    PHPPhar反序列化学习PharPhar是PHP的压缩文档,是PHP中类似于JAR的一种打包文件。它可以把多个文件存放至同一个文件中,无需解压,PHP就可以进行访问并执行内部语句。默认开......
  • java反序列化漏洞及其检测
    1java反序列化简介java反序列化是近些年安全业界研究的重点领域之一,在ApacheCommonsCollections、JBoss、WebLogic等常见容器、库中均发现有该类漏洞,而且该类型漏洞容......
  • C#中使用Newtonsoft.Json序列化和反序列化自定义类对象
    C#中使用Newtonsoft.Json序列化和反序列化自定义类对象在C#中序列化和反序列化自定义的类对象是比较容易的,比如像下面的一个Customer类,privateclassCustomer{......
  • Java 序列化
    importjava.io.*;/***Java序列化*Java提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存......
  • Dubbo学习(一)- windows下安装zookeeper
    下载zookeeper下载地址:​​https://www.apache.org/dyn/closer.cgi/zookeeper/​​下载下来zookeeper-3.4.11.tar.gz,解压到当前文件夹修改配置找到zookeeper-3.4.11\conf\zo......
  • Dubbo学习(二)- Dubbo的hello world
    项目说明Dubbo-Demodubbo的消费者,负责调用服务Dubbo-Hello-Api标准api接口,避免服务提供者和消费者书写重复的代码Dubbo-Hello-Servicedubbo的服务者,提供服务共其他应......
  • Java反序列化之C3P0链学习
    0x01前言 再多打一点基础吧,后续打算先看一看 XStream,Weblogic,strusts2 这些个0x02C3P0 组件介绍C3P0 是一个开源的 JDBC 连接池,它实现了数据源和 JNDI 绑定,......
  • 序列化与反序列化
    序列化:是把对象转换为字节序列,永久存到磁盘中。在网络中传输对象也要进行序列化。反序列化:是从磁盘中读取字节序列将它们反序列化成对象读出来。什么是字节序列每一个字......
  • thinkphp5.1反序列化RCE
    thinkphp5反序列化RCEthinkphp5.1.37-5.1.41NewStarCTF第三周Web题目MaybeYouHaveTothinkMoreThinkPHP5框架反序列化RCE正好来研究一下php框架反序列化php反......