第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在谷歌云端點框架v2的每種方法中重用連接池?

如何在谷歌云端點框架v2的每種方法中重用連接池?

POPMUISE 2022-09-22 20:06:46
我正在開發(fā)一個具有java 8和應用程序標準環(huán)境的云端點框架API。我試圖從Cloud SQL中檢索一些信息,現(xiàn)在還可以,但是每種方法都會創(chuàng)建一個新的數(shù)據(jù)庫連接池,這有點低效。如何只創(chuàng)建一個連接池并在每種方法中重用它?現(xiàn)在我使用 createConnectionPool() 方法來連接,但這就是問題所在,因為每個方法調用都會調用它,我需要的是重用它。我試圖實現(xiàn)另一個實現(xiàn) ServletContextListener 的類,負責創(chuàng)建連接池并存儲它,以便能夠從實現(xiàn) API 的類中使用它。但是,我不知道如何從最后一堂課中重用它這是創(chuàng)建連接池() 的代碼private DataSource createConnectionPool() {        HikariConfig config = new HikariConfig();               config.setJdbcUrl(String.format("jdbc:mysql:///%s", DB_NAME));        config.setUsername(DB_USER);         config.setPassword(DB_PASS);                config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.mysql.SocketFactory");        config.addDataSourceProperty("cloudSqlInstance", CLOUD_SQL_CONNECTION_NAME);        config.addDataSourceProperty("useSSL", "false");                config.setMaximumPoolSize(5);               config.setMinimumIdle(5);               config.setConnectionTimeout(10000); // 10 seconds               config.setIdleTimeout(600000); // 10 minutes                config.setMaxLifetime(1800000); // 30 minutes        return new HikariDataSource(config);    }這是 API 方法的代碼@ApiMethod(name = "pacientes", httpMethod = ApiMethod.HttpMethod.GET)    public Message pacientes(User user, @Named("id") Integer id) throws UnauthorizedException{        if (user == null) {            throw new UnauthorizedException(INVALID_CREDENTIALS);         }           Message resultadoConsulta = new Message();              final String queryPacientes="SELECT nombre FROM paciente WHERE idpaciente=? LIMIT ?" ;        final int LIMIT=1;        DataSource pool = createConnectionPool();        try (Connection conn = pool.getConnection();                PreparedStatement consultaPacientes = conn.prepareStatement(queryPacientes);){            consultaPacientes.setInt(1, id);            consultaPacientes.setInt(2, LIMIT);            try(ResultSet resultadoPacientes = consultaPacientes.executeQuery()){
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

若要只創(chuàng)建一次連接池,可以使其成為類中的靜態(tài)變量。為此,您只需將方法“創(chuàng)建連接池”的代碼替換為以下塊:


    private static DataSource dataSource;


    static {


        HikariConfig config = new HikariConfig();


        config.setJdbcUrl(String.format("jdbc:mysql:///%s", DB_NAME));

        config.setUsername(DB_USER); 

        config.setPassword(DB_PASS);        

        config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.mysql.SocketFactory");

        config.addDataSourceProperty("cloudSqlInstance", CLOUD_SQL_CONNECTION_NAME);

        config.addDataSourceProperty("useSSL", "false");        

        config.setMaximumPoolSize(5);       

        config.setMinimumIdle(5);       

        config.setConnectionTimeout(10000); // 10 seconds       

        config.setIdleTimeout(600000); // 10 minutes        

        config.setMaxLifetime(1800000); // 30 minutes


        dataSource = new HikariDataSource(config);

    }


    private DataSource createConnectionPool() {

        return dataSource;

    }

請記住,方法“創(chuàng)建連接池”現(xiàn)在的目的是不破壞可能被調用的類的其余部分的代碼。


現(xiàn)在,您可以使用變量“數(shù)據(jù)源”,而不是調用方法“創(chuàng)建連接池”。


查看完整回答
反對 回復 2022-09-22
  • 1 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號