Fabric-Java-SDK调用(一)——调用链码

前言

在本地使用IDEA结合远程服务器部署的fabric环境调试fabric-sdk-java

简介

Java-SDK是外部应用程序与Hyperledger Fabric的交互通道,帮助Java应用程序更好的管理Fabric通道和链码的生命周期,提供了链码管理、查询通道上的区块和交易数据的接口,及通道发生事件的监控。

简单说就是用java代码代替之前的一些通道接口命令、链码接口命令、区块接口命令

流程

SDK发起一个事务invoke请求时,会将事务请求参数发送至Peer节点服务器,随后Peer节点服务对其参数内容进行校验以及背书校验。如果校验成功,则返回处理成功消息给客户端,在该消息中包含了本次请求的读写集。这一段包含读写集的消息将会被客户端发送给Orderer排序服务器,此时Orderer排序服务器在收到消息后进行创建区块等操作。待最终排序完成则执行广播操作,将所生成的区块广播到各个Peer节点服务器。

代码分析

主要有两个类,分别是HFClient类和HFCAClient

外部应用程序访问区块链是通过实例化HFClient类,调用类中的接口。访问Fabric ca是通过实例化HFCAClient类,调用类中的接口

HFClient

 

前提准备(windows如何访问vm虚拟机中的ubuntu的ip)

1.打开vm虚拟机,更改网络模式为桥接模式

 

 2.打开ubuntu系统的终端,输入下面命令

ifconfig

 3.在windows中打开终端,ping ubuntu的ip地址,可以ping通了

 

实操

服务器操作

1、停止服务器上运行的所有相关fabric的容器

可以参考第一篇环境搭建篇文章执行byfn.sh脚本关闭

sh byfn.sh down

 也可以直接执行以下命令

docker rm -f $(docker ps -aq)  #清空所有docker容器
docker network prune           #清空所有缓存网络

2、下载fabric-sdk-java源码:

cd /opt/gopath/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric-sdk-java.git
cd fabric-sdk-java
#查询该Git库下的所有branch
git branch -r
#check出来想要的分支
git checkout -b release-1.4 origin/release-1.4

3、启动fabric网络

cd /opt/gopath/src/github.com/hyperledger/fabric-sdk-java/src/test/fixture/sdkintegration
./fabric.sh up

经过一段漫长的等待之后,出现这个页面则是启动成功

 

本地操作

1、IDEA导入项目源码

由于GitHub下载较慢,因此上传到csdn免费下载

github:GitHub - hyperledger/fabric-sdk-java

2、IDEA安装Protobuf Support插件

安装该插件是为了后续启动的时候把.proto后缀文件转换为java文件

 3、注释掉pom.xml以下内容,否则会报错

3.1注释内容

<plugin>
    <groupId>pl.project13.maven</groupId>
    <artifactId>git-commit-id-plugin</artifactId>
    <version>2.2.2</version>
    <executions>
        <execution>
            <id>get-the-git-infos</id>
            <goals>
                <goal>revision</goal>
            </goals>
            <phase>validate</phase>
        </execution>
    </executions>
    <configuration>
        <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
    </configuration>
</plugin>

3.2 不注释会报错

 4、编译项目

idea右侧先点击跳过测试的按钮(像闪电那个图标),然后在点击cleancompile,经过漫长的等待出现以下页面则编译成功

 而且经过编译成功后在target中看到根据.proto文件生成的Java类,如下所示

 5、修改测试类

src\test\java\org\hyperledger\fabric\sdk\testutils包下找到TestConfig.java,代码里的localhost改为自己服务器的地址ip

 

6、关闭防火墙

由于涉及端口众多,因此如果不关闭防火墙,会导致一些网络错误,例如 ERROR org.hyperledger.fabric.sdk.Channel - Channel Channel{id: 16, name: foo} sending proposal with transaction xxx to Peer{ id: 21, name: peer0.org1.example.com, channelName: foo, url: grpc://192.168.56.103:7051} failed because of timeout(120000 milliseconds) expiration

#检测防火墙状态
systemctl status firewalld.service
#关闭防火墙
systemctl stop firewalld.serviceservice 
#一定要重启docker,然后重启脚本
docker restart

 

7、运行文件End2endIT.java

src\test\java\org\hyperledger\fabric\sdkintegration包下找到End2endIT.java,修改下面的地址成服务器的地址,并启动该类

结果分析可以参考Fabric-sdk-java调试跑通

 

  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值