All Products
Search
Document Center

Enterprise Distributed Application Service:API manual

Last Updated:Feb 18, 2025

Among the API operations of HSF applications, the key API operations are the operations that are related to creating provider beans and consumer beans.

Background information

Four operation classes are provided based on use cases.

  • com.taobao.hsf.app.api.util.HSFApiProviderBean: creates provider beans by using the API programming method.

  • com.taobao.hsf.app.api.util.HSFApiConsumerBean: creates consumer beans by using the API programming method.

  • com.taobao.hsf.app.spring.util.HSFSpringProviderBean: creates provider beans by using the Spring configuration method.

  • com.taobao.hsf.app.spring.util.HSFSpringConsumerBean: creates consumer beans by using the Spring configuration method.

The configuration property of HSFSpringXxxBean corresponds to the setter method of HSFApiXxxBean. The following content describes the four API operation classes from the aspects of provider beans and consumer beans.

Dependency information

Add the following dependency to the pom.xml file:

<dependency>
     <groupId>com.alibaba.edas</groupId>
     <artifactId>edas-sdk</artifactId>
     <version>{version}</version>
</dependency>

ProviderBean

  • API programming method - HSFApiProviderBean

    You can publish HSF services by configuring and initializing com.taobao.hsf.app.api.util.HSFApiProviderBean.

    The com.taobao.hsf.app.api.util.HSFApiProviderBean configuration and initialization process is implemented only once for the same service. We recommend that you cache the HSFApiProviderBean object because the object is complex.

    • Sample code

      // Instantiate and configure a provider bean.
      HSFApiProviderBean hsfApiProviderBean = new HSFApiProviderBean();
      hsfApiProviderBean.setServiceInterface("com.taobao.hsf.test.HelloWorldService");
      hsfApiProviderBean.setTarget(target); // target indicates the implementation object of the operation that is specified by serviceInterface. hsfApiProviderBean.setServiceVersion("1.0.0");
      hsfApiProviderBean.setServiceGroup("HSF");
      
      // Initialize the provider bean for service publishing. hsfApiProviderBean.init();
    • Configurable property table

      In addition to the properties specified in the preceding sample code, HSFApiProviderBean includes many other configurable properties. You can use the corresponding setter methods to configure these properties.

      Property name

      Type

      Required

      Default value

      Description

      serviceInterface

      String

      Yes

      None

      Specifies the operation used to provide an HSF service. The consumer subscribes to the service by using this property.

      target

      Object

      Yes

      None

      Specifies the service implementation object of the operation that is specified by serviceInterface.

      serviceVersion

      String

      No

      1.0.0

      Specifies the version number of the service. The consumer subscribes to the service by using this property.

      serviceGroup

      String

      No

      HSF

      Specifies the group of the service. The consumer subscribes to the service by using this property.

      serviceDesc

      String

      No

      None

      Specifies the description of the service for easy management.

      clientTimeout

      int

      No

      3000

      Specifies the response time-out period. Unit: millisecond. If the provider returns no response in the time-out period, HSFTimeOutException is thrown.

      methodSpecials

      MethodSpecial[]

      No

      None

      Specifies the response time-out period for some methods in the service. Specify the MethodSpecial.methodName parameter as a method name and specify the MethodSpecial.clientTimout parameter as a time-out period for the current method. This property takes precedence over clientTimeout for the current provider.

      preferSerializeType

      String

      No

      hessian2

      Specifies the serialization method for the service request parameters and the service response result for HSF2. Valid values: java, hessian, hessian2, json, and kryo.

      corePoolSize

      String whose value is an integer

      No

      0

      Configures a separate thread pool for the service and specifies the minimum number of active threads. By default, the public thread pool of the HSF provider is used if this property is not specified.

      maxPoolSize

      String whose value is an integer

      No

      0

      Configures a separate thread pool for the service and specifies the maximum number of active threads. By default, the public thread pool of the HSF provider is used if this property is not specified.

  • Spring configuration method - HSFSpringProviderBean

    You can publish HSF services by configuring a bean of the class com.taobao.hsf.app.spring.util.HSFSpringProviderBean in the Spring profile.

    Sample code

    <bean id="helloWorldService" class="com.taobao.hsf.test.HelloWorldService" />
    
    <bean class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init">
        <! -- [Required] Specify the operation used to externally provide an HSF service. -->
        <property name="serviceInterface" value="com.taobao.hsf.test.HelloWorldService" />
    
        <! -- [Required] Specify the service implementation object of the operation that is specified by serviceInterface. To be specific, the object is the Spring bean ID of the HSF service to be published. -->
        <property name="target" ref="helloWorldService" />
    
        <! -- [Optional] Specify the version number of the service. The default value is 1.0.0. -->
        <property name="serviceVersion" value="1.0.0" />
    
        <! -- [Optional] Specify the group to which the service belongs. The default value is HSF. -->
        <property name="serviceGroup" value="HSF" />
    
        <! -- [Optional] Specify the description of the service for easy management. The default value is null. -->
        <property name="serviceDesc" value="HelloWorldService providered by HSF" />
    
        <! -- [Optional] Specify the response time-out period in milliseconds. If the provider returns no response in the specified period, HSFTimeOutException is thrown. -->
        <! -- The default value is 3000 ms. -->
        <property name="clientTimeout" value="3000"/>
    
        <! -- [Optional] Specify the response time-out period for some methods in the service. This property takes precedence over clientTimeout. -->
        <! -- Specify the MethodSpecial.methodName parameter as a method name and specify the MethodSpecial.clientTimout parameter as a time-out period for the current method. -->
        <property name="methodSpecials">
            <list>
                <bean class="com.taobao.hsf.model.metadata.MethodSpecial">
                    <property name="methodName" value="sum" />
                    <property name="clientTimeout" value="2000" />
                </bean>
            </list>
        </property>
    
        <! -- [Optional] Specify the serialization method for the request parameters and the response result of the service. Valid values: java, hessian, hessian2, json, and kryo. -->
        <! -- The default value is hessian2. -->
        <property name="preferSerializeType" value="hessian2"/>
    
        <! -- [Optional] Configure a separate thread pool for the service and specify the minimum number of active threads. By default, the public thread pool of the HSF provider is used if this property is not specified. -->
        <property name="corePoolSize" value="10"/>
    
        <! -- [Optional] Configure a separate thread pool for the service and specify the maximum number of active threads. By default, the public thread pool of the HSF provider is used if this property is not specified. -->
        <property name="maxPoolSize" value="60"/>
    </bean>

