LoginSignup
0
3

More than 5 years have passed since last update.

Azure WebAppsへのJavaのWebアプリケーション作成

Posted at

目的

WebAppsを使用して簡単なJavaのWebアプリケーションを作成する

コードには直接パスワードを入力せずWebAppsの接続文字列にDB(SQLDatabase)への接続情報を含むことでセキュリティを向上させる

手順1 WebAppsの作成

AppServiceからWebAppsを選択して作成する

手順2 Java環境構築

作成したWebAppsの『アプリケーション設定』を選択し、『全般設定』で
Javaバージョン、Javaマイナーバージョン、Java Webコンテナーに任意の設定を選択

※今回はJava8, 1.8.0_181(oracle), Tomcat 8.5(最新)を選択

手順3 DBへの接続情報を入力

作成したWebAppsの『アプリケーション設定』を選択し、『接続文字列』で
接続文字列名、値、種類を入力する

※今回は以下のように入力する
1.serverId, SQLServerの名前, SQLServer
2.dbId, SQLDatabaseの名前, SQLAzure
3.useId, SQLServerで作成したユーザID, SQLServer
4.pass, SQLServerで作成したパスワード, SQLServer

手順4 アプリの実装

アプリ内で環境変数の取得(System.getenv)で先ほどの接続情報を取得する

種類にSQLServerを選択した場合はSystem.getenv("SQLCONNSTR_接続文字列名")
SQLAzureを選択した場合はSystem.getenv("SQLAZURECONNSTR_接続文字列名")で値を取得する

また、WebContent/WEB-INF/libの下にSQLServerのJDBCドライバを格納すること
https://docs.microsoft.com/ja-jp/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-2017)

以下は簡単なサンプルコード

package servlet;

import java.sql.Connection;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.DriverManager;

public class SQLExecution {

    //WebAppsの環境変数から値を取得
    String hostName = System.getenv("SQLCONNSTR_serverId"); // update me
    String dbName = System.getenv("SQLAZURECONNSTR_dbId"); // update me
    String user = System.getenv("SQLCONNSTR_useId"); // update me
    String password = System.getenv("SQLCONNSTR_pass"); // update me

    String url = String.format("jdbc:sqlserver://%s:1433;database=%s;user=%s;password=%s;encrypt=true;"
        + "hostNameInCertificate=*.database.windows.net;loginTimeout=30;", hostName, dbName, user, password);
    Connection connection = null;
    String sql = null;

    void select() {
    }

    public void insert() {
        try {
            //JDBCドライバを指定
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

            connection = DriverManager.getConnection(url);

            // Create and execute a SELECT SQL statement.
            sql = "insert into testTBL("
                    + "key"
                    + ")"
                    + "Values"
                    + "("
                    + 1
                    + ")";

            try (Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(sql)) {
                connection.close();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

手順5 アプリのデプロイ

アプリをWebAppsにデプロイする
方法はいくつかあるが、今回はAzure Toolkit for Eclipse(https://docs.microsoft.com/ja-jp/java/azure/eclipse/azure-toolkit-for-eclipse-installation?view=azure-java-stable)を使用

アプリを右クリックし『Azure』<『Publish AS Azure Web Apps』を選択し、デプロイしたいWebAppsを選択する

感想

最近はクラウドをよく使うので、接続情報をコードから排除できるのはよかった。
こうしておけば、テスト環境・本番環境でも全く同じコードが使えますし、GitHubなどでコードを公開した時の危険性も減るので重要と思う。

0
3
0

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
0
3