LoginSignup
1

More than 3 years have passed since last update.

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

Posted at

はじめに

前回、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」を選択します。
図1.png

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

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

Finish を押下します

image.png

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

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

図20.png

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

URLがあるのでクリック
image.png

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

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

System.getenv("VCAP_SERVICES")

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

図24.png

取得時の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;
  }

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

image.png

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

おわりに

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1