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

Mobile Platform as a Service:サービス定義と開発

最終更新日:Mar 01, 2026

このドキュメントは、mpaaschannel または Dubbo API サービスを公開する業務システムなど、ゲートウェイの Service Provider Interface (SPI) を統合したシステムを対象としています。HTTP API を使用する業務システムには適用されません。

41

ゲートウェイパッケージのインポート

プロジェクトのメイン pom.xml ファイルに、以下のパッケージをインポートします。プロジェクトにこれらの依存関係がすでに存在する場合は、このステップをスキップできます。

すべての基本的な依存関係をインポートする必要があります。

基本的な依存関係

<dependency>
    <groupId>com.alipay.gateway</groupId>
    <artifactId>mobilegw-unify-spi-adapter</artifactId>
    <version>1.0.5.20201010</version>
</dependency>
<dependency>
    <groupId>com.alipay.gateway</groupId>
    <artifactId>mobilegw-unify-log</artifactId>
    <version>1.0.5.20201010</version>
</dependency>
<dependency>
    <groupId>com.alipay.hybirdpb</groupId>
    <artifactId>classparser</artifactId>
    <version>1.2.2</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.5</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.72_noneautotype</version>
</dependency>
<dependency>
    <groupId>com.alipay.gateway</groupId>
    <artifactId>mobilegw-unify-common</artifactId>
    <version>1.0.5.20201010</version>
</dependency>

MPC 依存関係

<dependency>
    <groupId>com.alipay.gateway</groupId>
    <artifactId>mobilegw-unify-spi-mpc</artifactId>
    <version>1.0.5.20201010</version>
</dependency>
<dependency>
    <groupId>com.alipay.mpaaschannel</groupId>
    <artifactId>common</artifactId>
    <version>2.4.2019040801</version>
</dependency>
<dependency>
    <groupId>com.alipay.mpaaschannel</groupId>
    <artifactId>tenant-client</artifactId>
    <version>2.4.2019040801</version>
</dependency>

サービスインターフェイスの定義と実装

要件に基づいて、com.alipay.xxxx.MockRpc などのサービスインターフェイスを定義します。次に、com.alipay.xxxx.MockRpcImpl などのインターフェイスの実装を提供します。

説明

  • メソッド定義では、入力パラメーターを Value Object (VO) として定義します。この方法により、後でメソッドのシグネチャを変更することなく、VO にパラメーターを追加できます。

  • サービスインターフェイスの定義仕様の詳細については、「ビジネスインターフェイスの定義仕様」をご参照ください。

operationType の定義

サービスインターフェイスのメソッドに @OperationType アノテーションを追加して、公開されるサービスの名前を定義します。@OperationType アノテーションには 3 つのメンバーがあります:

  • value:RPC サービスの一意の識別子。フォーマットは organization.product_domain.product.sub_product.operation です。

  • name:インターフェイスの名前。

  • desc:インターフェイスの説明。

説明

  • value は、ゲートウェイ内でグローバルに一意である必要があります。他のサービスとの競合を避けるために、この値を詳細に定義してください。命名競合が発生すると、サービスが登録できなくなる可能性があります。

  • メンテナンスを容易にするために、@OperationType アノテーションの 3 つのフィールドすべてに値を入力してください。

例:

public interface MockRpc {

    @OperationType("com.alipay.mock")
    Resp mock(Req s);

    @OperationType("com.alipay.mock2")
    String mock2(String s);
}

public static class Resp {
    private String msg;
    private int    code;

    // getter と setter は省略
}

public static class Req {
    private String name;
    private int age;

    // getter と setter は省略
}

次に、ゲートウェイが提供する SPI パッケージを使用して、定義された API サービスを指定されたレジストリに登録します。

MPC API サービスの登録

MPC API サービスを登録するには、次のパラメーターが必要です:

  • registryUrl:レジストリのアドレス。共有金融テクノロジーレジストリのアドレスは mpcpub.mpaas.cn-hangzhou.aliyuncs.com です。

  • appName:ご利用のアプリケーションの名前。これは API グループ名と同じである必要があります。

  • workspaceId:アプリケーションが配置されている環境のワークスペース ID。

  • projectName:アプリケーションが属するテナントのプロジェクト名。これは API グループのプロジェクト名と同じである必要があります。

  • privateKeyPath:RSA 秘密鍵のクラスパス。このキーは、mpaaschannel への接続を検証するために使用されます。これを /META-INF/config/rsa-mpc-pri-key-{env}.der に配置することを推奨します。ここで、{env} は dev、sit、prod などのさまざまな環境を表します。

公開鍵の設定

対応する環境のコンソールで、左側のナビゲーションウィンドウから [コード管理] > [インターフェイスキー] > [設定] を選択します。ご利用の秘密鍵に対応する RSA 公開鍵を設定します。

