This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.3 by this push:
     new 731612bfef Fix triple protocol for native image (#15115)
731612bfef is described below

commit 731612bfef1332b7fa9c305cbfa9dd52df9dc30a
Author: Jermaine Hua <[email protected]>
AuthorDate: Sat Mar 29 19:38:21 2025 +0800

    Fix triple protocol for native image (#15115)
    
    * Fix triple protocol for native image
    
    Signed-off-by: JermaineHua <[email protected]>
    
    * Remove duplicate bean
    
    Signed-off-by: JermaineHua <[email protected]>
    
    ---------
    
    Signed-off-by: JermaineHua <[email protected]>
    Co-authored-by: Albumen Kevin <[email protected]>
---
 .../aot/MetadataProxyDescriberRegistrar.java       |  2 ++
 .../MetadataReflectionTypeDescriberRegistrar.java  |  4 ++++
 .../spring/RestSpringScopeModelInitializer.java    | 23 ++++++++--------------
 ...rg.apache.dubbo.rpc.model.ScopeModelInitializer |  1 +
 .../registry/RegistryScopeModelInitializer.java    |  2 ++
 .../registry/client/metadata/MetadataUtils.java    |  2 +-
 6 files changed, 18 insertions(+), 16 deletions(-)

diff --git 
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/aot/MetadataProxyDescriberRegistrar.java
 
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/aot/MetadataProxyDescriberRegistrar.java
index 04db2f81db..a5a800a771 100644
--- 
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/aot/MetadataProxyDescriberRegistrar.java
+++ 
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/aot/MetadataProxyDescriberRegistrar.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.metadata.aot;
 import org.apache.dubbo.aot.api.JdkProxyDescriber;
 import org.apache.dubbo.aot.api.ProxyDescriberRegistrar;
 import org.apache.dubbo.metadata.MetadataService;
+import org.apache.dubbo.metadata.MetadataServiceV2;
 import org.apache.dubbo.rpc.service.Destroyable;
 import org.apache.dubbo.rpc.service.EchoService;
 
@@ -30,6 +31,7 @@ public class MetadataProxyDescriberRegistrar implements 
ProxyDescriberRegistrar
     public List<JdkProxyDescriber> getJdkProxyDescribers() {
         List<JdkProxyDescriber> describers = new ArrayList<>();
         describers.add(buildJdkProxyDescriber(MetadataService.class));
+        describers.add(buildJdkProxyDescriber(MetadataServiceV2.class));
         return describers;
     }
 
diff --git 
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/aot/MetadataReflectionTypeDescriberRegistrar.java
 
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/aot/MetadataReflectionTypeDescriberRegistrar.java
index 52450d866e..453ac9d066 100644
--- 
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/aot/MetadataReflectionTypeDescriberRegistrar.java
+++ 
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/aot/MetadataReflectionTypeDescriberRegistrar.java
@@ -20,7 +20,9 @@ import org.apache.dubbo.aot.api.MemberCategory;
 import org.apache.dubbo.aot.api.ReflectionTypeDescriberRegistrar;
 import org.apache.dubbo.aot.api.TypeDescriber;
 import org.apache.dubbo.metadata.MetadataInfo;
+import org.apache.dubbo.metadata.MetadataInfoV2;
 import org.apache.dubbo.metadata.MetadataService;
+import org.apache.dubbo.metadata.MetadataServiceV2;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -33,7 +35,9 @@ public class MetadataReflectionTypeDescriberRegistrar 
implements ReflectionTypeD
     public List<TypeDescriber> getTypeDescribers() {
         List<TypeDescriber> typeDescribers = new ArrayList<>();
         
typeDescribers.add(buildTypeDescriberWithPublicMethod(MetadataService.class));
+        
typeDescribers.add(buildTypeDescriberWithPublicMethod(MetadataServiceV2.class));
         
typeDescribers.add(buildTypeDescriberWithDeclaredConstructors(MetadataInfo.class));
+        
typeDescribers.add(buildTypeDescriberWithDeclaredConstructors(MetadataInfoV2.class));
         return typeDescribers;
     }
 
diff --git 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/RegistryScopeModelInitializer.java
 
b/dubbo-plugin/dubbo-rest-spring/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/support/spring/RestSpringScopeModelInitializer.java
similarity index 61%
copy from 
dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/RegistryScopeModelInitializer.java
copy to 
dubbo-plugin/dubbo-rest-spring/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/support/spring/RestSpringScopeModelInitializer.java
index 9cb22fa8a5..bca5c0dd43 100644
--- 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/RegistryScopeModelInitializer.java
+++ 
b/dubbo-plugin/dubbo-rest-spring/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/support/spring/RestSpringScopeModelInitializer.java
@@ -14,28 +14,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.registry;
+package org.apache.dubbo.rpc.protocol.tri.rest.support.spring;
 
 import org.apache.dubbo.common.beans.factory.ScopeBeanFactory;
-import org.apache.dubbo.registry.client.metadata.MetadataServiceDelegation;
-import org.apache.dubbo.registry.integration.ExporterFactory;
-import org.apache.dubbo.registry.support.RegistryManager;
-import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.common.utils.DefaultParameterNameReader;
 import org.apache.dubbo.rpc.model.FrameworkModel;
 import org.apache.dubbo.rpc.model.ScopeModelInitializer;
+import 
org.apache.dubbo.rpc.protocol.tri.rest.argument.CompositeArgumentResolver;
+import org.apache.dubbo.rpc.protocol.tri.rest.argument.GeneralTypeConverter;
 
-public class RegistryScopeModelInitializer implements ScopeModelInitializer {
-
+public class RestSpringScopeModelInitializer implements ScopeModelInitializer {
     @Override
     public void initializeFrameworkModel(FrameworkModel frameworkModel) {
         ScopeBeanFactory beanFactory = frameworkModel.getBeanFactory();
-        beanFactory.registerBean(ExporterFactory.class);
-    }
-
-    @Override
-    public void initializeApplicationModel(ApplicationModel applicationModel) {
-        ScopeBeanFactory beanFactory = applicationModel.getBeanFactory();
-        beanFactory.registerBean(RegistryManager.class);
-        beanFactory.registerBean(MetadataServiceDelegation.class);
+        beanFactory.registerBean(GeneralTypeConverter.class);
+        beanFactory.registerBean(DefaultParameterNameReader.class);
+        beanFactory.registerBean(CompositeArgumentResolver.class);
     }
 }
diff --git 
a/dubbo-plugin/dubbo-rest-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
 
b/dubbo-plugin/dubbo-rest-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
new file mode 100644
index 0000000000..e6c9fdc882
--- /dev/null
+++ 
b/dubbo-plugin/dubbo-rest-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
@@ -0,0 +1 @@
+rest-spring=org.apache.dubbo.rpc.protocol.tri.rest.support.spring.RestSpringScopeModelInitializer
diff --git 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/RegistryScopeModelInitializer.java
 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/RegistryScopeModelInitializer.java
index 9cb22fa8a5..f7031384c8 100644
--- 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/RegistryScopeModelInitializer.java
+++ 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/RegistryScopeModelInitializer.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.registry;
 
 import org.apache.dubbo.common.beans.factory.ScopeBeanFactory;
 import org.apache.dubbo.registry.client.metadata.MetadataServiceDelegation;
+import org.apache.dubbo.registry.client.metadata.MetadataServiceDelegationV2;
 import org.apache.dubbo.registry.integration.ExporterFactory;
 import org.apache.dubbo.registry.support.RegistryManager;
 import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -37,5 +38,6 @@ public class RegistryScopeModelInitializer implements 
ScopeModelInitializer {
         ScopeBeanFactory beanFactory = applicationModel.getBeanFactory();
         beanFactory.registerBean(RegistryManager.class);
         beanFactory.registerBean(MetadataServiceDelegation.class);
+        beanFactory.registerBean(MetadataServiceDelegationV2.class);
     }
 }
diff --git 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
index 663d213247..bc5979e2c1 100644
--- 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
+++ 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
@@ -176,7 +176,7 @@ public class MetadataUtils {
         RemoteMetadataService remoteMetadataService;
         ProxyFactory proxyFactory =
                 
applicationModel.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
-        if (useV2) {
+        if (useV2 && !inNativeImage) {
             Invoker<MetadataServiceV2> invoker = 
protocol.refer(MetadataServiceV2.class, url);
 
             if (url.getParameter(AUTH_KEY, false)) {

Reply via email to