すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:エラーコード: HSF-0029

最終更新日:Mar 05, 2025

エラーメッセージ

High-speed Service Framework(HSF)サービスの呼び出し時に、次のエラーメッセージが報告されます。
There is no TOP transformer for Service:[${serviceUniqueName}].

解決策

Taobao Open Platform(TOP)呼び出しメソッドは、ゲートウェイアプリケーションがバックエンドサービスの API パッケージに依存することを防ぎます。TOP 呼び出しがサーバー上で変換されると、対応する transformer が見つかりません。

クライアントの設定

クライアントは、com.taobao.hsf.app.spring.util.SuperHSFSpringConsumerBeanTop を使用します。このクラスは、サーバーの API パッケージを必要としません。com.taobao.hsf.app.spring.util.SuperHSFSpringConsumerBeanTop#invoke を使用して API を呼び出します。

次のサンプルコードは、クライアントを設定する方法の例を示しています。

/**
 * TOP はこのメソッドを呼び出して、HSF サービスにリモートアクセスします。
 * <p>
 * parameterTypes パラメーターは、呼び出すメソッドのパラメーターの型を示します。完全な Java クラス名である必要があります。パラメーターがアトミック型の場合、型はアトミック型の名前です。
 * </p>
 * 
 * @return ピアサービスの応答またはサービスエラーを返します。
 * 
 * @throws HSFException
 *             ローカルまたはピア HSF レイヤーでエラーが発生した場合、HSFException がスローされます。
 * @throws Throwable
 *              サーバーでエラーが発生した場合、Exception がスローされます。
 */
public Object invoke(String methodName, String[] parameterTypes, Object[] args) throws HSFException, Throwable {
    return consumerBeanTop.invoke(methodName, parameterTypes, args);
}
            

ここで、args はサーバーの実際のサービスタイプではありません。

サーバーの設定

サーバーが初期化されると、com.taobao.hsf.ServiceInvokeTransform.Helper#register が呼び出されて transformer が登録されます。

次のサンプルコードは、サーバーを設定する方法の例を示しています。
/**
 * サービス呼び出しパラメーターを、サービスが受け入れられる形式に変換するために使用されます。
 * 
 * @param methodName
 *            呼び出すサービスメソッドの名前。
 * @param args
 *            変換前の呼び出しパラメーター。
 * @param parameterTypes
 *            呼び出すサービスメソッドの実際のパラメーター型。
 */
abstract public Object[] transformRequest(String methodName, Object[] args, String[] parameterTypes)
        throws Exception;

/**
 * 変換されるリクエストパラメーターの型。
 * 
 * @param methodName
 * @param args
 * @param parameterTypes
 * @return
 * @throws Exception
 */
abstract public String[] transformRequestTypes(String methodName, Object[] args, String[] parameterTypes)
        throws Exception;
            

transformer は、クライアントによって送信されたパラメーターをサーバー上の実際のサービスタイプに変換します。HSF は、変換されたパラメーターに基づいてサービスを呼び出し、transformer を使用してサービス結果を変換し、その結果を TOP クライアントに返します。