超级账本fabric区块链javaSDK在鲲鹏服务器上的部署
【摘要】 项目使用超级账本hyperledger fabric 作为底层区块链,使用java-sdk-java来连接区块链的智能合约。为了适配arm架构自己编译sdk依赖的netty包后运行成功。
前提背景:
项目使用超级账本hyperledger fabric 作为底层区块链,使用java-sdk-java来连接区块链的智能合约。
fabric-sdk-java用了SSL的话,netty就会用到netty-tcnative库,
而这个库内置了一个二进制库:libnetty-tcnative,
官方发布的版本这个库只有三个版本:
Linux-X86, Windows-X86, MacOSX-X86
为了解决这个问题,就得自己编译一个netty-tcnative。
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-tcnative-boringssl-static</artifactId>
<version>2.0.8.Final</version>
</dependency>
#编译环境安装和源码准备
apt-get install -y maven libapr1 libapr1-dev autoconf automake libtool cmake ninja-build golang openssl1.0 libssl1.0-dev git clone https://github.com/netty/netty-tcnative.git cd /root/netty-tcnative/ git checkout -b netty-tcnative-parent-2.0.8.Final
#编译arm架构的tcnative
mvn clean install -DskipTests=true -pl openssl-dynamic
#查看编译后生成的源文件
ll openssl-dynamic/target/native-jar-work/META-INF/native/libnetty_tcnative.so
#创建native文件夹
cd ../ && mkdir native cp /root/netty-tcnative/openssl-dynamic/target/native-jar-work/META-INF/native/libnetty_tcnative.so /root/native/ cd native/
#改名成对应平台的tcnative
mv libnetty_tcnative.so libnetty_tcnative_linux_aarch_64.so cp libnetty_tcnative_linux_aarch_64.so netty_tcnative_linux_aarch_64.so
#拷贝到webapps下具体的项目中
cp -r /root/native/ /root/tomcat8080/webapps/ [项目名称] /META-INF/
#如果非root用户需要修改到非root用户的权限目录下
vi /etc/profile export LD_LIBRARY_PATH=/root/native/ source /etc/profile
然后再重新启动项目
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)