2017-05-13 7 views
0

私はspark javaを使用して簡単なREST APIを構築しています。プロジェクトでは、ストレージにPostgres DB、構築システムにgradleを使用します。 fat JarはAWSに配置されています。Spark Javaの動的データベース設定認証情報を提供するには?

私は3つの環境を持っています。localstaging & productionです。

dbHost = "localhost" 
    dbUsername = "myusername" 
    dbPassword = "mypassword" 
    database = "mydb" 
    dbPort = "5432" 

はどのようにバリアントを構築し、動的にfatJarに基づいて、これらの値を提供するために、各脂肪のjarの作成のために、私はビルドをローカルに使用する1以下のように特定の構成を提供したいですか?

+1

それぞれのプロパティファイルはどうですか?たとえば、 'config-local.properties'、' config-production.properties'など –

+0

@ k.liakosヒントをお寄せいただきありがとうございます:)私はすでに同じ方法で問題を解決しています。私は私の答えに詳細な解決策を与えました。 – blizzard

答えて

0

私はこのサンプルgithubプロジェクトKotlin-dev-proxyに従うことによって.propertiesファイルを使用しました。

サーバーは、app_environmentという環境変数を読み取り、適切なリソースファイルを使用します。

サンプルコード:

DbConfig.kt

data class DbConfig(
     val dbHost: String, 
     val dbUsername: String, 
     val dbPassword: String, 
     val dbName: String, 
     val dbPort: Int) 

ServerSettings.kt

class ServerSettings(settings: String) { 
    val resources = Properties() 

    init { 
     val fileUrl: URL = resources.javaClass.getResource("/$settings.properties") 
       ?: throw FileNotFoundException("$settings.properties file not found") 
     fileUrl.openStream().use { resources.load(it) } 
    } 

    fun printSettings() = resources.stringPropertyNames().forEach { 
     println("Property: $it has value: '${resources[it]}'") 
    } 

    fun getString(key: String): String = resources[key]!! as String 

    fun getInt(key: String): Int = (resources[key]!! as String).toInt() 
} 

DbConfig.kt

fun provideDbConfig(): DbConfig { 
     val settings = ServerSettings(System.getenv("app_environment")) 
     settings.printSettings() 

     return DbConfig(
       dbHost = settings.getString("dbHost"), 
       dbUsername = settings.getString("dbUsername"), 
       dbPassword = settings.getString("dbPassword"), 
       dbName = settings.getString("dbName"), 
       dbPort = settings.getInt("dbPort") 
     ) 
    } 

リソース/ develop.properties

# Local Db values 
dbHost=localhost 
dbUsername=postgresusername 
dbPassword=postgrespassword 
dbName=mydbname 
dbPort=5432 

アマゾンEBS、後藤のソフトウェア構成で展開しながら、環境のために環境変数の適切な(ステージング/生産)を追加します。

関連する問題