package com.smtaiserver.smtaiserver.javaai.datasource; import java.sql.Connection; import com.alibaba.druid.pool.DruidDataSource; import com.smtaiserver.smtaiserver.core.SMTAIServerApp; import com.smtaiserver.smtaiserver.database.SMTDatabase; import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord; import com.smtservlet.util.Json; import com.smtservlet.util.SMTJsonWriter; public class SMTDataSourceJDBC extends SMTDataSource { protected DruidDataSource _dsDataSource; @Override public void initInstance(DBRecord rec) throws Exception { super.initInstance(rec); Json jsonConfig = Json.read(rec.getString("ds_config")); _dsDataSource = SMTAIServerApp.getApp().createDruidDataSource( jsonConfig.getJson("driver").asString(), jsonConfig.getJson("url").asString(), jsonConfig.getJson("user").asString(), jsonConfig.getJson("pass").asString() ); } @Override public SMTDatabase allocDatabase() throws Exception { try { Connection conn = _dsDataSource.getConnection(); return new SMTDatabase(conn); } catch(Exception ex) { throw new Exception("can't create connect data source : " + this.getId()); } } @Override public void getDatasourceUsgaeToJson(SMTJsonWriter jsonWr) throws Exception { if(_dsDataSource == null) return; jsonWr.beginMap(this.getId()); { jsonWr.addKeyValue("connect", _dsDataSource.getActiveCount() + _dsDataSource.getPoolingCount()); } jsonWr.endMap(); } }