zoukankan      html  css  js  c++  java
  • springBoot集成RPC

    需求 : 项目开发到尾期,仓库系统需要对接我们这边的制造系统,

    为的是制造系统所使用物料时,需向仓库系统发送请求物料信息,所以需要调用

    仓库接口.

    使用技术: RPC

    数据传输格式: json

    开发环境:springboot

    1.如何向仓库发送数据?

    注意:发送的数据格式为json  例如 [{"sex":"nan","name":"1111"}] 对象外面需要 [] 直接上代码 

    这里转换json 其实有很多种方法 只要是 [{}]  array格式即可

    1.1发送数据

     @Test
        void contexts() throws Throwable {
    
            Product product = new Product();
            product.setName("1111");
            product.setSex("nan");
            JSONArray jsonArray = new JSONArray();
            jsonArray.add(JSONUtil.parse(product));
            RpcClientUtil.postJsonRPC("http://127.0.0.1:8888/acceptSigned", jsonArray,"acceptSigned");
        }

    1.2 RpcClientUtil.java  工具类方便发送数据自定义封装即可

    import com.googlecode.jsonrpc4j.JsonRpcHttpClient;
    import java.net.URL;

    /**
    * address:要送数据到哪个地址
    * params : json数据
    * methodName: 接口的方法名字
    */
    public class RpcClientUtil {
    public static String postJsonRPC(String address, Object params, String methodName) throws Throwable {
    URL url = null;
    JsonRpcHttpClient jsonRpcHttpClient = null;
    String result = null;
    try {
    url = new URL(address);
    jsonRpcHttpClient = new JsonRpcHttpClient(url);
    result = jsonRpcHttpClient.invoke(methodName, params, String.class);
    } catch (Exception e) {
    throw e;
    } finally {
    url = null;
    jsonRpcHttpClient = null;
    }
    return result;
    }

    }

    2.仓库如何接收数据?

    需要编写接口 @JsonRpcService(value = "acceptSigned")   acceptSigned 远程地址拼接用的

    例如 http://127.0.0.1:8888/acceptSigned 

    2.1接口AcceptSignedAPI.java
    package com.example.rpctest.service;
    
    import com.googlecode.jsonrpc4j.JsonRpcService;
    
    @JsonRpcService(value = "acceptSigned")
    public interface AcceptSignedAPI {
        public void acceptSigned(Object o);
    }

      2.2 接口实现类 注意使用 @AutoJsonRpcServiceImpl   方法名为 acceptSigned

    package com.example.rpctest.service.impl;
    
    import com.example.rpctest.service.AcceptSignedAPI;
    import com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImpl;
    import org.springframework.stereotype.Service;
    
    @Service
    @AutoJsonRpcServiceImpl
    public class AcceptSignedImpl implements AcceptSignedAPI {
    
        @Override
        public void acceptSigned(Object o) {
            System.out.println("222"+o);
        }
    }

    maven 依赖

    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.5.0</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>rpctest</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>rpctest</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--rpc-->
            <dependency>
                <groupId>com.github.briandilley.jsonrpc4j</groupId>
                <artifactId>jsonrpc4j</artifactId>
                <version>1.5.3</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-core -->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.6.6</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.12.3</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.72</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.10</version>
            </dependency>
    
    
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                            </exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    View Code

     注意发送数据格式如下

     成功接收

    个人网址 http://threenut.cn/
  • 相关阅读:
    推荐:VisualStudio 2005/2008的“Consolas”字体包
    [转]Calendar 動態產生子控制項的 Event Handler, 模拟__doPostBack() 回发
    Ajax ToolKit ModelPopupExtender应用经验二则
    [转]Calendar 控件日期复选
    ASP.NET偷懒大法六(可空类型的动态赋值)
    弹出层(Div)屏蔽父窗口并且让父窗口变暗
    CSS巧用expression来区分只读文本框
    formValidator用户注册表单自动验证
    基于Session原理的验证码方案
    jQuery解决IE6下PNG图片背景透明问题
  • 原文地址:https://www.cnblogs.com/july7/p/14888859.html
Copyright © 2011-2022 走看看