Caver-java 1.5.x를 spring과 함께 사용시 caver의 bean 등록

안녕하세요,

caver-java 1.5.x를 spring과 함께 사용하여,

  1. blochain 네트워크와 연결을 담당하는 caver는 bean으로 등록하여 사용하려고 하는데
    혹시 권고하지 않는 사항일까요?

  2. caver를 bean으로 등록해서 사용하지만, contract 함수를 실행은
    여러가지 address 중(즉 여러개의 keyring 중) 실행시 마다 조건에 맞는 것을 사용하고자 하는데,
    그때마다 bean으로 등록한 caver의 wallet에 등록/제거를 반복해서 사용하는것이 맞는 방법일까요?

AbstractKeyring senderKeyRing = … // contract 함수 실행할 keyRing
caver.wallet.add(senderKeyRing); // 실행할 keyRing을 bean으로 등록한 caver의 wallet에 추가

// contract 함수 실행
Contract contract = new Contract(caver, …);

contract.getMethod(“xxx”).send(Collections.emptyList(), sendOptions);

// 실행할 keyRing을 bean으로 등록한 caver의 wallet에서 제거
caver.wallet.remove(senderKeyRing.getAddress());

안녕하세요. 먼저 클레이튼 포럼에 질문 남겨주셔서 감사드립니다. :slight_smile:

  1. caver를 사용하는데 있어 어떤 부분이 고민이 되시는지 모르겠지만, Klaytn의 public EN을 이용하여 상용화된 서비스를 하는 것은 저희가 권고하지 않고 있습니다.

  2. Caver.wallet는 Caver를 통해 연결된 네트워크(Cypress, Baobob, Local…)에서 사용하는 Keyring을 관리하기 위해 제공되는 자료구조입니다. 굳이 지워야되는 이유가 없다면 안지우고 필요할 때마다 꺼내서 사용할 수 있도록 유지하면된다고 생각합니다.

추가적인 질문이 있으시면 질문 부탁드리겠습니다.

답변 감사드립니다,

1번과 관련하여 질문을 좀 더 구체화하자면,

특정 EN(아마 서비스를 위해 저희가 관리하는 EN이 되겠지요…)과 연결하기 위한 caver를
싱글턴인 빈으로 등록해두고 계속 재사용해도 문제가 없는지에 대한 것이없습니다.

즉, bean으로 등록된 caver는 app 서버와 동일한 생명주기를 갖게되고
계속해서 rpc-json api 호출 등에 사용 될텐데,
1회성이 아닌 다회성 사용등에 문제 없는지
예를 들어,

  • 객체에 상태 정보 유지 등으로 다음 사용에 영향이 없는지
    등이 궁금합니다.

안녕하세요.

json-rpc api호출관련 다회성 사용에 문제 없고, 싱글톤으로 관리되어도 문제 없다고 생각합니다.
다만 필요하다면, App서버의 life cycle에 따라 싱글톤 Caver객체의 내부 정보(연결할 EN url, wallet에 저장된 keyring)를 로드 혹은 삭제하는 로직은 구현되어야 될 것 같습니다.

감사합니다.

1 Like