From 1e15ae74003a68518292be3c6fbeadf476881ea6 Mon Sep 17 00:00:00 2001 From: zhugongping Date: Sat, 22 Aug 2026 18:29:14 +0800 Subject: [PATCH] =?UTF-8?q?20260822:=E6=95=B0=E6=8D=AE=E5=BA=93=E6=A1=A5?= =?UTF-8?q?=E6=8E=A5=E8=B5=84=E6=BA=90=E6=B3=84=E9=9C=B2bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/ruleEngine/DataSourceService.java | 1 + .../iot/ruleEngine/DatabaseBridge.java | 34 +++++++++++-------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/DataSourceService.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/DataSourceService.java index 6df28cda..50c7d97c 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/DataSourceService.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/DataSourceService.java @@ -92,6 +92,7 @@ public class DataSourceService { Bridge bridge = bridgeService.queryByIdWithCache(id); if (bridge == null || bridge.getType() != 5) { log.error("数据源不存在或者当前配置类型不是数据库存储,id={}", id); + return null; } return JSON.parseObject(bridge.getConfigJson(), MultipleDataSource.class); } diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/DatabaseBridge.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/DatabaseBridge.java index 97f76d17..30aa4e8b 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/DatabaseBridge.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/DatabaseBridge.java @@ -21,27 +21,33 @@ public class DatabaseBridge extends NodeComponent { @Override public void process() throws Exception { MsgContext cxt = this.getContextBean(MsgContext.class); - Long id = cxt.getData("databaseBridgeID"); - MultipleDataSource multipleDataSource = dataSourceService.getDataSource(id); + Integer id = cxt.getData("databaseBridgeID"); + if (id == null) { + log.error("databaseBridgeID未设置,跳过数据库桥接"); + return; + } + MultipleDataSource multipleDataSource = dataSourceService.getDataSource(Long.valueOf(id)); + if (multipleDataSource == null) { + log.error("multipleDataSource为空,请检查桥接配置"); + return; + } DruidDataSource dataSource = dataSourceService.createDataSource(multipleDataSource); - DruidPooledConnection connection = null; - Statement statement = null; String sql = cxt.placeholders(multipleDataSource.getSql()); log.info("执行sql:{}", sql); - try { - connection = dataSource.getConnection(); - statement = connection.createStatement(); - statement.execute(sql); - } catch (SQLException e) { - log.error("sql执行失败---------,原因:{ }", e); + if ("SELECT 1;".equalsIgnoreCase(sql)) { + // 不要浪费资源直接返回 + return; } + try { - connection.close(); - if (statement != null) { - statement.close(); + try (DruidPooledConnection connection = dataSource.getConnection(); + Statement statement = connection.createStatement()) { + statement.execute(sql); } } catch (SQLException e) { - log.error("关闭数据库连接失败,原因:{ }", e); + log.error("sql执行失败---------,原因:", e); + } finally { + dataSource.close(); } }