Go to file Use this template
2023-09-19 14:22:03 +08:00
backend upgrade version 2023-09-19 14:22:03 +08:00
bdserver-docker-compose update version 2023-06-16 18:55:51 +08:00
front update front development guide 2023-03-18 21:58:11 +08:00
gradle/wrapper upgrade version 2023-09-19 14:22:03 +08:00
ideaplugin 更新插件 2023-03-17 08:15:47 +00:00
.gitignore update readme.md 2021-11-17 11:28:40 +08:00
build.gradle upgrade version 2023-09-19 14:22:03 +08:00
LICENSE Initial commit 2021-11-03 02:59:06 +00:00
README.md update front development guide 2023-03-18 21:58:11 +08:00
settings.gradle Revert "release" 2023-03-06 14:54:30 +08:00

contract-java-example

介绍

idea开发合约的示例。

测试环境配置

  1. 在本地准备docker测试环境。
cd bdserver-docker-compose
docker-compose up -d 
cat bdcontract/manager.keypair
#并复制这组{"publickey".."privateKey"}
  1. 打开浏览器http://127.0.0.1:21030/NodePortal.html。点击右上角欢迎04xx按钮将步骤1中的keyPair复制并点导入密钥

开发环境配置

可安装idea插件ideaplugin/yjs-formater-1.0-SNAPSHOT-1653060411648.zip 用于格式化yjs文件和自动补全。

在本机调试运行

1.修改debugconf.json,将cpHost改为从docker可访问的域名或ip。

在MAC/Linux环境下可使用ifconfig | grep inet ,查看本地局域网ip并配置到cpHost字段。
在Windows环境下可使用"cpHost":"host.docker.internal"。
其中host.docker.internal是docker中内置的一个域名可用于访问host。
https://docs.docker.com/desktop/windows/networking/

示例的debugconf.json配置

{
  "agentAddress": "127.0.0.1:21030",
  "publicKey": "04180354fdb6507f8ab98ccfbe165ce11da74ba733f81af86ad6d32216b32cf4f797c559d50ceeefbf4c760c3483840471c67471b90acdffb388cd7d496d9a1610",
  "privateKey": "1d4196947f59532db6f8f4055e58474a48db8f30b476ae3edc66406464521b3b",
  "ypkPath": "./backend/build/contractexample-1.3.0.ypk",
  "killBeforeStart": "ContractExample",
  "createParam": {
  },
  "cpHost": "host.docker.internal"
}

2.启动测试用例:

test/java/HelloTest.run

注意run方法中的for (;;);用于防止测试用例退出。 在windows中可能影响其他测试用例运行。可编写public static void main(String[] args)去运行合约。

3.带UI的ypk调试 由于bdcontract会根据启动参数中的ypkPath去解析ypk文件中的资源文件因此当需要通过http://xxx:xx/DOIP/ContractID这种形式去访问静态资源时, 需要配置ypk路径映射。 一种做法是:

  1. 在./bdserver-docker-compose目录下在启动之后会生成一个文件./bdcontract/BDWareProjectDir。将该目录映射至./backend目录下或是backend的上级目录下。
cd 至backend
ln -s /absolute/path/to/BDWareProjectDir ./
  1. 修改DebugMain的启动路径为BDWareProjectDir所在目录。

  2. 修改debugconf.json中的ypkPath使用相对路径的形式./BDWareProjectDir/xxx

  3. 注意需要将编译好的ypk放至BDWareProjectDir中。可编写一个新的gradle task完成脚本化复制。如

task copyToBDWareProjectDir(type: Copy) {
    from "./build/contractexample-${currVersion}.ypk"
    into "../bdserver-docker-compose/bdcontract/BDWareProjectDir/"
}

在docker内调试运行

打开镜像的NodePortal.html页面以ypk的形式启动。 在启动时,增加remoteDebugPort,注意远程调试的端口需要在镜像中映射出来。 可使用docker镜像默认映射端口范围21050-21100,例如21058。 而后即可通过jdwp可进行远程调试。 如果使用idea作为开发环境,则可搜索idea java remote debug,查看相关教程。 NodePortal.html可参考BDContract管理页面

部署运行

部署至远程服务端执行":backend:deploy"任务: 即执行./backend/build.gradle 中的 deploy。

前端开发说明

详见front/README.md 启动好之后,可通过以下路径访问前端:

http://127.0.0.1:21030/DOIP/ContractExample/assets/vite/dist/index.html
http://127.0.0.1:21030/DOIP/ContractExample/assets/html/index.html

模拟后端数据

后端常用方法说明

调用相同CP的yjs代码

参考: Hello.callYJSInSameCP

调用其他CP的yjs代码

参考: Hello.callYJSInOtherCP