Hyperledger fabric 添加索引到 java 链码
Hyperledger fabric add index to java chaincode
是否可以为用java编写的链代码添加索引?查看教程和示例项目都只有 GO 或 JS,关于 java 的信息很少。如果我想为资产添加索引,我需要在 GO 中编写链代码吗?
我把 META-INF 文件夹放在各处,但仍然没有创建索引。我开始认为 depolyCC.sh 脚本无法在 java 的情况下处理它,或者需要在 gradle.build 文件中制作一些东西。可能是什么问题以及如何解决?
编辑
我通读了一些部署脚本。似乎 java 它在错误的地方寻找 META-INF。由于 META-INF 位于 chaingode 的根目录中,而 gradle 不在构建文件夹中,因此 packageChaincode 位于构建目录中并且永远不会看到 META-INF。感觉我需要以某种方式修改 gradle.build 以使打包程序看到 meta-inf
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=
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}"
}
为 Java 指定 CouchDB 索引与任何其他链代码相同。确保相同的文件放在目录中的相同位置。
META_INF/statedb/couchdb/indexes
在链代码的根目录中。
找到解决方案。基本上。 gralde installDist 将所有内容放入 build/install/basic 文件夹,但 META-INF 位于根目录。打包时它不包含 META-INF 文件夹。我在 gradle.build 中添加了复制命令,以便它将 META-INF 文件夹复制到 build/install/basic 文件夹中。现在,在构建链代码时,它包含 build/install/basic 文件夹中的 META-INF 并创建索引。 gradle 构建有问题。
是否可以为用java编写的链代码添加索引?查看教程和示例项目都只有 GO 或 JS,关于 java 的信息很少。如果我想为资产添加索引,我需要在 GO 中编写链代码吗?
我把 META-INF 文件夹放在各处,但仍然没有创建索引。我开始认为 depolyCC.sh 脚本无法在 java 的情况下处理它,或者需要在 gradle.build 文件中制作一些东西。可能是什么问题以及如何解决?
编辑
我通读了一些部署脚本。似乎 java 它在错误的地方寻找 META-INF。由于 META-INF 位于 chaingode 的根目录中,而 gradle 不在构建文件夹中,因此 packageChaincode 位于构建目录中并且永远不会看到 META-INF。感觉我需要以某种方式修改 gradle.build 以使打包程序看到 meta-inf
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=
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}"
}
为 Java 指定 CouchDB 索引与任何其他链代码相同。确保相同的文件放在目录中的相同位置。
META_INF/statedb/couchdb/indexes
在链代码的根目录中。
找到解决方案。基本上。 gralde installDist 将所有内容放入 build/install/basic 文件夹,但 META-INF 位于根目录。打包时它不包含 META-INF 文件夹。我在 gradle.build 中添加了复制命令,以便它将 META-INF 文件夹复制到 build/install/basic 文件夹中。现在,在构建链代码时,它包含 build/install/basic 文件夹中的 META-INF 并创建索引。 gradle 构建有问题。