Dropwizard JDBI フレームワークを使用して Web サービスを開発しています。
ここで、yaml ファイルに db 構成を含める代わりに、「ユーザー指定のパラメーター」を使用したいと思います。つまり、db 構成はエンドポイント URL を介して提供されます。
- dropwizard jdbi を介してカスタム クレデンシャルを使用できますか?
はいの場合、これを参照しながらコードでどのような変更を行う必要がありますか? ->
http://dropwizard.readthedocs.org/en/latest/manual/jdbi.html
通常の流れでは、サービスメソッドは実行メソッドで構成の詳細を取得することを理解しています-
-- 構成クラス
public class ExampleConfiguration extends Configuration {
@Valid
@NotNull
@JsonProperty
private DatabaseConfiguration database = new DatabaseConfiguration();
public DatabaseConfiguration getDatabaseConfiguration() {
return database;
}
}
-- サービスクラス
@Override
public void run(ExampleConfiguration config,
Environment environment) throws ClassNotFoundException {
final DBIFactory factory = new DBIFactory();
final DBI jdbi = factory.build(environment, config.getDatabaseConfiguration(), "postgresql");
final UserDAO dao = jdbi.onDemand(UserDAO.class);
environment.addResource(new UserResource(dao));
}
-- そして yaml
database:
# the name of your JDBC driver
driverClass: org.postgresql.Driver
# the username
user: pg-user
# the password
password: iAMs00perSecrEET
# the JDBC URL
url: jdbc:postgresql://db.example.com/db-prod
しかし、この場合、リソース レベルで構成の詳細を取得する可能性があります...
みたいな -
@GET
@Path(value = "/getProduct/{Id}/{dbUrl}/{dbUname}/{dbPass}")
@Produces(MediaType.APPLICATION_JSON)
public Product getProductById(@PathParam(value = "Id") int Id,
@PathParam(value = "dbUrl") String dbUrl,
@PathParam(value = "dbUname") String dbUname,
@PathParam(value = "dbPath") String dbPass) {
//I have to connect to the DB here! using the params i have.
return new Product(); //should return the Product
}
誰かが私に方向性を教えていただければ幸いです。