【问题标题】:wso2 Ballerina using DB Connections with Serviceswso2 Ballerina 使用 DB Connections with Services
【发布时间】:2017-08-11 14:27:04
【问题描述】:

我使用 ballerina 0.91 并尝试使用 REST GET 服务来获取 Oracle 数据库上的一些数据。以下是在 sql:ClientConnector 上使用的 Oracle 信息。

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 连接,我必须打开与数据库的连接并在最后再次关闭它。这很费时间。

另外,我可以在服务级别打开数据库连接,因此在 GET 之外,这将打开一次数据库连接,在 GET 内我总是可以使用数据库。这非常快,并且在 Composer 中运行服务时一切正常,即使我多次将 GET 与一些客户端并行使用,我也不会用完数据库连接。 但是当我编译服务时,我将服务运行为

ballerina run -s myService.balx

所以我的数据库连接用完了,我得到了一些异常。

我如何以某种方式将数据库连接池化,以便我可以为每个 GET 重用一个连接,并在完成 GET 之前将它发送回池。 服务关闭时如何关闭数据库连接?

欢迎任何一般性的设计提示。

【问题讨论】:

    标签: ballerina


    【解决方案1】:

    默认情况下,SQL 客户端连接器将创建一个大小为 10 的连接池。如果您需要更改池大小,您可以传递如下属性。

    sql:ConnectionProperties properties = {maximumPoolSize:5};
    sql:ClientConnector testDB = create sql:ClientConnector(sql:MYSQL, "localhost", 3306, "db", "sa", "root", properties);
    

    在服务级别声明连接器是正确的方法。然后,当您在 GET 中执行 SQL 操作时,它将从池中获取连接并执行。

    在 .balx 文件中使用连接器时,显然存在问题。这已在 Github 存储库 [1] 中报告为问题。

    [1]https://github.com/ballerinalang/ballerina/issues/3222

    【讨论】:

    • 您好,感谢您的回复,我现在使用 0.92 并根据新规范更改了我的代码。就在作曲家中使用它而言,它工作正常,并且当您使用编译的(balx)版本编写时会遇到一些问题,所以期待修复。
    • 您好,以上问题已修复。你能检查一下 0.95 版本吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 2015-12-14
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多