rev:集群日志修改

This commit is contained in:
zhangzq
2024-01-27 16:55:17 +08:00
parent c9ea2f112b
commit 8b70386156
10 changed files with 151 additions and 93 deletions

View File

@@ -109,6 +109,17 @@
<!-- <artifactId>logback-elasticsearch-appender</artifactId>-->
<!-- <version>1.6</version>-->
<!-- </dependency>-->
<!-- https://mvnrepository.com/artifact/org.apache.shardingsphere/sharding-jdbc-spring-boot-starter -->
<!-- <dependency>-->
<!-- <groupId>org.apache.shardingsphere</groupId>-->
<!-- <artifactId>sharding-jdbc-spring-boot-starter</artifactId>-->
<!-- <version>4.1.1</version>-->
<!-- </dependency>-->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
<version>5.0.0-alpha</version>
</dependency>
<!-- 图片缩略图 -->
<dependency>

View File

@@ -4,16 +4,19 @@ import cn.dev33.satoken.annotation.SaIgnore;
import com.alicp.jetcache.Cache;
import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation;
import com.alicp.jetcache.anno.config.EnableMethodCache;
import org.mybatis.spring.annotation.MapperScan;
import org.nl.modules.wql.util.SpringContextHolder;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -29,7 +32,7 @@ import org.springframework.web.bind.annotation.RestController;
*/
@EnableAsync
@RestController
@SpringBootApplication(exclude = {
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
})

View File

