使用Fabric Client Java SDK V1.0.1在用户注册时获取从属关系失败

使用Fabric Client Java SDK V1.0.1在用户注册时获取从属关系失败,java,blockchain,hyperledger,hyperledger-fabric,Java,Blockchain,Hyperledger,Hyperledger Fabric,我有一个使用的Hyperledger Fabric V1.0 networ设置 我已经通过运行命令/byfn.sh-m up建立了网络。 现在,所有对等方、订购方和CA(在docker-compose-e2e.yaml中配置)都已启动并运行 这是我的docker ps 我正在尝试使用连接到这个网络 但是当使用以下代码进行用户注册时 HFCAClient ca = sampleOrg.getCAClient(); final String orgName = sampleOrg.getName(

我有一个使用的Hyperledger Fabric V1.0 networ设置

我已经通过运行命令
/byfn.sh-m up
建立了网络。 现在,所有对等方、订购方和CA(在docker-compose-e2e.yaml中配置)都已启动并运行

这是我的
docker ps

我正在尝试使用连接到这个网络

但是当使用以下代码进行用户注册时

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
我指的是单元测试类中显示的代码

有人请分享你的知识,找出我哪里做错了


另外,我不确定它在哪里配置
“附属关系”:“org1.department1”

我是否需要在我的
.yaml
文件中添加任何内容?

创建加密材料时,您需要配置从属关系。在生成
/byfn.sh-m up
命令的情况下。在执行./byfn.sh-m up时,您已经创建了密钥(证书),因此不需要调用CA来注册任何用户

此外,您的错误代码是500,因此您的错误原因应该是其他原因。你能试着调用链码吗


您是否更改了crypto-config.yaml文件中的某些内容?在docker-compose-e2e.yaml文件中?

我不确定您在org1.department1中遇到的错误。但就连我在创建新org3时也遇到过类似的问题。我获取联系时出错获取联系“org3.department1”失败:scode:404,代码:63,消息:获取联系失败:sql:结果集中没有行

回答从属关系设置发生的位置。 它是引导的,由ca Docker容器的文件/etc/hyperledger/fabric ca server/fabric ca client config.yaml定义

affiliations:
   org1:
      - department1
      - department2
   org2:
      - department1
链接到文件:

第行:

SampleUser admin = sampleStore.getMember("ädmin", orgName);

您可能需要替换“ädmin”中的ä

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

> affiliations:   
>   org1:
>       - department1
>       - department2    
>   org2:
>       - department1
但是,您可以根据您的组织添加新的从属关系

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

是的,我刚刚将两个组织(每个组织有2个对等模型)更改为4个组织(每个组织有1个对等模型)。除此之外我什么也没做。还有,我们如何配置这个隶属关系crypto-config.yaml,我没有找到它的语法。在crypto-config.yaml文件中,您必须为每个组织将“Template:Count:”设置为1,而不是2。是的,我已经这样做了,我的网络工作正常,如
docker ps
所示。这里我的问题是我不知道如何配置这个
附属关系
,它需要通过用户注册。您好,感谢您的回复。你能看看我以前的帖子吗,这是我如何开始的,但那也不起作用。因此,由于没有太多可用的信息,我只是尝试按照本文中提到的fabric sdk java junit测试类中的方法进行操作,然后我讨论了当前的问题。请对此进行详细说明,以获得完整的答案。我也遇到了同样的问题。。。你找到什么解决办法了吗?谢谢,它真的帮了我的忙。我忘了编辑fabric-ca-server-config.yamlCan u中的“附加关系”部分。请解释一下这里的从属关系是什么意思?