Skip to content

Commit 87074e0

Browse files
committed
Fix system path issue
1 parent 6bca219 commit 87074e0

File tree

3 files changed

+7
-195
lines changed

3 files changed

+7
-195
lines changed

joylive-plugin/joylive-router/joylive-router-springweb5/src/main/java/com/jd/live/agent/plugin/router/springweb/v5/request/ServletInboundRequest.java

Lines changed: 3 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.jd.live.agent.governance.mcp.McpToolMethod;
2323
import com.jd.live.agent.governance.request.AbstractHttpRequest.AbstractHttpInboundRequest;
2424
import com.jd.live.agent.governance.request.HeaderProvider;
25+
import com.jd.live.agent.plugin.router.springweb.v5.util.CloudUtils;
2526
import org.springframework.web.method.HandlerMethod;
2627

2728
import javax.servlet.http.Cookie;
@@ -33,8 +34,6 @@
3334
import java.util.Map;
3435
import java.util.function.Predicate;
3536

36-
import static com.jd.live.agent.core.util.type.ClassUtils.loadClass;
37-
3837
/**
3938
* ServletHttpInboundRequest
4039
*
@@ -43,50 +42,6 @@
4342
*/
4443
public class ServletInboundRequest extends AbstractHttpInboundRequest<HttpServletRequest> {
4544

46-
private static final String CONTROLLER_TYPE = "org.springframework.web.servlet.mvc.Controller";
47-
48-
private static final Class<?> CONTROLLER_CLASS = loadClass(CONTROLLER_TYPE, HttpServletRequest.class.getClassLoader());
49-
50-
private static final String ERROR_CONTROLLER_TYPE = "org.springframework.boot.web.servlet.error.ErrorController";
51-
52-
private static final Class<?> ERROR_CONTROLLER_CLASS = loadClass(ERROR_CONTROLLER_TYPE, HttpServletRequest.class.getClassLoader());
53-
54-
private static final String RESOURCE_HANDLER_TYPE = "org.springframework.web.servlet.resource.ResourceHttpRequestHandler";
55-
56-
private static final Class<?> RESOURCE_HANDLER_CLASS = loadClass(RESOURCE_HANDLER_TYPE, HttpServletRequest.class.getClassLoader());
57-
58-
private static final String ACTUATOR_SERVLET_TYPE = "org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$WebMvcEndpointHandlerMethod";
59-
60-
private static final Class<?> ACTUATOR_SERVLET_CLASS = loadClass(ACTUATOR_SERVLET_TYPE, HttpServletRequest.class.getClassLoader());
61-
62-
private static final String API_RESOURCE_CONTROLLER_TYPE = "springfox.documentation.swagger.web.ApiResourceController";
63-
64-
private static final Class<?> API_RESOURCE_CONTROLLER_CLASS = loadClass(API_RESOURCE_CONTROLLER_TYPE, HttpServletRequest.class.getClassLoader());
65-
66-
private static final String SWAGGER2_CONTROLLER_WEB_MVC_TYPE = "springfox.documentation.swagger2.web.Swagger2ControllerWebMvc";
67-
68-
private static final Class<?> SWAGGER2_CONTROLLER_WEB_MVC_CLASS = loadClass(SWAGGER2_CONTROLLER_WEB_MVC_TYPE, HttpServletRequest.class.getClassLoader());
69-
70-
private static final String OPEN_API_RESOURCE_TYPE = "org.springdoc.webmvc.api.OpenApiResource";
71-
72-
private static final Class<?> OPEN_API_RESOURCE_CLASS = loadClass(OPEN_API_RESOURCE_TYPE, HttpServletRequest.class.getClassLoader());
73-
74-
private static final String MULTIPLE_OPEN_API_RESOURCE_TYPE = "org.springdoc.webmvc.api.MultipleOpenApiResource";
75-
76-
private static final Class<?> MULTIPLE_OPEN_API_RESOURCE_CLASS = loadClass(MULTIPLE_OPEN_API_RESOURCE_TYPE, HttpServletRequest.class.getClassLoader());
77-
78-
private static final String SWAGGER_CONFIG_RESOURCE_TYPE = "org.springdoc.webmvc.ui.SwaggerConfigResource";
79-
80-
private static final Class<?> SWAGGER_CONFIG_RESOURCE_CLASS = loadClass(SWAGGER_CONFIG_RESOURCE_TYPE, HttpServletRequest.class.getClassLoader());
81-
82-
private static final String SWAGGER_UI_HOME_TYPE = "org.springdoc.webmvc.ui.SwaggerUiHome";
83-
84-
private static final Class<?> SWAGGER_UI_HOME_CLASS = loadClass(SWAGGER_UI_HOME_TYPE, HttpServletRequest.class.getClassLoader());
85-
86-
private static final String SWAGGER_WELCOME_COMMON_TYPE = "org.springdoc.webmvc.ui.SwaggerWelcomeCommon";
87-
88-
private static final Class<?> SWAGGER_WELCOME_COMMON_CLASS = loadClass(SWAGGER_WELCOME_COMMON_TYPE, HttpServletRequest.class.getClassLoader());
89-
9045
private final Object[] arguments;
9146

9247
private final Object handler;
@@ -130,26 +85,9 @@ public String getClientIp() {
13085

13186
@Override
13287
public boolean isSystem() {
88+
// handler is unwrapped from HandlerMethod
13389
if (handler != null) {
134-
if (CONTROLLER_CLASS != null && CONTROLLER_CLASS.isInstance(handler)) {
135-
// spring web mvc
136-
return true;
137-
} else if (RESOURCE_HANDLER_CLASS != null && RESOURCE_HANDLER_CLASS.isInstance(handler)) {
138-
return true;
139-
} else if (handler instanceof HandlerMethod) {
140-
HandlerMethod method = (HandlerMethod) handler;
141-
Object bean = method.getBean();
142-
if (ERROR_CONTROLLER_CLASS != null && ERROR_CONTROLLER_CLASS.isInstance(bean)
143-
|| API_RESOURCE_CONTROLLER_CLASS != null && API_RESOURCE_CONTROLLER_CLASS.isInstance(bean)
144-
|| SWAGGER2_CONTROLLER_WEB_MVC_CLASS != null && SWAGGER2_CONTROLLER_WEB_MVC_CLASS.isInstance(bean)
145-
|| SWAGGER_CONFIG_RESOURCE_CLASS != null && SWAGGER_CONFIG_RESOURCE_CLASS.isInstance(bean)
146-
|| OPEN_API_RESOURCE_CLASS != null && OPEN_API_RESOURCE_CLASS.isInstance(bean)
147-
|| MULTIPLE_OPEN_API_RESOURCE_CLASS != null && MULTIPLE_OPEN_API_RESOURCE_CLASS.isInstance(bean)
148-
|| SWAGGER_UI_HOME_CLASS != null && SWAGGER_UI_HOME_CLASS.isInstance(bean)
149-
|| SWAGGER_WELCOME_COMMON_CLASS != null && SWAGGER_WELCOME_COMMON_CLASS.isInstance(bean)) {
150-
return true;
151-
}
152-
} else if (ACTUATOR_SERVLET_CLASS != null && ACTUATOR_SERVLET_CLASS.isInstance(handler)) {
90+
if (CloudUtils.isSystemHandler(handler)) {
15391
return true;
15492
} else if (arguments != null && arguments.length == 3 && arguments[2] instanceof Object[]) {
15593
// ExceptionHandlerExceptionResolver for global @ExceptionHandler(Exception.class)

joylive-plugin/joylive-router/joylive-router-springweb6/src/main/java/com/jd/live/agent/plugin/router/springweb/v6/request/ServletInboundRequest.java

Lines changed: 2 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.jd.live.agent.governance.mcp.McpToolMethod;
2323
import com.jd.live.agent.governance.request.AbstractHttpRequest.AbstractHttpInboundRequest;
2424
import com.jd.live.agent.governance.request.HeaderProvider;
25+
import com.jd.live.agent.plugin.router.springweb.v6.util.CloudUtils;
2526
import jakarta.servlet.http.Cookie;
2627
import jakarta.servlet.http.HttpServletRequest;
2728
import org.springframework.web.method.HandlerMethod;
@@ -33,8 +34,6 @@
3334
import java.util.Map;
3435
import java.util.function.Predicate;
3536

36-
import static com.jd.live.agent.core.util.type.ClassUtils.loadClass;
37-
3837
/**
3938
* ServletHttpInboundRequest
4039
*
@@ -43,50 +42,6 @@
4342
*/
4443
public class ServletInboundRequest extends AbstractHttpInboundRequest<HttpServletRequest> {
4544

46-
private static final String CONTROLLER_TYPE = "org.springframework.web.servlet.mvc.Controller";
47-
48-
private static final Class<?> CONTROLLER_CLASS = loadClass(CONTROLLER_TYPE, HttpServletRequest.class.getClassLoader());
49-
50-
private static final String ERROR_CONTROLLER_TYPE = "org.springframework.boot.web.servlet.error.ErrorController";
51-
52-
private static final Class<?> ERROR_CONTROLLER_CLASS = loadClass(ERROR_CONTROLLER_TYPE, HttpServletRequest.class.getClassLoader());
53-
54-
private static final String RESOURCE_HANDLER_TYPE = "org.springframework.web.servlet.resource.ResourceHttpRequestHandler";
55-
56-
private static final Class<?> RESOURCE_HANDLER_CLASS = loadClass(RESOURCE_HANDLER_TYPE, HttpServletRequest.class.getClassLoader());
57-
58-
private static final String ACTUATOR_SERVLET_TYPE = "org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$WebMvcEndpointHandlerMethod";
59-
60-
private static final Class<?> ACTUATOR_SERVLET_CLASS = loadClass(ACTUATOR_SERVLET_TYPE, HttpServletRequest.class.getClassLoader());
61-
62-
private static final String API_RESOURCE_CONTROLLER_TYPE = "springfox.documentation.swagger.web.ApiResourceController";
63-
64-
private static final Class<?> API_RESOURCE_CONTROLLER_CLASS = loadClass(API_RESOURCE_CONTROLLER_TYPE, HttpServletRequest.class.getClassLoader());
65-
66-
private static final String SWAGGER2_CONTROLLER_WEB_MVC_TYPE = "springfox.documentation.swagger2.web.Swagger2ControllerWebMvc";
67-
68-
private static final Class<?> SWAGGER2_CONTROLLER_WEB_MVC_CLASS = loadClass(SWAGGER2_CONTROLLER_WEB_MVC_TYPE, HttpServletRequest.class.getClassLoader());
69-
70-
private static final String OPEN_API_RESOURCE_TYPE = "org.springdoc.webmvc.api.OpenApiResource";
71-
72-
private static final Class<?> OPEN_API_RESOURCE_CLASS = loadClass(OPEN_API_RESOURCE_TYPE, HttpServletRequest.class.getClassLoader());
73-
74-
private static final String MULTIPLE_OPEN_API_RESOURCE_TYPE = "org.springdoc.webmvc.api.MultipleOpenApiResource";
75-
76-
private static final Class<?> MULTIPLE_OPEN_API_RESOURCE_CLASS = loadClass(MULTIPLE_OPEN_API_RESOURCE_TYPE, HttpServletRequest.class.getClassLoader());
77-
78-
private static final String SWAGGER_CONFIG_RESOURCE_TYPE = "org.springdoc.webmvc.ui.SwaggerConfigResource";
79-
80-
private static final Class<?> SWAGGER_CONFIG_RESOURCE_CLASS = loadClass(SWAGGER_CONFIG_RESOURCE_TYPE, HttpServletRequest.class.getClassLoader());
81-
82-
private static final String SWAGGER_UI_HOME_TYPE = "org.springdoc.webmvc.ui.SwaggerUiHome";
83-
84-
private static final Class<?> SWAGGER_UI_HOME_CLASS = loadClass(SWAGGER_UI_HOME_TYPE, HttpServletRequest.class.getClassLoader());
85-
86-
private static final String SWAGGER_WELCOME_COMMON_TYPE = "org.springdoc.webmvc.ui.SwaggerWelcomeCommon";
87-
88-
private static final Class<?> SWAGGER_WELCOME_COMMON_CLASS = loadClass(SWAGGER_WELCOME_COMMON_TYPE, HttpServletRequest.class.getClassLoader());
89-
9045
private final Object handler;
9146

9247
private final Object[] arguments;
@@ -131,25 +86,7 @@ public String getClientIp() {
13186
@Override
13287
public boolean isSystem() {
13388
if (handler != null) {
134-
if (CONTROLLER_CLASS != null && CONTROLLER_CLASS.isInstance(handler)) {
135-
// spring web mvc
136-
return true;
137-
} else if (RESOURCE_HANDLER_CLASS != null && RESOURCE_HANDLER_CLASS.isInstance(handler)) {
138-
return true;
139-
} else if (handler instanceof HandlerMethod) {
140-
HandlerMethod method = (HandlerMethod) handler;
141-
Object bean = method.getBean();
142-
if (ERROR_CONTROLLER_CLASS != null && ERROR_CONTROLLER_CLASS.isInstance(bean)
143-
|| API_RESOURCE_CONTROLLER_CLASS != null && API_RESOURCE_CONTROLLER_CLASS.isInstance(bean)
144-
|| SWAGGER2_CONTROLLER_WEB_MVC_CLASS != null && SWAGGER2_CONTROLLER_WEB_MVC_CLASS.isInstance(bean)
145-
|| SWAGGER_CONFIG_RESOURCE_CLASS != null && SWAGGER_CONFIG_RESOURCE_CLASS.isInstance(bean)
146-
|| OPEN_API_RESOURCE_CLASS != null && OPEN_API_RESOURCE_CLASS.isInstance(bean)
147-
|| MULTIPLE_OPEN_API_RESOURCE_CLASS != null && MULTIPLE_OPEN_API_RESOURCE_CLASS.isInstance(bean)
148-
|| SWAGGER_UI_HOME_CLASS != null && SWAGGER_UI_HOME_CLASS.isInstance(bean)
149-
|| SWAGGER_WELCOME_COMMON_CLASS != null && SWAGGER_WELCOME_COMMON_CLASS.isInstance(bean)) {
150-
return true;
151-
}
152-
} else if (ACTUATOR_SERVLET_CLASS != null && ACTUATOR_SERVLET_CLASS.isInstance(handler)) {
89+
if (CloudUtils.isSystemHandler(handler)) {
15390
return true;
15491
} else if (arguments != null && arguments.length == 3 && arguments[2] instanceof Object[]) {
15592
// ExceptionHandlerExceptionResolver for global @ExceptionHandler(Exception.class)

joylive-plugin/joylive-router/joylive-router-springweb7/src/main/java/com/jd/live/agent/plugin/router/springweb/v7/request/ServletInboundRequest.java

Lines changed: 2 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.jd.live.agent.governance.mcp.McpToolMethod;
2323
import com.jd.live.agent.governance.request.AbstractHttpRequest.AbstractHttpInboundRequest;
2424
import com.jd.live.agent.governance.request.HeaderProvider;
25+
import com.jd.live.agent.plugin.router.springweb.v7.util.CloudUtils;
2526
import jakarta.servlet.http.Cookie;
2627
import jakarta.servlet.http.HttpServletRequest;
2728
import org.springframework.web.method.HandlerMethod;
@@ -33,8 +34,6 @@
3334
import java.util.Map;
3435
import java.util.function.Predicate;
3536

36-
import static com.jd.live.agent.core.util.type.ClassUtils.loadClass;
37-
3837
/**
3938
* ServletHttpInboundRequest
4039
*
@@ -43,50 +42,6 @@
4342
*/
4443
public class ServletInboundRequest extends AbstractHttpInboundRequest<HttpServletRequest> {
4544

46-
private static final String CONTROLLER_TYPE = "org.springframework.web.servlet.mvc.Controller";
47-
48-
private static final Class<?> CONTROLLER_CLASS = loadClass(CONTROLLER_TYPE, HttpServletRequest.class.getClassLoader());
49-
50-
private static final String ERROR_CONTROLLER_TYPE = "org.springframework.boot.web.servlet.error.ErrorController";
51-
52-
private static final Class<?> ERROR_CONTROLLER_CLASS = loadClass(ERROR_CONTROLLER_TYPE, HttpServletRequest.class.getClassLoader());
53-
54-
private static final String RESOURCE_HANDLER_TYPE = "org.springframework.web.servlet.resource.ResourceHttpRequestHandler";
55-
56-
private static final Class<?> RESOURCE_HANDLER_CLASS = loadClass(RESOURCE_HANDLER_TYPE, HttpServletRequest.class.getClassLoader());
57-
58-
private static final String ACTUATOR_SERVLET_TYPE = "org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$WebMvcEndpointHandlerMethod";
59-
60-
private static final Class<?> ACTUATOR_SERVLET_CLASS = loadClass(ACTUATOR_SERVLET_TYPE, HttpServletRequest.class.getClassLoader());
61-
62-
private static final String API_RESOURCE_CONTROLLER_TYPE = "springfox.documentation.swagger.web.ApiResourceController";
63-
64-
private static final Class<?> API_RESOURCE_CONTROLLER_CLASS = loadClass(API_RESOURCE_CONTROLLER_TYPE, HttpServletRequest.class.getClassLoader());
65-
66-
private static final String SWAGGER2_CONTROLLER_WEB_MVC_TYPE = "springfox.documentation.swagger2.web.Swagger2ControllerWebMvc";
67-
68-
private static final Class<?> SWAGGER2_CONTROLLER_WEB_MVC_CLASS = loadClass(SWAGGER2_CONTROLLER_WEB_MVC_TYPE, HttpServletRequest.class.getClassLoader());
69-
70-
private static final String OPEN_API_RESOURCE_TYPE = "org.springdoc.webmvc.api.OpenApiResource";
71-
72-
private static final Class<?> OPEN_API_RESOURCE_CLASS = loadClass(OPEN_API_RESOURCE_TYPE, HttpServletRequest.class.getClassLoader());
73-
74-
private static final String MULTIPLE_OPEN_API_RESOURCE_TYPE = "org.springdoc.webmvc.api.MultipleOpenApiResource";
75-
76-
private static final Class<?> MULTIPLE_OPEN_API_RESOURCE_CLASS = loadClass(MULTIPLE_OPEN_API_RESOURCE_TYPE, HttpServletRequest.class.getClassLoader());
77-
78-
private static final String SWAGGER_CONFIG_RESOURCE_TYPE = "org.springdoc.webmvc.ui.SwaggerConfigResource";
79-
80-
private static final Class<?> SWAGGER_CONFIG_RESOURCE_CLASS = loadClass(SWAGGER_CONFIG_RESOURCE_TYPE, HttpServletRequest.class.getClassLoader());
81-
82-
private static final String SWAGGER_UI_HOME_TYPE = "org.springdoc.webmvc.ui.SwaggerUiHome";
83-
84-
private static final Class<?> SWAGGER_UI_HOME_CLASS = loadClass(SWAGGER_UI_HOME_TYPE, HttpServletRequest.class.getClassLoader());
85-
86-
private static final String SWAGGER_WELCOME_COMMON_TYPE = "org.springdoc.webmvc.ui.SwaggerWelcomeCommon";
87-
88-
private static final Class<?> SWAGGER_WELCOME_COMMON_CLASS = loadClass(SWAGGER_WELCOME_COMMON_TYPE, HttpServletRequest.class.getClassLoader());
89-
9045
private final Object handler;
9146

9247
private final Object[] arguments;
@@ -131,25 +86,7 @@ public String getClientIp() {
13186
@Override
13287
public boolean isSystem() {
13388
if (handler != null) {
134-
if (CONTROLLER_CLASS != null && CONTROLLER_CLASS.isInstance(handler)) {
135-
// spring web mvc
136-
return true;
137-
} else if (RESOURCE_HANDLER_CLASS != null && RESOURCE_HANDLER_CLASS.isInstance(handler)) {
138-
return true;
139-
} else if (handler instanceof HandlerMethod) {
140-
HandlerMethod method = (HandlerMethod) handler;
141-
Object bean = method.getBean();
142-
if (ERROR_CONTROLLER_CLASS != null && ERROR_CONTROLLER_CLASS.isInstance(bean)
143-
|| API_RESOURCE_CONTROLLER_CLASS != null && API_RESOURCE_CONTROLLER_CLASS.isInstance(bean)
144-
|| SWAGGER2_CONTROLLER_WEB_MVC_CLASS != null && SWAGGER2_CONTROLLER_WEB_MVC_CLASS.isInstance(bean)
145-
|| SWAGGER_CONFIG_RESOURCE_CLASS != null && SWAGGER_CONFIG_RESOURCE_CLASS.isInstance(bean)
146-
|| OPEN_API_RESOURCE_CLASS != null && OPEN_API_RESOURCE_CLASS.isInstance(bean)
147-
|| MULTIPLE_OPEN_API_RESOURCE_CLASS != null && MULTIPLE_OPEN_API_RESOURCE_CLASS.isInstance(bean)
148-
|| SWAGGER_UI_HOME_CLASS != null && SWAGGER_UI_HOME_CLASS.isInstance(bean)
149-
|| SWAGGER_WELCOME_COMMON_CLASS != null && SWAGGER_WELCOME_COMMON_CLASS.isInstance(bean)) {
150-
return true;
151-
}
152-
} else if (ACTUATOR_SERVLET_CLASS != null && ACTUATOR_SERVLET_CLASS.isInstance(handler)) {
89+
if (CloudUtils.isSystemHandler(handler)) {
15390
return true;
15491
} else if (arguments != null && arguments.length == 3 && arguments[2] instanceof Object[]) {
15592
// ExceptionHandlerExceptionResolver for global @ExceptionHandler(Exception.class)

0 commit comments

Comments
 (0)