SAP CP Trial環境でMulti Target Applicationを作ってみる【JavaアプリとDBModuleの連携】


はじめに

前回、SAP CloudPlatform Trial環境でMTA(Multi Target Application)を作成して
MTAプロジェクトにDBModuleを追加しました。

【前回】
 SAP CP Trial環境でMulti Target Applicationを作ってみる【DBModuleの作り方】

最終的には

DB ⇔ OData ⇔ Fiori
の連携を実現できるMTAプロジェクト作成を目指します。

ということで、
今回はODataServiceの作成の前提として、
前回作成したDBModuleと連携できるJavaアプリを同じMTAプロジェクト内に作成してみます。

そのため、SAP CloudPlatform Trial環境でのHDI Containerインスタンス作成や
MTA・DBModuleの作成が前提となっています。

Java Moduleの追加

DBModuleを含むMTAプロジェクトを右クリックし、
「New」→「Java Module」を選択します。

作成するJava Moduleのテンプレートを選びます。
「Spring Boot Application」を選択してNext

次にModuleの名前を決めます。

Finish を押下します

Java Moduleが追加されて、
中身には"Hello World !!"となにかDBとの接続をしてくれそうなコードがありました(HelloController.java)

動きそうだったので、
springModを選択した状態で実行ボタンを押下し、
Java Moduleを実行してみました。
コンソール部分にRunningって出たらOK

SAP CloudPlatformのコクピット画面からApplicationsを確認します。
ステータスがStartedでspringModと書いてあるやつがあるので詳細画面を開きます。

URLがあるのでクリック

「Hello World !!」が表示されました。
しかし、JDBCはつながっていないみたいです

もう一度WebIDEに戻り、
HelloController.javaの中のDB接続周りを確認してみます。

System.getenv("VCAP_SERVICES")

この中身を確認したところ、DBの接続設定を取得しようされていました。
取得されている内容はCF環境のdevスペースにあるHDI ContainerのServiceInstanceの一覧に増えていた以下のインスタンスの詳細情報でした。

取得時のKey等が違ったので、以下のように修正


  private Connection getConnection() {
    Connection conn = null;
    String DB_USERNAME = "";
    String DB_PASSWORD = "";
    // String DB_HOST = "";
    // String DB_PORT = "";

    try {
        JSONObject obj = new JSONObject(System.getenv("VCAP_SERVICES"));
        JSONArray arr = obj.getJSONArray("hanatrial");
        DB_USERNAME = arr.getJSONObject(0).getJSONObject("credentials").getString("user");
        DB_PASSWORD = arr.getJSONObject(0).getJSONObject("credentials").getString("password");
        // DB_HOST = arr.getJSONObject(0).getJSONObject("credentials").getString("host").split(",")[0];
        // DB_PORT = arr.getJSONObject(0).getJSONObject("credentials").getString("port");
        // String DB_READ_CONNECTION_URL = "jdbc:sap://" + DB_HOST + ":" + DB_PORT;
        String DB_READ_CONNECTION_URL = arr.getJSONObject(0).getJSONObject("credentials").getString("url");

        conn = (Connection) DriverManager.getConnection(DB_READ_CONNECTION_URL, DB_USERNAME, DB_PASSWORD);
    } catch (Exception e) {
        System.out.println("Connection Error");
    }

    return conn;
  }

保存して再度実行してみました。

うまくいった感じがします。

おわりに

上記まででひとまずMTAで実現する
  DB ⇔ OData ⇔ Fiori
のOData部分のベースが作成できたと思います。

次は今回連携したJavaアプリをベースに、
OData部分をで作成したいと思います。