Java SDK Demo相关使用问题
排查思路
- 确认是否区块链实例名称为“java-sdk-demo”(若安全机制需要使用国密算法,须选择企业版)、私有链、CCE、SOLO。
注意开发工具的安装与配置正确,请参考:准备工作。
登录区块链服务控制台,在左侧导航栏单击“实例管理”,单击目标实例名称查看详细信息,请参考:Java SDK Demo。
- 确认是否下载order、peer证书,并将SDK文件下载至demo工程的config路径中,名称为java-sdk-demo-sdk-config.zip,请参考:Java SDK Demo中“配置应用”的“2.SDK配置下载”和“3.证书下载”。
配置SDK文件参数时填写的链代码名称须与安装链代码时自定义的链代码名称一致。
- 确认是否按要求修改Main类中的路径,请参考:Java SDK Demo中“部署应用”:
找到/javasdkdemo/src/main/java/handler/Main.java,将Main类中如下代码中的文件路径修改为java-sdk-demo-sdk-config.yaml文件的绝对路径,记得将windows的反斜杠“\” 改为 “/”:
helper.setConfigCtx("E:/yourdir/huawei.yaml");
- 若您在订购区块链实例时选择了国密算法,请确认是否在pom.xml中添加对fabric-sdk-java-1.4.1-jar-with-dependencies.jar的依赖,如下图所示去掉该依赖的注释即可:
- 若出现偶现的超时,且交易间隔比较离散,则需考虑是否grpc第三方存在的连接保护机制导致,相关报错截图如下:
解决方案
在src\main\java\handler\FabricHelper.java文件中,按照如下图所示样例代码,分别加上p.put部分保存,再次交易。
p.put("grpc.NettyChannelBuilderOption.keepAliveTime",new Object[] { 5L, TimeUnit.MINUTES });
p.put("grpc.NettyChannelBuilderOption.keepAliveTimeout",new Object[] { 8L, TimeUnit.SECONDS });
p.put("grpc.NettyChannelBuilderOption.keepAliveWithoutCalls", new Object[] { true });
p.put("grpc.NettyChannelBuilderOption.maxInboundMessageSize", 102400000);