使用Fabric Client Java SDK V1.0.1进行用户注册时无法获得从属关系 - java

我有一个使用Build Your First Network的Hyperledger Fabric V1.0网络设置。
我已经通过运行命令./byfn.sh -m up建立了网络。
现在,所有对等方,订购方和CA(在docker-compose-e2e.yaml中配置)都已启动并正在运行。
这是我的docker ps
使用Fabric Client Java SDK V1.0.1进行用户注册时无法获得从属关系 - java
我正在尝试使用fabric-sdk-java连接到该网络。
但是在使用以下代码进行用户注册时

HFCAClient ca = sampleOrg.getCAClient();
final String orgName = sampleOrg.getName();
final String mspid = sampleOrg.getMSPID();
ca.setCryptoSuite(CryptoSuite.Factory.getCryptoSuite());
SampleUser admin = sampleStore.getMember("ädmin", orgName);
if (!admin.isEnrolled()) {  //Preregistered admin only needs to be enrolled with Fabric caClient.
    admin.setEnrollment(ca.enroll(admin.getName(), "adminpw"));
    admin.setMspId(mspid);
}   

sampleOrg.setAdmin(admin); // The admin of this org --
SampleUser user = sampleStore.getMember("user", sampleOrg.getName());
if (!user.isRegistered()) {  // users need to be registered AND enrolled
    RegistrationRequest rr = new RegistrationRequest(user.getName(), "org1.department1");
    user.setEnrollmentSecret(ca.register(rr, admin// here comes the error
}

我收到错误

2017-08-29 07:44:01,132 main ERROR HFCAClient:237 - com.test.blockchain.client.test.SampleUser@73846619
org.hyperledger.fabric_ca.sdk.exception.RegistrationException: Error while registering the user com.test.blockchain.client.test.SampleUser@73846619 url: https://192.168.99.100:7054  POST request to https://192.168.99.100:7054/api/v1/register failed request body {"id":"user1","type":"user","max_enrollments":0,"affiliation":"org1.department1","attrs":[]} with status code: 500. Response: {"success":false,"result":null,"errors":[{"code":0,"message":"Failed getting affiliation 'org1.department1': sql: no rows in result set"}],"messages":[]}
 
    at org.hyperledger.fabric_ca.sdk.HFCAClient.register(HFCAClient.java:236)
    at com.test.blockchain.client.test.Test.setup(Test.java:164)
    at com.test.blockchain.client.test.Test.main(Test.java:982)
Caused by: java.lang.Exception: POST request to https://192.168.99.100:7054/api/v1/register failed request body {"id":"user1","type":"user","max_enrollments":0,"affiliation":"org1.department1","attrs":[]} with status code: 500. Response: {"success":false,"result":null,"errors":[{"code":0,"message":"Failed getting affiliation 'org1.department1': sql: no rows in result set"}],"messages":[]}

    at org.hyperledger.fabric_ca.sdk.HFCAClient.httpPost(HFCAClient.java:609)
    at org.hyperledger.fabric_ca.sdk.HFCAClient.register(HFCAClient.java:227)
    ... 2 more

我指的是单元测试类End2endIT.java中显示的代码
有人请分享您的知识,找出我做错了什么。
另外,我不确定它在哪里配置"affiliation":"org1.department1"。我是否需要在.yaml文件中添加任何内容?

参考方案

这些是为任何CA容器引导的从属关系

> affiliations:   
>   org1:
>       - department1
>       - department2    
>   org2:
>       - department1

但是有功能,但是您可以根据您的组织添加新的从属关系

await caClient.newAffiliationService().create({ "name": "AFFILIATION_NAME }, adminObj)

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java DefaultSslContextFactory密钥库动态更新 - java

我有一个使用org.restlet.engine.ssl.DefaultSslContextFactory的现有应用程序和一个在服务器启动时加载的密钥库文件。我有另一个应用程序,该应用程序创建必须添加的证书服务器运行时动态地更新到密钥库文件。为此,我在代码中创建了证书和私钥,然后将其写入到目录。该目录由bash脚本监视,该脚本检查是否有新文件,如果出现,它将…