Browse Source

fix 修复 多数据源适配 jakarta 异常 bug (临时)

疯狂的狮子Li 2 years ago
parent
commit
8ae8c5498d

+ 45 - 0
ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaHeaderProcessor.java

@@ -0,0 +1,45 @@
+/*
+ * Copyright © 2018 organization baomidou
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.baomidou.dynamic.datasource.processor.jakarta;
+
+import com.baomidou.dynamic.datasource.processor.DsProcessor;
+import jakarta.servlet.http.HttpServletRequest;
+import org.aopalliance.intercept.MethodInvocation;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+/**
+ * @author TaoYu
+ * @since 3.6.0
+ */
+public class DsJakartaHeaderProcessor extends DsProcessor {
+
+    /**
+     * header prefix
+     */
+    private static final String HEADER_PREFIX = "#header";
+
+    @Override
+    public boolean matches(String key) {
+        return key.startsWith(HEADER_PREFIX);
+    }
+
+    @Override
+    public String doDetermineDatasource(MethodInvocation invocation, String key) {
+        HttpServletRequest request = (HttpServletRequest) ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        return request.getHeader(key.substring(8));
+    }
+}

+ 46 - 0
ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaSessionProcessor.java

@@ -0,0 +1,46 @@
+/*
+ * Copyright © 2018 organization baomidou
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.baomidou.dynamic.datasource.processor.jakarta;
+
+import com.baomidou.dynamic.datasource.processor.DsProcessor;
+import jakarta.servlet.http.HttpServletRequest;
+import org.aopalliance.intercept.MethodInvocation;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+
+/**
+ * @author TaoYu
+ * @since 3.6.0
+ */
+public class DsJakartaSessionProcessor extends DsProcessor {
+
+    /**
+     * session开头
+     */
+    private static final String SESSION_PREFIX = "#session";
+
+    @Override
+    public boolean matches(String key) {
+        return key.startsWith(SESSION_PREFIX);
+    }
+
+    @Override
+    public String doDetermineDatasource(MethodInvocation invocation, String key) {
+        HttpServletRequest request = (HttpServletRequest) ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        return request.getSession().getAttribute(key.substring(9)).toString();
+    }
+}