热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

fabricsdkjava1.1测试应用——连接e2e_cli网络+测试链码

fabricsdkjava1.1测试应用——连接e2e_cli网络+测试链码,Go语言社区,Golang程序员人脉社

网上大多fabric sdk java1.1的教程文章大多以测试官方的sdk java中End2endIT示例,但官方提供的sdk注释少难以运用,这两周对别人重新封装的几套sdk进行测试。下面是一些链接。

  • https://github.com/hyperledger/fabric-sdk-java/tree/release-1.1   官方fabric sdk java1.1(可以参照网上其他教程先将其中的End2endIT 示例测试通过,测试通过也确保了maven已经拉取了所需的jre包)
  • https://github.com/QwertyJack/hellofabric  这个示例相对比较好测试通过,但是它所连接的是项目中的fabric网络,且只有查询、执行链码等基本操作,不适合我们进一步学习
  • https://github.com/wanghongfei/hyperledger-fabric-java-SDK-demo  本教程主要对该项目进行测试运行,对于代码进行了一些修改,项目文件会放在教程最后的下载链接中

正文

环境:fabric1.1    maven3.5及以上  jdk1.8及以上

实现:sdk java连接服务器fabric1.1的e2e_cli网络,并执行通过链码操作

前提条件:最好测试通过了End2endIT示例,确保maven已经拉取了所需的jre包

一、Fabric1.1 e2e_cli网络集成CA模块

在sdk中集成的CA的模块,即在与fabric网络交互是 都需要先enroll,再setUserContext,获取到执行用户的信息。所以我们在官方给的e2e_cli的示例中集成CA模块。

(1)修改e2e_cli文件夹中的docker-compose-cli.yaml 文件,加入ca

ca0: 
  image: hyperledger/fabric-ca 
  environment: 
    - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server 
    - FABRIC_CA_SERVER_CA_NAME=ca0 
    - FABRIC_CA_SERVER_TLS_ENABLED=false 
  ports: 
    - "7054:7054" 
  command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/${PRIVATE_KEY} -b admin:adminpw -d' 
  volumes: 
    - ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config 
  container_name: ca0

(2)修改network_setup.sh启动脚本,启动CA容器

对启动脚本中networkUp方法中增加红色高亮的代码

function networkUp () {
    if [ -d "./crypto-config" ]; then
      echo "crypto-config directory already exists."
    else
      #Generate all the artifacts that includes org certs, orderer genesis block,
      # channel configuration transaction
      source generateArtifacts.sh $CH_NAME
    fi
folder="crypto-config/peerOrganizations/org1.example.com/ca" 
privName="" 
for file_a in ${folder}/* 
do 
    temp_file=`basename $file_a`

    if [ ${temp_file##*.} != "pem" ];then 
       privName=$temp_file 
    fi 
done 
    echo $privName 

    if [ "${IF_COUCHDB}" == "couchdb" ]; then
      CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d 2>&1
    else
      CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT  PRIVATE_KEY=$privName docker-compose -f $COMPOSE_FILE up -d 2>&1
    fi
    if [ $? -ne 0 ]; then
    echo "ERROR !!!! Unable to pull the images "
    exit 1
    fi
    docker logs -f cli
}

(3)启动网络

./network_setup.sh up

二、导入项目工程

在idea或eclipse中导入fabric-java-sdk-demo的项目工程

(1)替换相应的证书密钥文件

将~/src/main/resource/fabric目录下的crypto-config文件   替换为  $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli目录下的crypto-config文件,即将服务器上的crypto-config放到项目目录中。

(2)修改相应的ip地址

将demo.java中的ip修改为自己服务器或虚拟机ip

(3)因为在启动e2e_cli网络时,已经实例化了相应的链码,所以,不需要再修改invoke和query方法中参数,如果调用其他链码则需要修改。

最后运行成功。

三、注意的几点

  • 若在本地编译器调试,网络在服务器上,需要测试本地是否能访问到服务器ip 端口(之前我所在的教育网下访问不到报错,后来将编译器放到服务器上后解决)
  • resource需要设置为 Sources Root
  • 如果报了一些通信的错误,可以尝试先把tls关闭,步骤如下

将在e2e/base内的两个文件里面分别做出如下修改

docker-compose-base.yaml  ---- >  ORDERER_GENERAL_TLS_ENABLED=false

peer-base.yaml  ---- >  CORE_PEER_TLS_ENABLED=false

对e2e/docker-compose-cli.yaml内的文件中同理修改

 CORE_PEER_TLS_ENABLED=false

然后重新部署环境。

项目源码下载链接:https://pan.baidu.com/s/1r6FWjHwybgtmCXcRqI3JAA  


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 在IDEA中运行CAS服务器的配置方法
    本文介绍了在IDEA中运行CAS服务器的配置方法,包括下载CAS模板Overlay Template、解压并添加项目、配置tomcat、运行CAS服务器等步骤。通过本文的指导,读者可以轻松在IDEA中进行CAS服务器的运行和配置。 ... [详细]
  • 本文介绍了Java调用Windows下某些程序的方法,包括调用可执行程序和批处理命令。针对Java不支持直接调用批处理文件的问题,提供了一种将批处理文件转换为可执行文件的解决方案。介绍了使用Quick Batch File Compiler将批处理脚本编译为EXE文件,并通过Java调用可执行文件的方法。详细介绍了编译和反编译的步骤,以及调用方法的示例代码。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
author-avatar
志信俊霖2542
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有