fabric-sdk-java+springboot实现invoke,query,enroll等示例
一,简介
这里介绍一下fabric-sdk-java的使用,网络环境是基于fabric1.4的。当然在低版本的fabric网络中也是适用的。
首先确保你已经能够自己搭建其一个可用的fabric网络。(如果您还没有把fabric基本网络搭建成功,请移步fabric网络环境搭建)不过我们需要一个关闭了TLS的网络,暂时还不知道怎么在开启TLS的情况下如何在JavaSDK中成功引用fabric网络中的方法。如果由成功的大佬,请赐教,小弟不胜感激。
首先我们需要启动一个关闭TLS的fabric网络。网络需要两个组织,四个节点和两个CA。就是fabric为我们提供好的e2e网络。
修改fabric网络为不启用TLS
进入first-network文件夹,(这里建议你将first-network复制一份,并且重命名为2first-network,避免你以后需要启用TLS的时候还得再改。),打开byfn.sh ,修改COMPOSE_FILE=docker-compose-cli.yaml为COMPOSE_FILE=docker-compose-e2e.yaml。这样在启动的时候,就会为我们启动e2e的网络。(你可能会发现当前目录中并没有docker-compose-e2e.yaml这个文件,别担心,脚本会自动为我们生成的)不过光改这个还不够。还需要把TLS关掉。
- 打开docker-compose-e2e-template.yaml把 *_TLS_ENABLED=true,前面加个# 注释掉或是把true改成false。注意*是匹配任意字符。就是把你找到的含有TLS_ENABLED的都改了。
- 进入base文件夹,把该文件夹里面的两个文件进行1中的操作。
e2e 网络是没有cli客户端的, 这样不方便我们手动控制合约的部署,实例化等操作,如果你想要启动一个,可以在docker-compose-e2e-template.yaml最下面加入下面内容 , (拷自docker-compose-cli.yaml)文件
[code] cli: container_name: cli image: hyperledger/fabric-tools:$IMAGE_TAG tty: true stdin_open: true environment: - GOPATH=/opt/gopath - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock #- FABRIC_LOGGING_SPEC=DEBUG - FABRIC_LOGGING_SPEC=INFO - CORE_PEER_ID=cli - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 - CORE_PEER_LOCALMSPID=Org1MSP #- CORE_PEER_TLS_ENABLED=true - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer command: /bin/bash volumes: - /var/run/:/host/var/run/ - ./../chaincode/:/opt/gopath/src/github.com/chaincode - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/ - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts depends_on: - orderer.example.com - peer0.org1.example.com - peer1.org1.example.com - peer0.org2.example.com - peer1.org2.example.com networks: - byfn
执行脚本,启动网络。
如果你的网络启动成功,恭喜你,你已经完成了教程的四分之一。
二,构建spring boot项目
进入快速构建spring boot网页 spring boot。
按照图片从上到下点击,最后genetate project。会下载一个压缩包到你的本地。解压到你的workspace。(请问workspace是哪里?---就是你的Java工作空间。)
等等,为什么要选择这么老的版本?而不选择spring boot2以后的版本呢?答案是,spring boot2会稍微复杂一点,这里先简单教一下1.5的的使用,至于2吗,你可以自己探索。
在你的工具(idea或是eclipse)中打开项目,需要等待几分钟,等项目构建完毕。
项目构建完成后,引入一下fabric-sdk-java依赖,在builde.gradle中加入
[code]compile('org.hyperledger.fabric-sdk-java:fabric-sdk-java:1.0.0')
加入完成后,
eclipse中:右键build.gradle >> Gradle >>> refresh gradle project 。导入相关的依赖包。
idea中的操作方法就不赘述了,自己研究一下,都差不多的。
完成后复制以下代码到项目的main/java文件夹下面,就是红色圈住的部分。
代码在
链接:https://pan.baidu.com/s/1lDz01GEcK7DbPqPK-G4XYA
提取码:99pi
复制完成后项目的目录是
然后在first-network目录中找到生成的crypto-config文件夹。并考到你本地的项目所盘的data目录中。
打开Config.java,,修改相关的配置为正确的值,其中所有的grpcs要改为grpc。然后打开QueryChaincode.java。修改chaincode的名字以及引用的参数。执行main方法。
如果顺利的话,就可以执行成功了,如果有报错,有可能是你的证书文件路径放错了,或是Config.java 里面的配置文件有问题。
然后打开InvokeChaincode.java。适当修改其中参数。执行main方法。。。。祝你好运!另外在network目录下,有创建通道和部署链代码的简单示例,而user目录下面有注册用户的简单示例,可以自行测试一下
其实按照目前所提到的,不用spring boot也可以,你直接建立一个普通的gradle项目,按照步骤执行也是可以的,那么为什么还要用spring boot呢? 答案就是为了起一个web服务,好在web服务中来操作。至于这个就不一步一步的教了。直接把我的demo上传了,需要可以下载。下载示例
作为一个良心的博主,我并不想坑大家这么多积分,无奈CSDN不能自己设置积分, 如果有想要又买不起积分的童鞋,可以再下方评论,
- 用java的spring实现一个简单的IOC容器示例代码
- Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
- Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
- Spring Boot 实现RESTful webservice服务端示例
- Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
- Java基于Spring Boot、RabbitMQ实现事件驱动模式
- 从.Net到Java学习第八篇——SpringBoot实现session共享和国际化
- spring boot结合Redis实现工具类的方法示例
- Java Spring Boot 服务器端断点续传功能支持 实现代码
- spring-boot集成spring-security的oauth2实现github登录网站的示例
- Spring Boot与RabbitMQ结合实现延迟队列的示例
- SpringBoot 整合 dubbo xml实现代码示例
- Spring Boot + Java爬虫 + 部署到Linux(八、Nginx实现反向代理、动静分离和websocket处理)
- springboot+webmagic实现java爬虫jdbc及mysql的方法
- java中springboot项目集成socketIo实现实时推送
- 浅谈Java(SpringBoot)基于zookeeper的分布式锁实现
- java 关于Spring中Aop的简单理解以及SpringBoot如何添加Aop实现步骤
- Spring Boot+AngularJS+BootStrap实现进度条示例代码
- Spring Boot集成ElasticSearch实现搜索引擎的示例