Todos os produtos
Search
Central de documentação

Enterprise Distributed Application Service:Contexto de chamada

Última atualização: Jul 04, 2026

O contexto de chamada inclui propriedades da chamada e dados personalizados transmitidos, além dos parâmetros específicos da interface. As propriedades da chamada abrangem o endereço IP, o nome do aplicativo que inicia a chamada e o tempo limite.

Especifique e recupere o contexto de chamada em andamento

A classe com.taobao.hsf.util.RequestCtxUtil oferece um método estático para especificar e recuperar o contexto de chamada. Com base em ThreadLocal, os métodos getxxx removem a propriedade xxx da variável ThreadLocal. Esse método tem efeito apenas para uma única chamada da thread atual.

A tabela a seguir descreve os métodos usados para especificar e recuperar propriedades específicas.

  • Consumidores

    Método

    Descrição

    setRequestTimeout()

    Define o tempo limite para uma única chamada.

    setUserId()

    Especifica o ID do usuário do serviço de unidade na chamada atual. Este método é obrigatório para chamadas genéricas.

    getProviderIp()

    Recupera o endereço IP do provedor chamado mais recentemente.

    setTargetServerIp(String ip)

    Determina o endereço IP do provedor desejado na próxima chamada da thread atual. Esse endereço IP deve constar na lista de endereços IP dos serviços fornecidos por memória.

    setDirectTargetServerIp(String targetIp)

    Indica o endereço IP do provedor na próxima chamada da thread atual. Este método ignora o registro e a lista de endereços IP na memória.

  • Provedores

    Método

    Descrição

    getClientIp()

    Obtém o endereço IP do chamador.

    getAppNameOfClient()

    Retorna o nome do aplicativo utilizado pelo chamador.

    isHttpRequest()

    Verifica se a chamada é uma solicitação HTTP.

    getHttpHeader(String key)

    Recupera a propriedade de cabeçalho da solicitação HTTP.

Transmita o contexto de solicitação personalizado

O RpcContext disponibiliza um método para transmitir dados adicionais ao provedor sem modificar a interface. O tipo de parâmetro pode ser um objeto de domínio personalizado (DO) ou um tipo básico. Certifique-se de que a extremidade remota consiga serializar parâmetros do mesmo tipo.

  • Defina o contexto antes de o consumidor iniciar a chamada.

    //setup context before rpc call
    RPCContext rpcContext = RPCContext.getClientContext();
    rpcContext.putAttachment("tetantId", "123");
    
    //This is an RPC call. The call context is also transmitted to the peer end.
     orderService.queryOrder(1L);
  • Recupere o contexto utilizando os métodos do provedor.

    //get context data
    RPCContext rpcContext = RPCContext.getServerContext();
    String myContext = (String)rpcContext.getAttachment("tetantId");