Skip to content
This repository has been archived by the owner on Feb 18, 2024. It is now read-only.

业务模块引用基座的bean,调用链包括非public方法,会执行异常 #442

Closed
qq290584697 opened this issue Jan 5, 2024 · 1 comment · Fixed by #444
Closed
Assignees

Comments

@qq290584697
Copy link
Collaborator

qq290584697 commented Jan 5, 2024

如果业务模块通过@AutowrideFromBase,以非接口形式,而是以类引用基座的bean。
当调用的bean的方法时,链路存在非public方法,会出现下列异常:
Caused by: java.lang.IllegalAccessException: Class com.alipay.sofa.serverless.common.service.SpringServiceInvoker can not access a member of xxxx with modifiers "protected"。

复现方式:

  1. 基座有一个bean,类型为RegistryConfig
  2. 业务模块通过@AutowrideFromBase的方式,获得RegistryConfig对象
  3. 调用registryConfig.setScopeModel(applicationModel);

堆栈信息如下:
java.lang.reflect.UndeclaredThrowableException: null at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:780) ~[spring-aop-5.3.22.jar:5.3.22] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.22.jar:5.3.22] at org.apache.dubbo.config.RegistryConfig$$EnhancerBySpringCGLIB$$bb8ed176.checkScopeModel(<generated>) ~[dubbo-3.2.0.jar:na] at org.apache.dubbo.config.AbstractConfig.setScopeModel(AbstractConfig.java:418) ~[dubbo-3.2.0.jar:3.2.0] at org.apache.dubbo.config.bootstrap.DubboBootstrap.registry(DubboBootstrap.java:469) ~[dubbo-3.2.0.jar:3.2.0] at com.demo.module1.DubboConfiguration.init(DubboConfiguration.java:38) ~[null-null-20240105094940835-unpack/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_322] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_322] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_322] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_322] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.22.jar:5.3.22] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.22.jar:5.3.22] ... 64 common frames omitted Caused by: java.lang.IllegalAccessException: Class com.alipay.sofa.serverless.common.service.SpringServiceInvoker can not access a member of class org.apache.dubbo.config.AbstractConfig with modifiers "protected" at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102) ~[na:1.8.0_322] at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296) ~[na:1.8.0_322] at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288) ~[na:1.8.0_322] at java.lang.reflect.Method.invoke(Method.java:491) ~[na:1.8.0_322] at com.alipay.sofa.serverless.common.service.SpringServiceInvoker.invokeService(SpringServiceInvoker.java:148) ~[sofa-serverless-common-0.5.5.jar:na] at com.alipay.sofa.serverless.common.service.SpringServiceInvoker.doInvoke(SpringServiceInvoker.java:103) ~[sofa-serverless-common-0.5.5.jar:na] at com.alipay.sofa.serverless.common.service.SpringServiceInvoker.invoke(SpringServiceInvoker.java:88) ~[sofa-serverless-common-0.5.5.jar:na] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.22.jar:5.3.22] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.22.jar:5.3.22] ... 76 common frames omitted

@qq290584697
Copy link
Collaborator Author

已经提交了解决的PR

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant