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)) {