ConsumerBean

  • API programming method - HSFApiConsumerBean

    You can subscribe to HSF services by configuring and initializing com.taobao.hsf.app.api.util.HSFApiConsumerBean.

    The com.taobao.hsf.app.api.util.HSFApiConsumerBean configuration and initialization process is implemented only once for the same service.

    We recommend that you cache the HSFApiConsumerBean object and the retrieved HSF agent because the object size is large.

    Note

    In the HSF, HSFApiConsumerBean caches service configuration. If a subscribed service is configured for multiple times, only the first configuration takes effect.

    • Sample code

      // Instantiate and configure a consumer bean.
      HSFApiConsumerBean hsfApiConsumerBean = new HSFApiConsumerBean();
      hsfApiConsumerBean.setInterfaceName("com.taobao.hsf.test.HelloWorldService");
      hsfApiConsumerBean.setVersion("1.0.0");
      hsfApiConsumerBean.setGroup("HSF");
      
      // Initialize the consumer bean for service subscription.
      // true indicates waiting for address push (time-out period: 3000 ms). The default value is false and indicates an asynchronous call.
      hsfApiConsumerBean.init(true);
      
      // Retrieve the HSF agent. HelloWorldService helloWorldService = (HelloWorldService) hsfApiConsumerBean.getObject();
      
      // Initiate an HSF call. String helloStr = helloWorldService.sayHello("Li Lei");
    • Configurable property table

      In addition to the properties specified in the preceding sample code, HSFApiConsumerBean includes many other configurable properties. You can use the corresponding setter methods to configure these properties.

      Property name

      Type

      Required

      Default value

      Description

      interfaceName

      String

      Yes

      None

      Specifies the name of the interface for service subscription. The consumer subscribes to the service by using this property.

      version

      String

      Yes

      None

      Specifies the version number of the subscribed service. The consumer subscribes to the service by using this property.

      group

      String

      Yes

      None

      Specifies the group of the subscribed service. The consumer subscribes to the service by using this property.

      clientTimeout

      int

      No

      None

      Specifies the request time-out period. Unit: millisecond. If the consumer receives no response from the provider, HSFTimeOutException is thrown. clientTimeout that is specified for the consumer takes precedence over clientTimeout that is specified for the provider. If clientTimeout is not specified for the consumer, clientTimeout that is specified for the provider is used during a remote service call.

      methodSpecials

      MethodSpecial[]

      No

      None

      Specifies the request time-out period for some methods in the service. Specify the MethodSpecial.methodName parameter as a method name and specify the MethodSpecial.clientTimout parameter as a time-out period for the method. This property takes precedence over clientTimeout for the current consumer.

      maxWaitTimeForCsAddress

      int

      No

      None

      Specifies the time for the synchronous wait for Config Server to push an address. Unit: millisecond. This property prevents HSFAddressNotFoundException from occurring when the service is called before the address is pushed. We recommend that you set this property to 5000 ms to meet the requirement for wait time.

      asyncallMethods

      List

      No

      None

      Specifies a list of methods to be asynchronously called. Each string in the list is in the following format:

      • name: the name of the method.

      • type: the type of the asynchronous call.

      • listener: the listener.

      In this list, the listener field takes effect for only asynchronous calls of the callback type. Valid values of the type field:

      • future: The Future method is used to retrieve the request execution result.

      • callback: After the remote service call is completed, HSF uses the response to call back the configured listener. This listener must implement HSFResponseCallback.

      proxyStyle

      String

      No

      jdk

      Specifies the agent mode of the service. Generally, this property does not need to be configured. To block the consumer bean, set this property to javassist.

  • Spring configuration method - HSFSpringConsumerBean

    To subscribe to services, you can configure a bean of the class com.taobao.hsf.app.api.util.HSFSpringConsumerBean in the Spring profile.

    Sample code

    <bean id="helloWorldService" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean">
        <! -- [Required] Specify the name of the operation for service subscription. -->
        <property name="interfaceName" value="com.taobao.hsf.test.HelloWorldService" />
    
        <! -- [Required] Specify the version number of the subscribed service. -->
        <property name="version" value="1.0.0" />
    
        <! -- [Required] Specify the group of the subscribed service. -->
        <property name="group" value="HSF" />
    
        <! -- [Optional] Specify the request time-out period in milliseconds. If the consumer receives no response from the provider, HSFTimeOutException is thrown. --> 
        <! -- clientTimeout that is specified for the consumer takes precedence over clientTimeout that is specified for the provider. If clientTimeout is not specified for the consumer, clientTimeout that is specified for the provider is used during a remote service call.-->
        <property name="clientTimeout" value="3000" />
    
        <! -- [Optional] Specify the request time-out period for some methods in the service. This property takes precedence over clientTimeout for the consumer. -->
        <! -- Specify the MethodSpecial.methodName parameter as a method name and specify the MethodSpecial.clientTimout parameter as a time-out period for the current method. -->
        <property name="methodSpecials">
            <list>
                <bean class="com.taobao.hsf.model.metadata.MethodSpecial">
                    <property name="methodName" value="sum" />
                    <property name="clientTimeout" value="2000" />
                </bean>
            </list>
        </property>
    
        <! -- [Optional] Specify the time (unit: millisecond) to synchronously wait for Config Server to push an address. -->
        <! -- This prevents HSFAddressNotFoundException from occurring when the service is called before the address is pushed. -->
        <! -- We recommend that you set this property to 5000 ms to meet the requirement for wait time. -->
        <property name="maxWaitTimeForCsAddress"  value="5000"/>
    
        <! -- [Optional] Specify a list of methods to be asynchronously called. Each string in the list is in the following format: -->
        <! -- name: the name of the method. -->
        <! -- type: the type of the asynchronous call. -->
        <! -- listener: the listener. -->
        <! -- The listener field takes effect for only asynchronous calls of the callback type.-->
        <! -- Valid values of the type field: -->
        <! -- future: The Future method is used to retrieve the request execution result. -->
        <! -- callback: HSF uses the response to call back the configured listener. The listener must implement HSFResponseCallback. -->
        <property name="asyncallMethods">
            <list>
                <value>name:sayHello;type:callback;listener:com.taobao.hsf.test.service.HelloWorldServiceCallbackHandler</value>
            </list>
        </property>
    
        <! -- [Optional] Specify the proxy mode of the service. Generally, this property does not need to be configured. To block the consumer bean, set this property to javassist. -->
        <property name="proxyStyle" value="jdk" />
    </bean>