Todos los productos
Search
Centro de documentos

Enterprise Distributed Application Service:HSF API reference

Última actualización: Sep 03, 2026

HSF proporciona cuatro clases para publicar y suscribirse a servicios. Cada clase está disponible como una API de Java o como una configuración XML de Spring.

Clase

Función

Enfoque

HSFApiProviderBean

Publicar un servicio

API de Java

HSFSpringProviderBean

Publicar un servicio

XML de Spring

HSFApiConsumerBean

Suscribirse a un servicio

API de Java

HSFSpringConsumerBean

Suscribirse a un servicio

XML de Spring

Cada clase de Spring (HSFSpringXxxBean) expone la misma configuración que los métodos setter de su clase API correspondiente (HSFApiXxxBean).

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • El SDK de EDAS agregado como dependencia de Maven (consulte Agregar la dependencia)

  • Una interfaz de servicio y su clase de implementación

Agregar la dependencia

Agregue la siguiente dependencia a su archivo pom.xml:

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

Reemplace {version} con la versión de su SDK de EDAS.

Publicar un servicio (ProviderBean)

Un bean de proveedor publica la implementación de una interfaz de servicio en el registro de HSF para que los consumidores puedan descubrirla e invocarla.

Importante

Inicialice cada HSFApiProviderBean solo una vez por servicio. Almacene el objeto en caché después de la inicialización, ya que su creación consume muchos recursos.

Enfoque de API de Java

Utilice com.taobao.hsf.app.api.util.HSFApiProviderBean para publicar un servicio mediante programación.

// Instantiate and configure a provider bean.
HSFApiProviderBean hsfApiProviderBean = new HSFApiProviderBean();
hsfApiProviderBean.setServiceInterface("com.taobao.hsf.test.HelloWorldService");
hsfApiProviderBean.setTarget(target); // target is the implementation object of the interface specified by serviceInterface.
hsfApiProviderBean.setServiceVersion("1.0.0");
hsfApiProviderBean.setServiceGroup("HSF");

// Initialize the provider bean to publish the service.
hsfApiProviderBean.init();

Enfoque de XML de Spring

Utilice com.taobao.hsf.app.spring.util.HSFSpringProviderBean en un archivo de configuración de Spring para publicar un servicio de forma declarativa.

<bean id="helloWorldService" class="com.taobao.hsf.test.HelloWorldService" />

<bean class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init">
    <!-- [Required] Service interface -->
    <property name="serviceInterface" value="com.taobao.hsf.test.HelloWorldService" />

    <!-- [Required] Implementation object (Spring bean ID) -->
    <property name="target" ref="helloWorldService" />

    <!-- [Optional] Service version. Default: 1.0.0 -->
    <property name="serviceVersion" value="1.0.0" />

    <!-- [Optional] Service group. Default: HSF -->
    <property name="serviceGroup" value="HSF" />

    <!-- [Optional] Service description -->
    <property name="serviceDesc" value="HelloWorldService providered by HSF" />

    <!-- [Optional] Response timeout in milliseconds. Default: 3000 -->
    <property name="clientTimeout" value="3000"/>

    <!-- [Optional] Per-method timeout. Takes precedence over clientTimeout. -->
    <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] Serialization method. Valid values: java, hessian, hessian2, json, kryo. Default: hessian2 -->
    <property name="preferSerializeType" value="hessian2"/>

    <!-- [Optional] Minimum threads in a dedicated thread pool. Default: shared HSF thread pool -->
    <property name="corePoolSize" value="10"/>

    <!-- [Optional] Maximum threads in a dedicated thread pool. Default: shared HSF thread pool -->
    <property name="maxPoolSize" value="60"/>
</bean>

Propiedades de ProviderBean

Propiedad

Tipo

Obligatorio

Predeterminado

Descripción

serviceInterface

String

Sí

N/A

La interfaz que proporciona el servicio HSF. Los consumidores utilizan esta interfaz para suscribirse.

target

Object

Sí

N/A

El objeto de implementación de la interfaz especificada por serviceInterface.

serviceVersion

String

No

1.0.0

Versión del servicio. Los consumidores usan este valor para suscribirse a una versión específica.

serviceGroup

String

No

HSF

Grupo del servicio. Los consumidores usan este valor para suscribirse a un grupo específico.

serviceDesc

String

No

N/A

Descripción del servicio con fines de gestión.

clientTimeout

int

No

3000

Tiempo de espera de respuesta en milisegundos. Lanza HSFTimeOutException si el proveedor no responde a tiempo.

methodSpecials

MethodSpecial[]

No

N/A

Anulaciones de tiempo de espera por método. Establezca MethodSpecial.methodName con el nombre del método y MethodSpecial.clientTimout con el valor de tiempo de espera en milisegundos. Tiene prioridad sobre clientTimeout.

preferSerializeType

String

No

hessian2

Protocolo de serialización para los datos de solicitud y respuesta. Valores válidos: java, hessian, hessian2, json, kryo.

corePoolSize

String (valor entero)

No

0

