Java springboot 整合ice协议的demo

1 篇文章 0 订阅

最近有个调接口的需求, 我用的Java   接口服务端用的 c++ .

 

先引入jar包 ice3.7.4 jar包

<dependency>
   <groupId>com.zeroc</groupId>
   <artifactId>ice</artifactId>
   <version>3.7.4</version>
</dependency>

<dependency>
   <groupId>com.zeroc</groupId>
   <artifactId>icebox</artifactId>
   <version>3.7.4</version>
</dependency>

 

然后在项目下新建目录slice,  配置一个.ice 的配置文件

 

因为是Java后台, 要下载一个ice的编译工具, 将.ice文件编译成Java代码.   下载链接我也忘了百度搜一下, 这个东西下载很慢.

安装好后,好像是自动配置环境变量的, 可以自己看看环境变量,没有就手动在PATH里配置一个.

slice2java -v 一下看看安装好了没

 

然后到.ice 的文件所在目录下 打开CMD,输入编译命令  slice2java .\MyIce.ice --output-dir ..\..\src\main\java

 

他会自动编译出对应的Java代码在你的项目里, .ice配置里要配你的包名和文件名.

 

编写客户端调用接口的代码

    //初始化容器   
    Communicator communicator = null;
    // 初始化ice通信器 设置超时时间
    communicator = Util.initialize();
 

    // 传入远程服务单元的ice对象标识符
    ObjectPrx objectPrx = 
             communicator.stringToProxy("QUER_Controller:default -h 127.0.0.1 -p 10006");
        
    // 检验是否连接上
    MyIcePrx myIcePrx = MyIcePrx.checkedCast(objectPrx);
    if(myIcePrx==null){
        System.err.println("未连接上");
    }
    //传参调用方法
    String response = myIcePrx.sayMyIce(jsonObject.toJSONString());
    //响应
    System.out.println("接收成功:"+response);




 

编写服务端暴露接口代码

接口的实现类

package com.nanyang.service.impl;

import com.nanyang.bean.FuseRule;
import com.nanyang.rain.MyIce;
import com.zeroc.Ice.Current;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author Arlen
 * @Description
 * @Date 2020/9/20 14:27
 */
@Service
@Transactional
public class MyIceImpl implements MyIce {
    private Logger log = Logger.getLogger(this.getClass().getSimpleName());

    @Override
    public String sayMyIce(String jsonstr, Current current) {

        log.info("ice的具体实现已被调用...."+jsonstr);

        return "Hello_ice: ";
    }
}


main方法

public static void main(String[] args) throws Exception{
        int state = 0;
        Communicator communicator = null;
        try {
            // 初始化ICE通信器communicator,可以使用args传入ice初始化的参数,如:超时时间、线程池的大小等
            communicator = Util.initialize(args);
            // 撞见一个名为queryEmployeeAdapter的适配器 并且默认使用tcp协议 部署在10.0.0.1机器上 服务开启10006监听端口
            ObjectAdapter adapter = communicator.createObjectAdapterWithEndpoints("queryServer", "default -h 127.0.0.1 -p 10006");
            // 创建服务端代码实现实现类
            MyIceImpl myIce = new MyIceImpl();
            // 将服务端实现类与ice对象标识符简历映射关系,并添加到ice对象适配器中
            adapter.add(myIce, Util.stringToIdentity("QUER_Controller"));
            // 激活对象适配器
            adapter.activate();
            System.out.println("queryServer已经激活");
            // 服务在退出之前一直保持监听状态
            communicator.waitForShutdown();
        } catch (Exception e) {
            state = 1;
            System.out.println(e);
            e.printStackTrace();
        }finally {
            if (communicator != null) {
                communicator.destroy();
            }
        }
        System.out.println("state:" + state);

    }

 

记录一下自己的工作经验.

 

 

 

在Spring Boot项目中使用Ice框架时,可以按照以下步骤进行配置和集成: 1. 添加Ice依赖:在项目的pom.xml文件中,添加Ice的Maven依赖。根据你的需求,可以选择添加Ice的Core、Spring Boot Starter或其他相关模块的依赖。 2. 配置Ice连接信息:在Spring Boot的配置文件(application.properties或application.yml)中,添加Ice连接相关的配置项。通常包括服务端的主机名、端口号、协议等信息。 3. 创建Ice服务接口:定义Ice服务接口,可以使用Slice语言来描述接口定义。 4. 实现Ice服务接口:编写Ice服务接口的实现类,并在类上使用`@IceServer`注解进行标记。 5. 配置Ice服务:在Spring Boot的配置类中,使用`@IceServerScan`注解扫描Ice服务实现类,并将其注册为Ice服务。 6. 启动应用程序:运行Spring Boot应用程序,Ice服务将会自动启动并监听指定的端口。 通过以上步骤,你就可以在Spring Boot项目中成功集成Ice框架,并使用Ice提供的功能进行远程调用了。其中,Ice框架是一个基于标准化协议的通信中间件,它可以帮助你在分布式系统中实现高性能、可靠的远程调用。Ice框架提供了很多特性和工具,例如自定义拦截器、远程代理和序列化等,可以帮助你更方便地进行远程通信和协作开发。 同时,根据引用中的描述,Ice框架还提供了一种全新的抽象编排解决方案,可以轻量级、高性能地实现复杂和灵活的业务规则和流程。该解决方案还提供了可视化操作页面,使得规则的设计和管理更加便捷。 综上所述,Spring Boot中集成Ice框架可以帮助企业用户实现远程调用,并提供了自定义拦截器等功能。同时,Ice框架还具备规则引擎的特性,可以解决复杂和灵活的业务规则与流程设计的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值