嘗試使用fabric-sdk-java來連接fabric區塊鏈。
fabric的安裝可參考 http://www.cnblogs.com/maobuji/p/7204446.html
環境准備:
JDK1.8、IDEA(帶有maven,支持jdk1.8的就可以)
IDEA插件安裝:
需要安裝Protobuf Support插件
進入IDEA環境后,選擇file->setting

打開后搜索Protobuf Support安裝即可。裝好后重啟IDEA。
fabric-sdk-java工程包下載:
https://github.com/hyperledger/fabric-sdk-java 選擇clone or download下載最新的代碼,也可以到release中下載對應版本的代碼
解壓后目錄如下:

導入工程:

選擇源代碼工程

然后一路next下去,工程就導入了。
在pom.xml中刪除以下內容:
(1.0.1中使用maven編譯,這里會報錯。所以從POM.xml暫時刪除掉了這個插件,如果有人知道如何配置,請給我留言)
<plugin> <groupId>pl.project13.maven</groupId> <artifactId>git-commit-id-plugin</artifactId> <version>2.2.2</version> <executions> <execution> <id>get-the-git-infos</id> <goals> <goal>revision</goal> </goals> <phase>validate</phase> </execution> </executions> <configuration> <dotGitDirectory>${project.basedir}/.git</dotGitDirectory> </configuration> </plugin>
編譯
點擊左下角的小方塊,選擇Maven Projects
、
在打開的窗口里,選擇protobuf:compile右鍵運行,之后在運行工程的compile

會新生成一個target目錄,如果包都生成出來了,應該就是成功了。

運行測試用例
查找End2endIT.java 進行單元測試,提示連接不上,工程的基本設置就完成了。下面的章節進行sdk測試類的分析

連接地址可以在測試包的
org.hyperledger.fabric.sdk.testutils.TestConfig類中找到
但是7074是ca的配置路徑,e2ecli例子中並沒有ca的配置,這部分還酉繼續研究
由於SDK默認的連接例子,是自帶在SDK包里的。所以要關閉掉之前啟動的e2ecli的例子了。
准備測試服務
創建一個目錄,然后將fabric-sdk-java放進去並解壓

cd fabric-sdk-java-1.0.1/src/test/fixture/sdkintegration/

啟動樣例即可
sh fabric.sh
回到java環境,到testConfig.java中修改IP地址,將localhost都改為,fabric服務器的地址。

運行測試
運行End2endIT單元測試,如果運行正常應該是如下結果,之后就可以去看單元測試是如何使用sdk與fabric交互的了

補充內容:
maven update以后,pom文件可能會報錯。
(1)com.google.protobuf:protoc:exe:${os.detected.classifier}:3.0.0
這里是因為${os.detected.classifier}沒有取到合理的值,可以參考這個文檔進行設置 https://github.com/trustin/os-maven-plugin
${os.detected.classifier} 的值是由 ${os.detected.name}-${os.detected.arch} 構成的
${os.detected.name}的值是由${os.name}轉化而來的。轉化規則在鏈接中
${os.detected.arch}的值是由${os.arch}轉化而來的,轉化規則也在鏈接中
可以使用如下java代碼獲得當前操作系統的值:
System.out.println(System.getProperty("os.name"));
System.out.println(System.getProperty("os.arch"));
Windows 7 amd64 需要被轉換為:windows-x86_64
取得了${os.detected.classifier}的值以后,在pom的properties中增加<os.detected.classifier>windows-x86_64</os.detected.classifier>即可
注意:不同操作系統的值,有所不同,請根據轉換表進行轉換

