実行時にデータベースURLを取得する
3286 ワード
そこには、Oracleデータに接続prprbootアプリケーションです.データベースのURLは
` getmapping ( path =)/HealthCheck "
生成= mediatype.アプリケーション
)
パブリック文字列
string [] ActiveProfile =環境.getActiveProfile ()
最終的なBeanWrapperアクセサ= PropertyAccessorFactory.ForbeanPropertyAccess ( DataSource );
最後の文字列.の値を取得します.
string URL = null ;
ログ.エラー( exit . getmessage (), ex );
}
}
オーバーライド
パブリック文字[[] getDataSourceCount ()メソッドSqlException ()をスローする
getDataSourceProperties ()を返す
}
spring.datasource.url=jdbc:oracle:thin:@(DESCRIPTION=\
(LOAD_BALANCE=OFF)(FAILOVER=ON)\
(ADDRESS=(PROTOCOL=TCP)(HOST=domainName1.com) (PORT=1521))\
(ADDRESS=(PROTOCOL=TCP)(HOST=domainName2.com)(PORT=1521))\
(CONNECT_DATA=(SERVICE_NAME=xyz)))
このURLは、1つのホストがダウンしているときにアプリケーションが2番目のデータベースに接続するように構成されます.データベースへのURLは、次のようにアプリケーションHealthCheckで印刷されますHello
version : 4.0.0
build : 2022-03-3
datasource : oracle.jdbc.OracleDriver
db url : jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=OFF)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=domainName1.com) (PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=domainName2.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xyz)))
db status : ok
私の質問は、どのようにして使用されているデータベースのホスト名を取得できるかということです.つまり、現在使用しているホスト(DomainName 1またはDomainName 2)をアプリケーションによってどのようにしてHealthCheckに表示できるかを意味します.例えば以下のようになります.Hello
version : 4.0.0
build : 2022-03-3
datasource : oracle.jdbc.OracleDriver
db url : jdbc:oracle:thin:@domainName1.com: 1521/coldv1
db status : ok (LVZ count = 379)
このHealthCheckに使用されたJavaコードは以下の通りです.` getmapping ( path =)/HealthCheck "
生成= mediatype.アプリケーション
)
パブリック文字列
string [] ActiveProfile =環境.getActiveProfile ()
最終的なBeanWrapperアクセサ= PropertyAccessorFactory.ForbeanPropertyAccess ( DataSource );
最後の文字列.の値を取得します.
string URL = null ;
if(activeProfiles[1].equals("external_tomcat")) {
url = String.valueOf(accessor.getPropertyValue("url"));
}else{
try {
String[] dataSourceProperties = nameService.getDataSource();
url = dataSourceProperties[0];
} catch (SQLException ex) {
//使用可能です.printStacktrace ()も参照ください.ログ.エラー( exit . getmessage (), ex );
}
}
String version = buildProperties.getVersion();
String buildTimestamp = String.valueOf(buildProperties.getTime());
BigDecimal count = nameService.getCount("Table_name_of_database");
StringBuilder result = new StringBuilder("Hello")
.append("\nversion :\t")
.append(version)
.append("\nbuild :\t")
.append(buildTimestamp)
.append("\ndatasource :\t")
.append(driverClassName)
.append("\ndb url :\t")
.append(url)
.append("\ndb status :\tok ")
.append(count.intValue())
.append(")");
return result.toString();
}`
名前空間.ジャバオーバーライド
パブリック文字[[] getDataSourceCount ()メソッドSqlException ()をスローする
getDataSourceProperties ()を返す
}
public String[] getDataSourceProperties() {
String[] dataSourceProperties = new String[2];
HikariDataSource dataSource = getDataSourceFromHibernateEntityManager();
if(dataSource.getJdbcUrl() != null){
dataSourceProperties[0] = dataSource.getJdbcUrl();
dataSourceProperties[1] = dataSource.getDataSourceClassName();
}
return dataSourceProperties;
}`
Reference
この問題について(実行時にデータベースURLを取得する), 我々は、より多くの情報をここで見つけました https://dev.to/eriftekhar/getting-the-database-url-at-run-time-3ajiテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol