Hyperledger Fabric 将索引添加到 Java 链码

问题描述 投票:0回答:3

是否可以为用java编写的链码添加索引?查看教程和示例项目,所有内容都只涉及 GO 或 JS,关于 java 的信息很少。如果我想为资产添加索引,我需要在 GO 中编写链码吗?

我已经将 META-INF 文件夹放置在各处,但仍然没有创建索引。我开始认为要么 depolyCC.sh 脚本无法在 java 的情况下处理它,要么需要在 gradle.build 文件中制作一些东西。可能是什么问题以及如何解决它?

编辑

我通读了一些部署脚本。对于java来说,似乎它在错误的地方寻找META-INF。由于 META-INF 位于 chaingode 的根目录中,而 gradle 不在,但它位于构建文件夹中,因此 packageChaincode 位于构建目录中,并且永远不会看到 META-INF。感觉我需要以某种方式修改 gradle.build 以使打包器看到元信息

    elif [ "$CC_SRC_LANGUAGE" = "java" ]; then
  CC_RUNTIME_LANGUAGE=java

  infoln "Compiling Java code..."
  pushd $CC_SRC_PATH
  ./gradlew installDist
  popd
  successln "Finished compiling Java code"
  CC_SRC_PATH=$CC_SRC_PATH/build/install/$CC_NAME



packageChaincode() {
  ORG=$1
  setGlobals $ORG
  set -x
  peer lifecycle chaincode package ${CC_NAME}.tar.gz --path ${CC_SRC_PATH} --lang ${CC_RUNTIME_LANGUAGE} --label ${CC_NAME}_${CC_VERSION} >&log.txt
  res=$?
  { set +x; } 2>/dev/null
  cat log.txt
  verifyResult $res "Chaincode packaging on peer0.org${ORG} has failed"
  successln "Chaincode is packaged on peer0.org${ORG}"

}

hyperledger-fabric hyperledger-chaincode
3个回答
2
投票

找到解决方案。基本上。 gralde installDist 将所有内容放入 build/install/basic 文件夹中,但 META-INF 位于根级别。打包时不包含 META-INF 文件夹。我将复制命令添加到 gradle.build 中,以便它将 META-INF 文件夹复制到 build/install/basic 文件夹中。现在,在构建链代码时,它包含 build/install/basic 文件夹中的 META-INF 并创建索引。这是 gradle 构建的问题。


0
投票

为 Java 指定 CouchDB 索引与任何其他链码相同。确保相同的文件放置在目录中的相同位置。

META_INF/statedb/couchdb/indexes
在链码的根目录中。


0
投票

如果您要自定义 HLF 测试网络,我就是这样做的:

将以下复制任务包含在 chaincode-java 文件夹中的 build.gradle 文件中。

task copyTask {
doLast {
    copy {
        from '/home/fetulhak/fabric-samples/asset-transfer-basic/chaincode-java'
        into "/home/fetulhak/fabric-samples/asset-transfer-basic/chaincode-java/build/install/basic"
        include 'META-INF/**'
    }

}

}

然后要运行此任务,请转到位于脚本文件夹下的 test-network 文件夹中的部署CC bash 脚本,并添加此单行代码(./gradlew copyTask build),如下所示。瞧……经过长时间的尝试和错误,这对我有用

elif [ "$CC_SRC_LANGUAGE" = "java" ]; then

CC_RUNTIME_LANGUAGE=java

rm -rf $CC_SRC_PATH/构建/安装/ infoln“编译 Java 代码...” 推送 $CC_SRC_PATH ./gradlew installDist ./gradlew copyTask 构建 波普德 successln“Java代码编译完成”

注意:您必须首先创建 couchdb 索引文件并将其放在 META-INF 文件夹“/home/fetulhak/fabric-samples/asset-transfer-basic/chaincode-java/META-INF/statedb/couchdb”下

© www.soinside.com 2019 - 2024. All rights reserved.