次のコマンドは、RSA キーペアを生成する方法を示しています。コンソールで公開鍵を設定します。ご利用のバックエンドアプリケーションの ${privateKeyPath} に秘密鍵ファイルを設定します:

* キーペアの生成方法: 
* ### 2048 ビットの RSA 秘密鍵を生成 
* 
* $ openssl genrsa -out private_key.pem 2048 
* 
* ### 秘密鍵を PKCS#8 フォーマットに変換 (Java で読み取り可能にするため) 
* 
* $ openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem -out private_key.der -nocrypt 
* 
* ### 公開鍵部分を DER フォーマットで出力 (Java で読み取り可能にするため) 
* 
* $ openssl rsa -in private_key.pem -pubout -outform DER -out public_key.der 
* 
* ### base64 に変換:
* 
* ## 生成された秘密鍵は、バックエンドアプリケーションで設定します
* $ openssl base64 -in private_key.der -out private_key_base64.der
* 
* ## 生成された公開鍵は、コンソールのインターフェイスキーで設定します
* $ openssl base64 -in public_key.der -out public_key_base64.der
* 
* ### 送信する前に、空白文字と改行を削除することを忘れないでください!

Spring メソッド

  1. 対応するバンドルの Spring 設定ファイルで、定義されたサービスの Spring Bean を宣言します。

     <bean id="mockRpc" class="com.alipay.gateway.spi.mpc.test.MockRpcImpl"/>
  2. 対応するバンドルの Spring 設定ファイルで、サービスを公開するスターター Bean を宣言します。

    MpcServiceStarter インターフェイスは、OperationType アノテーションを持つすべての Bean を、mpaaschannel プロトコルを使用して指定されたレジストリに登録します。

    <bean id="mpcServiceStarter" class="com.alipay.gateway.spi.mpc.MpcServiceStarter">
     <property name="registryUrl" value="${registy_url}"/>
     <property name="appName" value="${app_name}"/>
     <property name="workspaceId" value="${workspace_id}"/>
     <property name="projectName" value="${project_name}"/>
     <property name="privateKeyPath" value="${privatekey_path}"/>
    </bean>

Spring Boot メソッド

Spring Boot メソッドは、基本的に Spring メソッドと同じです。唯一の違いは、XML 設定ファイルの代わりにアノテーションを使用して登録することです。

  1. アノテーションを使用して、定義されたサービスを Bean として登録します:

    @Service
    public class MockRpcImpl implements MockRpc{
    }
  2. アノテーションを使用して、サービスを公開するスターターを定義します:

    @Configuration
    public class MpaaschannelDemo {
     @Bean(name="mpcServiceStarter")
     public MpcServiceStarter mpcServiceStarter(){
         MpcServiceStarter mpcServiceStarter = new MpcServiceStarter();
         mpcServiceStarter.setWorkspaceId("${workspace_id}");
         mpcServiceStarter.setAppName("${app_name}");
         mpcServiceStarter.setRegistryUrl("${registy_url}");
         mpcServiceStarter.setProjectName("${project_name}");
         mpcServiceStarter.setPrivateKeyPath("${privatekey_path}");
         return mpcServiceStarter;
     }
    }

MPC ログの構成

トラブルシューティングを容易にするために、MPC 関連のログを設定できます。次の例は、log4j の設定を示しています:

<!-- [MPC Logger] テナントリンク、接続確立と設定情報を記録 -->
    <appender name="MPC-TENANT-LINK-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="${log_root}/mpaaschannel/tenant-link.log"/>
        <param name="append" value="true"/>
        <param name="encoding" value="${file.encoding}"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%X{remoteAddr}][%X{uniqueId}] %-5p %c{2} - %m%n"/>
        </layout>
    </appender>

    <!-- [MPC Logger] ストリーム関連のデータ (テナントストリーム <-> コンポーネントストリームのペアを含む) を記録 -->
    <appender name="MPC-STREAM-DATA-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="${log_root}/mpaaschannel/stream-data.log"/>
        <param name="append" value="true"/>
        <param name="encoding" value="${file.encoding}"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%X{remoteAddr}][%X{uniqueId}] %-5p %c{2} - %m%n"/>
        </layout>
    </appender>


<!-- [MPC Logger] テナントログ -->
    <logger name="TENANT-LINK-DIGEST" additivity="false">
        <level value="INFO" />
        <appender-ref ref="MPC-TENANT-LINK-APPENDER" />
        <appender-ref ref="ERROR-APPENDER" />
    </logger>

    <!-- [MPC Logger] コンポーネントログ -->
    <logger name="STREAM-DATA-DIGEST" additivity="false">
        <level value="INFO" />
        <appender-ref ref="MPC-STREAM-DATA-APPENDER" />
        <appender-ref ref="ERROR-APPENDER" />
    </logger>

結果

これらの手順を完了すると、ゲートウェイでいくつかの操作を実行して、API サービスをクライアントに公開できます。詳細については、「API の登録」をご参照ください。