Número mínimo de hilos en un pool de hilos dedicado para este servicio. Si no se configura, se utiliza el pool de hilos compartido del proveedor HSF.

maxPoolSize

String (valor entero)

No

0

Número máximo de hilos en un pool de hilos dedicado para este servicio. Si no se configura, se utiliza el pool de hilos compartido del proveedor HSF.

Suscribirse a un servicio (ConsumerBean)

Un bean de consumidor se suscribe a un servicio HSF publicado y proporciona un objeto proxy para la invocación remota.

Importante

Inicialice cada HSFApiConsumerBean solo una vez por servicio. Almacene en caché tanto el objeto bean como el proxy que devuelve, ya que su creación consume muchos recursos.

Aviso

HSFApiConsumerBean almacena internamente las configuraciones de servicio en caché. Si configura el mismo servicio varias veces, solo surtirá efecto la primera configuración.

Enfoque de API de Java

Utilice com.taobao.hsf.app.api.util.HSFApiConsumerBean para suscribirse a un servicio mediante programación.

// 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.
// true = wait synchronously for address push (timeout: 3000 ms).
// false (default) = initialize asynchronously.
hsfApiConsumerBean.init(true);

// Get the HSF proxy object.
HelloWorldService helloWorldService = (HelloWorldService) hsfApiConsumerBean.getObject();

// Call the remote service.
String helloStr = helloWorldService.sayHello("Li Lei");

Enfoque de XML de Spring

Utilice com.taobao.hsf.app.spring.util.HSFSpringConsumerBean en un archivo de configuración de Spring para suscribirse a un servicio de forma declarativa.

<bean id="helloWorldService" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean">
    <!-- [Required] Service interface name -->
    <property name="interfaceName" value="com.taobao.hsf.test.HelloWorldService" />

    <!-- [Required] Service version -->
    <property name="version" value="1.0.0" />

    <!-- [Required] Service group -->
    <property name="group" value="HSF" />

    <!-- [Optional] Request timeout in milliseconds. Consumer timeout takes precedence over provider timeout. -->
    <property name="clientTimeout" value="3000" />

    <!-- [Optional] Per-method timeout. Takes precedence over clientTimeout. -->
    <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] Synchronous wait time (ms) for Config Server to push a service address.
         Prevents HSFAddressNotFoundException when the service is called before the address arrives.
         Recommended: 5000 -->
    <property name="maxWaitTimeForCsAddress" value="5000"/>

    <!-- [Optional] Async call methods. Format: name:<method>;type:<future|callback>;listener:<class>
         The listener field only applies to the callback type and must implement HSFResponseCallback. -->
    <property name="asyncallMethods">
        <list>
            <value>name:sayHello;type:callback;listener:com.taobao.hsf.test.service.HelloWorldServiceCallbackHandler</value>
        </list>
    </property>

    <!-- [Optional] Proxy mode. Default: jdk. Set to javassist to block the consumer bean. -->
    <property name="proxyStyle" value="jdk" />
</bean>

Propiedades de ConsumerBean

Propiedad

Tipo

Obligatorio

Predeterminado

Descripción

interfaceName

String

Sí

N/A

El nombre de la interfaz a la que desea suscribirse.

version

String

Sí

N/A

La versión del servicio destino.

group

String

Sí

N/A

El grupo del servicio destino.

clientTimeout

int

No

N/A

Tiempo de espera de la solicitud en milisegundos. Lanza HSFTimeOutException si no se recibe respuesta. El tiempo de espera del consumidor tiene prioridad sobre el del proveedor. Si no se establece, se aplica el tiempo de espera del proveedor.

methodSpecials

MethodSpecial[]

No

N/A

Anulaciones de tiempo de espera por método. Establezca MethodSpecial.methodName con el nombre del método y MethodSpecial.clientTimout con el valor de tiempo de espera en milisegundos. Tiene prioridad sobre clientTimeout.

maxWaitTimeForCsAddress

int

No

N/A

Milisegundos de espera síncrona para que Config Server envíe una dirección de servicio. Evita HSFAddressNotFoundException cuando se invoca el servicio antes de que llegue la dirección. Recomendado: 5000.

asyncallMethods

List

No

N/A

Métodos para llamar de forma asíncrona. Cada entrada utiliza el formato name:<method>;type:<type>;listener:<class>. Tipos válidos: future (recuperar el resultado con un objeto Future) y callback (HSF invoca al listener después de que finaliza la llamada). El campo listener solo aplica al tipo callback y debe implementar HSFResponseCallback.

proxyStyle

String

No

jdk

Modo de proxy. Establézcalo en javassist para bloquear el bean de consumidor.

Patrones de llamada asíncrona

HSF admite dos patrones de llamada asíncrona para los métodos del consumidor, los cuales se configuran mediante la propiedad asyncallMethods:

Patrón

Funcionamiento

future

Devuelve el control inmediatamente. Recupere el resultado más adelante con un objeto Future.

callback

Devuelve el control inmediatamente. HSF invoca al listener registrado cuando llega la respuesta. El listener debe implementar HSFResponseCallback.