1. 基础环境
1.1 Fabric基础环境
安装go、docker、docker-compose,下载fabric docker镜像,注意docker镜像安装版本为1.1.0,参考博文Ubuntu启动Fabric1.1.0网络,如下docker images截图:
1.2 IntelliJ IDEA +JDK1.8
最好使用jdk1.8,因为后面编译fabric-sdk-java的版本为1.1.0,该版本中使用了很多jdk1.8有的包,但是更高版本的jdk已经弃用这些包,maven逐个导入缺失的包比较麻烦。
因为fabric 使用google的protobuf 作为序列化工具,intellij idea需要先安装protobuf插件,我使用的是community版的 idea,安装步骤如下:
Intellij idea-》file-》settings-》plugins-》搜索安装Protobuf Support
2. 本地下载fabric-sdk-java
在项目目录下执行如下命令:
git clone https://github.com/hyperledger/fabric-sdk-java.git
git checkout --track remotes/origin/release-1.1
注意,这里一定要记得切换版本到1.1!!!我在运行测试用例时,测试失败,报错:Sending proposal to peer0.org1.example.com failed because of: gRPC failure
,network故障啥的,具体错误忘了截图,错误代码指向End2endIT.java的870行if (testConfig.isFabricVersionAtOrAfter("1.3"))
,然后check自己代码的版本,发现是1.3。
3. 修改代码
打开fabric-java-sdk
目录下的pom.xml
,注释掉报错的<argLine>${surefireArgLine}</argLine>
:
和<argLine>${failsafeArgLine}</argLine>
:
还有plugin报错的,不管了,没有影响。
打开测试用例src/test/java/sdkintegration/End2endIT.java
,会有缺失包import org.hyperledger.fabric.protos.ledger.rwset.kvrwset.KvRwset;
报错,点击IDEA右上角的查询按钮,查询Mven Projects
,如下图,找到compile,右键点击run mavne build进行编译。编译过后显示BUILD SUCCESS表示编译成功,再次打开End2endIT就不会有错误提示了。
4. 运行
4.1 服务端
进入sdkintegration文件夹,启动fabric网络:
cd fabric-sdk-java/src/test/fixture/sdkintegration
./fabric.sh up
当terminal中log不再滚动,且peer.org.example.com没有红色字体显示的,表示网络启动成功,这时可以测试客户端了。
4.2 客户端
在IDEA里运行End2endIT.java
fabric-sdk-java/src/test/java/org/hyperledger/fabric/sdkintegration/End2endIT.java-》Run
等待一分钟,测试用例通过: