更新时间:2022-12-07 GMT+08:00
分享

Gateway Java Demo

本节提供一个基于Fabric Gateway Java的Demo,Fabric Gateway Java对Java SDK进行了封装,简化了代码量,帮助用户开发自己的Java客户端应用程序。

本Demo仅适用于Hyperledger Fabric增强版的区块链实例。

准备工作

  1. 开通CloudIDE(或者用户自己准备JDK、maven和eclipse/IntelliJ IDEA)。

    CloudIDE是软件开发生产线 CodeArts的云端开发环境服务,向开发者提供按需配置、快速获取的工作空间(包含编辑器和运行环境)。

    在CloudIDE上创建一个空的Java工程,如图1所示。

    图1 CloudIDE上创建一个空的Java工程
  2. 下载Java SDK示例源码,获取方法:登录区块链服务管理控制台,进入“应用案例”,在“Java示例Demo-Java SDK Demo”下方,单击“App_Gateway_Java_Demo”中Java项目源码的“下载”按钮。
  3. 购买区块链实例、安装链代码及实例化链代码操作,请参见《快速入门》

部署应用

  1. 下载SDK和证书。
    1. 在“实例管理”页面,选择“Hyperledger Fabric增强版”页签,单击对应实例卡片上的“获取客户端配置”。
    2. 勾选“SDK文件”,SDK配置参数如下:

      参数名称

      说明

      链代码名称

      chaincodedemo

      证书存放路径

      /home/user/gatewayjavademo/config

      通道名称

      channel

      组织&Peer节点

      选择通道中所有节点组织

      勾选“共识节点证书”。

      勾选“Peer节点证书”,指定节点组织选择organization,勾选“管理员证书”。

    3. 单击“下载”,下载SDK配置文件、demo-orderer组织的管理员证书和organization组织的管理员证书。
  2. 复制并解压。
    1. 先下载工程源代码gatewayjavademo.zip文件并解压。

      获取方法:登录区块链服务管理控制台,进入“应用案例”,在“Java示例Demo-Java SDK Demo”下方,单击“App_Gateway_Java_Demo”中Java项目源码的“下载”按钮。

    2. 1步骤中的zip文件解压,把configs文件夹中的orderer文件夹、peer文件夹、sdk-config.json、sdk-config.yaml文件全部复制到gatewayjavademo目录下的config目录下。然后再将gatewayjavademo目录压缩成gatewayjavademo.zip包。
  3. 部署应用。
    1. 将新压缩的gatewayjavademo工程源代码gatewayjavademo.zip文件上传到CloudIDE开发环境中。

      CloudIDE编译工程如下所示:

    2. 打开工程后等待一会,会自动下载工程依赖的包,然后按下图操作执行Run,就会得到预期结果。

      • gatewayjavademo工程中config目录下demo-channel-sdk-config.yaml文件,必须与gatewayjavademo/src/main/java/handler/Main.java和MainForMultiTask文件中helper.setConfigCtx("config/demo-channel-sdk-config.yaml")代码路径相同,保证可以正常运行Main.java。
      • 客户端app交易的时候,如果指定了未实例化的组织和peer,那么首次交易会超时失败,请您重新运行即可正常交易。

      每次成功执行Main.java,将会执行basicTransactionSample、commitListenerSample、contractListenerSample、blockListenerSample四个方法,向区块链存入多对键值对;可以通过区块链浏览器可以查看交易记录。

常用接口

使用Fabric-Gateway-Java发起交易和查询,主要用到Network和Contract两类的接口,更多的api接口请参考Fabric官网

  • Network

    主要有以下常用的接口:

    接口名称

    描述

    参数值

    返回值

    getContract

    获取Contract实例的接口

    String chaincodeId

    Contract

    addBlockListener

    设置监听器的接口,监听区块事件

    Consumer<org.hyperledger.fabric.sdk.BlockEvent> listener

    Consumer<org.hyperledger.fabric.sdk.BlockEvent>

    getChannel

    获取与network相关联channel的接口

    /

    org.hyperledger.fabric.sdk.Channel

    removeBlockListener

    移除监听器的接口

    Consumer<org.hyperledger.fabric.sdk.BlockEvent> listener

    void

  • Contract

    主要有以下常用的接口:

    接口名称

    描述

    参数值

    返回值

    submitTransaction

    发起交易的接口,需要输入调用方法与参数

    String name, String... args

    byte[]

    evaluateTransaction

    发起查询的接口,需要输入调用方法与参数

    String name, String... args

    byte[]

    createTransaction​

    创建交易的接口,需要submit以发起交易

    String name

    Transaction

    addContractListener

    设置监听器的接口,监听已经提交的交易发出的事件

    Consumer<ContractEvent> listener

    Consumer<ContractEvent> listener

    removeContractListener​

    移除监听器的接口

    Consumer<ContractEvent> listener

    void

分享:

    相关文档

    相关产品