浏览代码

执行器动态代理对象,拦截非业务方法的执行

xuxueli 8 年之前
父节点
当前提交
87442a5c59

+ 1 - 0
doc/XXL-JOB官方文档.md

@@ -1024,6 +1024,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
 - 3、修复任务监控线程被耗时任务阻塞的问题;
 - 4、修复任务监控线程无法监控任务触发和执行状态均未0的问题;
 - 5、调度中心项目日志配置改为xml文件格式;
+- 6、执行器动态代理对象,拦截非业务方法的执行;
 
 ### TODO LIST
 - 1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;

+ 7 - 1
xxl-job-core/src/main/java/com/xxl/job/core/rpc/netcom/NetComClientProxy.java

@@ -36,6 +36,12 @@ public class NetComClientProxy implements FactoryBean<Object> {
 				new InvocationHandler() {
 					@Override
 					public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+
+						// filter method like "Object.toString()"
+						if (Object.class.getName().equals(method.getDeclaringClass().getName())) {
+							logger.error(">>>>>>>>>>> xxl-rpc proxy class-method not support [{}.{}]", method.getDeclaringClass().getName(), method.getName());
+							throw new RuntimeException("xxl-rpc proxy class-method not support");
+						}
 						
 						// request
 						RpcRequest request = new RpcRequest();
@@ -46,7 +52,7 @@ public class NetComClientProxy implements FactoryBean<Object> {
 	                    request.setMethodName(method.getName());
 	                    request.setParameterTypes(method.getParameterTypes());
 	                    request.setParameters(args);
-	                    
+
 	                    // send
 	                    RpcResponse response = client.send(request);