@@ -2,10 +2,8 @@ package org.nl.config;
import com.alibaba.druid.filter.FilterChain;
import com.alibaba.druid.filter.FilterEventAdapter;
import com.alibaba.druid.proxy.jdbc.JdbcParameter;
import com.alibaba.druid.proxy.jdbc.PreparedStatementProxy;
import com.alibaba.druid.proxy.jdbc.ResultSetProxy;
import com.alibaba.druid.proxy.jdbc.StatementProxy;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.alibaba.druid.proxy.jdbc.*;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.util.JdbcUtils;
import com.mysql.cj.jdbc.result.ResultSetImpl;
@@ -13,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.MDC;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
@@ -60,6 +59,8 @@ public class DruidFilter extends FilterEventAdapter {
}
@Override
public ResultSetProxy statement_getResultSet(FilterChain chain, StatementProxy statement) throws SQLException {
String jdbc = chain.getDataSource().getRawJdbcUrl();
System.out.println(jdbc);
ResultSetProxy rs = super.statement_getResultSet(chain, statement);
String executeSql = statement.getLastExecuteSql();
if (true){

View File

@@ -18,9 +18,6 @@ import javax.sql.DataSource;
@Configuration
@Slf4j
public class MybatisPlusConfig {
@Autowired
private DataSource dataSource;
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
添加自增插件
@@ -36,11 +33,4 @@ public class MybatisPlusConfig {
return interceptor;
}
@PostConstruct
public void datainnit(){
String url = ((DruidDataSource) dataSource).getUrl();
System.out.println("项目数据库地址:"+url);
log.debug("项目数据库地址:{}",url);
}
}

View File

@@ -28,7 +28,7 @@ public class WQLCore {
//解析wql文件的根目录
public static String ROOT = "wql";
//数据库默认名
public static String defalutDBName = "dataSource";
public static String defalutDBName = "dataSource";//集群时使用SpringContextHolder.getBean("shardingSphereDataSource")
//wql源文件
public static HashMap<String, ArrayList<String>> wqlMap = new HashMap<String, ArrayList<String>>();

View File

@@ -3,6 +3,7 @@ package org.nl.modules.wql.core.db;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.wql.WQLCore;
import org.nl.modules.wql.util.SpringContextHolder;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.jdbc.datasource.DataSourceUtils;
import javax.sql.DataSource;
@@ -38,13 +39,13 @@ public class DBConnection {
return conn;
}
/**
*
*
* @param name
* @return
*/
public static Connection getConnection(String name) {
Connection conn = null;
DBPoolSpring dbPoolSpring = DBPoolSpring.getInstance(name);
if(dbPoolSpring.isUseful()){
currpooltype = DBPOOLTYPE_SPRING;
@@ -80,7 +81,7 @@ public class DBConnection {
try {
// if(null!=conn){
//conn.setAutoCommit(true);
//不启用事务
// conn.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
// }
@@ -89,7 +90,7 @@ public class DBConnection {
}
return conn;
}
// /**
// * 开启事务
// * @param conn
@@ -110,14 +111,14 @@ public class DBConnection {
// }
// }
// }
//
//
// public static UserTransaction getTransaction() {
// return getTransaction(WQLCore.defalutDBName);
// }
// public static UserTransaction getTransaction(String name) {
// UserTransaction utx = null;
//
//
// DBPoolSpring dbPoolSpring = DBPoolSpring.getInstance();
// if(dbPoolSpring.isUseful()){
// utx = dbPoolSpring.getTransaction(name);
@@ -143,12 +144,12 @@ public class DBConnection {
// }
// }
// }
//
//
// log.error("DBConnection无法获得事务管理资源.");
// }
// return utx;
// }
/**
* 释放数据库连接
* @param conn
@@ -156,7 +157,7 @@ public class DBConnection {
public static void freeConnection(Connection conn) {
freeConnection(conn,null);
}
/**
* 释放数据库连接
* @param conn
@@ -168,8 +169,13 @@ public class DBConnection {
if(null==name||"".equals(name)){
name = WQLCore.defalutDBName;
}
DataSource dataSource = (DataSource) SpringContextHolder.getApplicationContext().getBean(name);
DataSourceUtils.releaseConnection(conn, dataSource);
Object dataSource;
try {
dataSource = SpringContextHolder.getApplicationContext().getBean(name);
}catch (NoSuchBeanDefinitionException ex){
dataSource = SpringContextHolder.getApplicationContext().getBean(DataSource.class);
}
DataSourceUtils.releaseConnection(conn, (DataSource) dataSource);
return;
}
try {
@@ -182,7 +188,7 @@ public class DBConnection {
//e.printStackTrace();
}
}
public static void main(String[] args) {
/*

View File

@@ -3,6 +3,7 @@ package org.nl.modules.wql.core.db;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.wql.WQLCore;
import org.nl.modules.wql.util.SpringContextHolder;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.jdbc.datasource.DataSourceUtils;
import javax.naming.Context;
@@ -50,7 +51,7 @@ public class DBPoolSpring {
static synchronized public DBPoolSpring getInstance(String name) {
if (instance == null) {
instance = new DBPoolSpring();
// Connection conn = getConnection();
Connection conn = getConnection();
// if (conn !=null ){//&& ut !=null
// setUseful (true);
// }else{
@@ -78,8 +79,13 @@ public class DBPoolSpring {
public static Connection getConnection(String name) {
Connection conn = null;
try {
DataSource dataSource = (DataSource) SpringContextHolder.getBean(name);
conn = DataSourceUtils.getConnection(dataSource);
Object bean;
try {
bean = SpringContextHolder.getBean(name);
}catch (NoSuchBeanDefinitionException ex){
bean = SpringContextHolder.getBean(DataSource.class);
}
conn = DataSourceUtils.getConnection((DataSource) bean);
} catch (Exception e) {
log.error("不能获得Spring连接池中的数据库连接:" + e.toString());
}
@@ -115,15 +121,15 @@ public class DBPoolSpring {
* @param conn 连接对象
*/
public static void freeConnection(Connection conn, String name) {
// try {
// if (conn != null) {
// conn.close();
// }
DataSource dataSource = (DataSource) SpringContextHolder.getBean(name);
DataSourceUtils.releaseConnection(conn, dataSource);
// } catch (SQLException e) {
// log.error("数据库连接关闭:"+e.toString() );
// }
Object bean;
try {
bean = SpringContextHolder.getBean(name);
}catch (NoSuchBeanDefinitionException ex){
bean = SpringContextHolder.getBean(DataSource.class);
}
if (bean !=null){
DataSourceUtils.releaseConnection(conn, (DataSource) bean);
}
}
private static InitialContext getInitialContext() throws NamingException {
@@ -148,6 +154,6 @@ public class DBPoolSpring {
// public static void main(String[] args) {
//
// DBPoolSpring cnn = DBPoolSpring.getInstance();
//
//
// }
}

View File

@@ -7,7 +7,7 @@
*
* 创 建 者 yumeng
* 创建时间2014-07-01 14:25:35
* 文件版本v1.0
* 文件版本v1.0
*
*******************************************************/
package org.nl.modules.wql.core.engine.object;
@@ -29,8 +29,10 @@ import org.nl.modules.wql.core.engine.Syntax;
import org.nl.modules.wql.exception.WDKException;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.modules.wql.util.WqlUtil;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import javax.servlet.http.HttpServletRequest;
import javax.sql.DataSource;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
@@ -45,11 +47,16 @@ public class WO implements Serializable, Cloneable{
private static final long serialVersionUID = -4831486954013002791L;
public WP wp;
private String code = ""; //当前交易编号
private String dbname = "dataSource"; //指定使用的数据库
private String dbname = "dataSource"; //指定使用的数据库;使用集群数据库时名字需要改成SpringContextHolder.getBean("shardingSphereDataSource")
public WO setDbname(String dbname) {
this.dbname = dbname;
Object bean = SpringContextHolder.getBean(dbname);
Object bean;
try {
bean = SpringContextHolder.getBean(dbname);
}catch (NoSuchBeanDefinitionException ex){
bean = SpringContextHolder.getBean(DataSource.class);
}
if(bean instanceof DruidDataSource) {
DruidDataSource druidDataSource = (DruidDataSource) bean;
String rawJdbcUrl = druidDataSource.getRawJdbcUrl();

View File

@@ -6,10 +6,15 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.lang3.StringUtils;
import org.apache.shardingsphere.spring.boot.SpringBootConfiguration;
import org.apache.shardingsphere.spring.boot.datasource.DataSourceMapSetter;
import org.apache.shardingsphere.spring.boot.datasource.prop.impl.DataSourcePropertiesSetterHolder;
import org.apache.shardingsphere.transaction.ShardingTransactionManagerEngine;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.MapOf;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService;
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService;
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder;
@@ -43,6 +48,8 @@ public class PdaStHrBcpOrderController {
@SaIgnore
public ResponseEntity<Object> getMaterial(HrBcpIostorOrderQuery query, PageQuery page) {
Page<StIvtIostorinvOrder> result = iStIvtIostorinvOrderService.page(page.build(), query.build());
JSONObject jo = WQLObject.getWQLObject("sys_code_rule").query("code = '" + "IO_CODE" + "'").uniqueResult(0);
System.out.println(JSONObject.toJSONString(jo));
return new ResponseEntity<>(TableDataInfo.build(result), HttpStatus.OK);
}

View File

@@ -2,54 +2,81 @@ server:
port: 8011
#配置数据源
spring:
datasource:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
username: ${DB_USER:root}
# password: ${DB_PWD:123456}
password: ${DB_PWD:942464Yy}
# 初始连接数
initial-size: 5
# 最小连接
min-idle: 15
# 最大连接数
max-active: 30
# 是否自动回收超时连接
remove-abandoned: true
# 超时时间(以秒数为单位)
remove-abandoned-timeout: 180
# 获取连接超时时间
max-wait: 3000
# 连接有效性检测时间
time-between-eviction-runs-millis: 60000
# 连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
# 连接在池中最大生存的时间
max-evictable-idle-time-millis: 900000
# 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
test-while-idle: true
# 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
test-on-borrow: true
# 是否在归还到池中前进行检验
test-on-return: false
# 检测连接是否有效
validation-query: select 1
# 配置监控统计
webStatFilter:
enabled: true
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: false
filters:
DruidFilter,stat
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
shardingsphere:
enabled: true
datasource:
common:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
# 初始连接数
initial-size: 10
# 最小连接数
min-idle: 10
# 最大连接数
max-active: 100
# 是否自动回收超时连接
remove-abandoned: true
# 超时时间(以秒数为单位)
remove-abandoned-timeout: 180
# 获取连接超时时间
max-wait: 5000
# 连接有效性检测时间
time-between-eviction-runs-millis: 60000
# 连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
# 连接在池中最大生存的时间
max-evictable-idle-time-millis: 900000
# 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
test-while-idle: true
# 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
test-on-borrow: true
# 是否在归还到池中前进行检验
test-on-return: false
# 检测连接是否有效
validation-query: select 1
# 配置监控统计
webStatFilter:
enabled: true
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: false
filters:
DruidFilter,stat
names: master,slave
master:
url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
username: ${DB_USER:root}
password: ${DB_PWD:942464Yy}
slave:
url: jdbc:mysql://${DB_HOST:192.168.81.165}:${DB_PORT:3306}/${DB_NAME:hl_one_mes2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
username: ${DB_USER:root}
password: ${DB_PWD:password}
rules:
replica-query:
data-sources:
db:
# 读写分离类型比如StaticDynamic
type: Static
#主数据源名称
primary-data-source-name: master
#从数据源名称,多个用逗号分隔
replica-data-source-names: slave
#负载均衡算法名称
load-balancer-name: round-robin
props:
#接口有事务,读写分离不生效,默认全部使用主库
write-data-source-name: master
read-data-source-names: slave
load-balancers:
round-robin:
#负载均衡算法配置,一共三种一种是 RANDOM随机一种是 ROUND_ROBIN轮询一种是 WEIGHT权重
type: ROUND_ROBIN
props:
#负载均衡算法属性配置
workId: 1
redis:
#数据库索引
database: ${REDIS_DB:1}