Java SDK Demo
本节提供一个基于Java SDK的Demo,帮助用户开发自己的Java客户端应用程序。
本Demo仅适用于Hyperledger Fabric增强版的区块链实例。
准备工作
- 开通CloudIDE(或者用户自己准备JDK、maven和eclipse/IntelliJ IDEA)。
CloudIDE是软件开发生产线 CodeArts的云端开发环境服务,向开发者提供按需配置、快速获取的工作空间(包含编辑器和运行环境)。
在CloudIDE上创建一个空的Java工程,如图1所示。
- 下载Java SDK示例源码,获取方法:登录区块链服务管理控制台,进入“应用案例”,在“Java示例Demo-Java SDK Demo”下方,单击“App_Java_Src_Demo”中Java项目源码的“下载”按钮。
- 购买区块链实例、安装链代码及实例化链代码操作,请参见《快速入门》。
部署应用
- 下载SDK和证书。
- 在“实例管理”页面,选择“Hyperledger Fabric增强版”页签,单击对应实例卡片上的“获取客户端配置”。
- 勾选“SDK文件”,SDK配置参数如下:
参数名称
说明
链代码名称
chaincodedemo
证书存放路径
/home/user/javasdkdemo_src/config
通道名称
channel
组织&Peer节点
选择通道中所有节点组织
勾选“共识节点证书”。
勾选“Peer节点证书”,指定节点组织选择organization,勾选“管理员证书”。
- 单击“下载”,下载SDK配置文件、demo-orderer组织的管理员证书和organization组织的管理员证书。
- 复制并解压。
- 先下载工程源代码javasdkdemo_src.zip文件并解压。
获取方法:登录区块链服务管理控制台,进入“应用案例”,在“Java示例Demo-Java SDK Demo”下方,单击“App_Java_Src_Demo”中Java项目源码的“下载”按钮。
- 将1步骤中的zip文件解压,把configs文件夹中的orderer文件夹、peer文件夹、sdk-config.json、sdk-config.yaml文件全部复制到javasdkdemo_src目录下的config目录下。然后再将javasdkdemo_src目录压缩成javasdkdemo_src.zip包。
- 先下载工程源代码javasdkdemo_src.zip文件并解压。
- 部署应用。
- 将新压缩的javasdkdemo_src工程源代码javasdkdemo_src.zip文件上传到CloudIDE开发环境中。
- 打开工程后等待一会,会自动下载工程依赖的包,然后按下图操作执行Run,就会得到预期结果。
- javasdkdemo工程中config目录下demo-channel-sdk-config.yaml文件,必须与javasdkdemo/src/main/java/handler/Main.java文件中helper.setConfigCtx("config/demo-channel-sdk-config.yaml")代码路径相同,保证可以正常运行Main.java。
- 客户端app交易的时候,如果指定了未实例化的组织和peer,那么首次交易会超时失败,请您重新运行即可正常交易。
每成功执行一次,表示向区块链存入一对键值对,<testuser,100>;在区块链上查询键值为testuser的value值为100。也可以通过区块链浏览器可以查看交易记录。
- 将新压缩的javasdkdemo_src工程源代码javasdkdemo_src.zip文件上传到CloudIDE开发环境中。
通过内存传入私钥
如果用户需要对私钥文件进行加密,并在demo中解密后传入FabricSDK。
对于MSP私钥:在FabricHelper文件的genFabricUser函数中,按如下方式调用函数:
//从配置文件指定路径下读取加密过的MSP私钥 String adminPrivateKeyString = extractPemString(msp, "keystore"); //对adminPrivateKeyString 进行解密得到decryptedKey字符串 //将解密后的MSP私钥重新赋值给变量adminPrivateKeyString String adminPrivateKeyString = decryptedKey;
当前不支持通过内存传入TLS私钥。
常用接口
Fabric-sdk-java的使用主要分为:加密套件配置,通道操作,链码操作。
加密套件配置部分,根据配置文件内容,设置SDK里面的加密套件服务提供者、 加密类型、安全级别等。
- 通道操作包括:通道查询、通道创建、通道加入、通道删除等。
- 链码操作包括:链码安装、链码实例化、链码查询、链码调用等。
使用Fabric-sdk-java主要会使用HFClient和Channel两个类,其导入路径分别为:org.hyperledger.fabric.sdk.HFClient和org.hyperledger.fabric.sdk.Channel。