私はballerina 0.91を使用し、oracleデータベースでデータを取得するためにREST GETサービスを実行しようとします。次に、sql:ClientConnectorを使用したOracle Infoの例を示します。wso2 BallerinaサービスでDB接続を使用する
service<http> MyService {
@http:GET {}
@http:Path {value: "/myService"}
resource apiGET (message m) {
string driverClass = "oracle.jdbc.driver.OracleDriver";
string dbURL = "jdbc:oracle:thin:@xxx:1521:yyy";
string username = "aaa";
string password = "bbb";
map propertiesMap = {"driverClassName":driverClass,"jdbcUrl":dbURL, "username":username, "password":password};
sql:ClientConnector myConnection = create sql:ClientConnector(propertiesMap);
<getting data from the database and prepare to send back to client>
message response = {};
messages:setJsonPayload(response, myData);
sql:ClientConnector.close(myConnection);
reply response;
}
}
したがって、各GET内でDB接続を使用すると、データベースへの接続を開いて最後にもう一度閉じる必要があります。これは時間がかかる。
また、サービスレベルでDB接続を開くことができるので、GET以外ではDB接続を一度開き、GET内でいつでもDBを使用できます。これは非常に高速で、Composer内でサービスを実行すると、いくつかのクライアントでGETを複数回並列に使用してもうまく動作しますが、DB接続が不足していません。 しかし、ときに私がサービスをコンパイルAN私はので、私はDBの接続を使い果たすと、私はいくつかの例外を取得
ballerina run -s myService.balx
としてサービスを実行します。
GETごとに接続を再利用できるように、DB接続をプールするにはどうしたらいいですか?GETを完了する前にプールに戻します。 サービスが停止したときにDB接続を閉じる方法はありますか?
一般的なデザインのヒントを歓迎します。
こんにちは、私は0.92今使用して、新しい仕様に従って私のコードを変更し、応答していただきありがとうございます。限り、作曲家でそれを使用して、それは正常に動作し、コンパイルされた(バックス)バージョンを使用していくつかの問題になるので、修正を楽しみにしています。 – Igor
こんにちは、上記の問題は修正されました。 0.95のリリースで確認できますか? –