diff --git a/healthcheck-sofa-boot-starter/pom.xml b/healthcheck-sofa-boot-starter/pom.xml
index e49cc0981..cb64754e3 100644
--- a/healthcheck-sofa-boot-starter/pom.xml
+++ b/healthcheck-sofa-boot-starter/pom.xml
@@ -22,7 +22,7 @@
com.alipay.sofa
sofa-boot-runtime
- 2.6.1
+ 2.6.2-SNAPSHOT
../pom.xml
diff --git a/infra-sofa-boot-starter/pom.xml b/infra-sofa-boot-starter/pom.xml
index cfb740921..10ea4da90 100644
--- a/infra-sofa-boot-starter/pom.xml
+++ b/infra-sofa-boot-starter/pom.xml
@@ -22,7 +22,7 @@
com.alipay.sofa
sofa-boot-runtime
- 2.6.1
+ 2.6.2-SNAPSHOT
../pom.xml
4.0.0
diff --git a/infra-sofa-boot-starter/src/main/resources/META-INF/com/alipay/sofa/infra/config/spring/namespace/schema/rpc.xsd b/infra-sofa-boot-starter/src/main/resources/META-INF/com/alipay/sofa/infra/config/spring/namespace/schema/rpc.xsd
index 332a2697d..6d7626b15 100644
--- a/infra-sofa-boot-starter/src/main/resources/META-INF/com/alipay/sofa/infra/config/spring/namespace/schema/rpc.xsd
+++ b/infra-sofa-boot-starter/src/main/resources/META-INF/com/alipay/sofa/infra/config/spring/namespace/schema/rpc.xsd
@@ -127,6 +127,10 @@
+
+
+
+
@@ -141,6 +145,10 @@
+
+
+
+
@@ -567,7 +575,7 @@
-
+
@@ -590,7 +598,7 @@
-
+
diff --git a/isle-sofa-boot-starter/pom.xml b/isle-sofa-boot-starter/pom.xml
index a6f1d626f..54646d881 100644
--- a/isle-sofa-boot-starter/pom.xml
+++ b/isle-sofa-boot-starter/pom.xml
@@ -5,7 +5,7 @@
com.alipay.sofa
sofa-boot-runtime
- 2.6.1
+ 2.6.2-SNAPSHOT
../pom.xml
4.0.0
diff --git a/pom.xml b/pom.xml
index 785b3b8e0..95eae9b8d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,12 +23,13 @@
com.alipay.sofa
sofaboot-dependencies
- 2.6.1
+ 2.6.3-SNAPSHOT
4.0.0
sofa-boot-runtime
pom
+ 2.6.2-SNAPSHOT
SOFABoot Runtime
SOFABoot Runtime
diff --git a/runtime-sofa-boot-plugin/pom.xml b/runtime-sofa-boot-plugin/pom.xml
index bb547d10b..f2e0634ea 100644
--- a/runtime-sofa-boot-plugin/pom.xml
+++ b/runtime-sofa-boot-plugin/pom.xml
@@ -22,7 +22,7 @@
com.alipay.sofa
sofa-boot-runtime
- 2.6.1
+ 2.6.2-SNAPSHOT
../pom.xml
4.0.0
@@ -46,77 +46,87 @@
-
-
-
- com.alipay.sofa
- sofa-ark-plugin-maven-plugin
-
-
- default-cli
-
- ark-plugin
-
+
+
+ jdk8
+
+ 1.8
+
-
- 1500
- ${ark.plugin.name}
- com.alipay.sofa.runtime.integration.activator.SofaRuntimeActivator
+
+
+
+ com.alipay.sofa
+ sofa-ark-plugin-maven-plugin
+
+
+ default-cli
+
+ ark-plugin
+
-
-
- com.alipay.sofa.runtime.api.*
- com.alipay.sofa.runtime.client.*
- com.alipay.sofa.runtime.component.*
- com.alipay.sofa.runtime.constants.*
- com.alipay.sofa.runtime.integration.*
- com.alipay.sofa.runtime.model.*
- com.alipay.sofa.runtime.service.component
- com.alipay.sofa.runtime.service.helper
- com.alipay.sofa.runtime.spi.client
- com.alipay.sofa.runtime.spi.component
- com.alipay.sofa.runtime.spi.health
- com.alipay.sofa.runtime.spi.log
- com.alipay.sofa.runtime.spi.binding
- com.alipay.sofa.runtime.spi.service
- com.alipay.sofa.runtime.spi.util
- org.aopalliance.aop
- org.aopalliance.intercept
-
+
+ 1500
+ ${ark.plugin.name}
+ com.alipay.sofa.runtime.integration.activator.SofaRuntimeActivator
-
- com.alipay.sofa.runtime.service.binding.JvmBinding
- com.alipay.sofa.runtime.SofaFramework
- com.alipay.sofa.runtime.SofaRuntimeProperties
-
-
+
+
+ com.alipay.sofa.runtime.api.*
+ com.alipay.sofa.runtime.client.*
+ com.alipay.sofa.runtime.component.*
+ com.alipay.sofa.runtime.constants.*
+ com.alipay.sofa.runtime.integration.*
+ com.alipay.sofa.runtime.model.*
+ com.alipay.sofa.runtime.service.component
+ com.alipay.sofa.runtime.service.helper
+ com.alipay.sofa.runtime.spi.client
+ com.alipay.sofa.runtime.spi.component
+ com.alipay.sofa.runtime.spi.health
+ com.alipay.sofa.runtime.spi.log
+ com.alipay.sofa.runtime.spi.binding
+ com.alipay.sofa.runtime.spi.util
+ org.aopalliance.aop
+ org.aopalliance.intercept
+
-
- org.springframework
- org.springframework.boot
- org.apache.tomcat.embed
-
+
+ com.alipay.sofa.runtime.service.binding.JvmBinding
+ com.alipay.sofa.runtime.SofaFramework
+ com.alipay.sofa.runtime.SofaRuntimeProperties
+ com.alipay.sofa.runtime.service.binding.JvmBindingParam
+ com.alipay.sofa.runtime.spi.service.ServiceProxy
+
+
-
- hibernate-validator
- classmate
- jboss-logging
- jackson-annotations
- jackson-core
- jackson-databind
- jcl-over-slf4j
- jul-to-slf4j
- log4j-over-slf4j
- logback-core
- logback-classic
- snakeyaml
- validation-api
-
+
+ org.springframework
+ org.springframework.boot
+ org.apache.tomcat.embed
+
-
-
-
-
-
-
+
+ hibernate-validator
+ classmate
+ jboss-logging
+ jackson-annotations
+ jackson-core
+ jackson-databind
+ jcl-over-slf4j
+ jul-to-slf4j
+ log4j-over-slf4j
+ logback-core
+ logback-classic
+ snakeyaml
+ validation-api
+
+
+
+
+
+
+
+
+
+
diff --git a/runtime-sofa-boot-starter/pom.xml b/runtime-sofa-boot-starter/pom.xml
index 5f40823f8..5bee9387d 100644
--- a/runtime-sofa-boot-starter/pom.xml
+++ b/runtime-sofa-boot-starter/pom.xml
@@ -22,7 +22,7 @@
com.alipay.sofa
sofa-boot-runtime
- 2.6.1
+ 2.6.2-SNAPSHOT
../pom.xml
4.0.0
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/api/annotation/SofaReferenceBinding.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/api/annotation/SofaReferenceBinding.java
index 785517320..006b77db6 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/api/annotation/SofaReferenceBinding.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/api/annotation/SofaReferenceBinding.java
@@ -128,4 +128,14 @@
* @return parameters of consumer
*/
SofaParameter[] parameters() default {};
+
+ /**
+ * serialization between biz, default is false.
+ * only serialize of reference and service is false
+ * then invocation between biz would skip serialization
+ * Note that the serialize of {@link SofaServiceBinding} is true
+ *
+ * @return
+ */
+ boolean serialize() default false;
}
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/api/annotation/SofaServiceBinding.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/api/annotation/SofaServiceBinding.java
index 9a6d6ec93..77b6737ae 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/api/annotation/SofaServiceBinding.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/api/annotation/SofaServiceBinding.java
@@ -89,4 +89,15 @@
* @return parameters of service
*/
SofaParameter[] parameters() default {};
+
+ /**
+ * serialization between biz, default is true.
+ * only serialize of reference and service is false
+ * then invocation between biz would skip serialization
+ *
+ * Note that the serialize of {@link SofaReferenceBinding} is false
+ *
+ * @return
+ */
+ boolean serialize() default true;
}
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/invoke/DynamicJvmServiceProxyFinder.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/invoke/DynamicJvmServiceProxyFinder.java
index 7da86b25b..a823ecac8 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/invoke/DynamicJvmServiceProxyFinder.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/invoke/DynamicJvmServiceProxyFinder.java
@@ -20,6 +20,7 @@
import com.alipay.sofa.ark.spi.model.BizState;
import com.alipay.sofa.ark.spi.service.ArkInject;
import com.alipay.sofa.ark.spi.service.biz.BizManagerService;
+import com.alipay.sofa.runtime.service.binding.JvmBinding;
import com.alipay.sofa.runtime.service.component.ServiceComponent;
import com.alipay.sofa.runtime.SofaFramework;
import com.alipay.sofa.runtime.spi.binding.Contract;
@@ -70,9 +71,15 @@ public ServiceProxy findServiceProxy(ClassLoader clientClassloader, Contract con
ServiceComponent serviceComponent = findServiceComponent(uniqueId, interfaceType,
sofaRuntimeManager.getComponentManager());
if (serviceComponent != null) {
+ JvmBinding referenceJvmBinding = (JvmBinding) contract
+ .getBinding(JvmBinding.JVM_BINDING_TYPE);
+ JvmBinding serviceJvmBinding = (JvmBinding) serviceComponent.getService()
+ .getBinding(JvmBinding.JVM_BINDING_TYPE);
+ boolean serialize = referenceJvmBinding.getJvmBindingParam().isSerialize()
+ || serviceJvmBinding.getJvmBindingParam().isSerialize();
return new DynamicJvmServiceInvoker(clientClassloader,
sofaRuntimeManager.getAppClassLoader(), serviceComponent.getService()
- .getTarget(), contract, biz.getIdentity());
+ .getTarget(), contract, biz.getIdentity(), serialize);
}
}
}
@@ -123,6 +130,7 @@ static class DynamicJvmServiceInvoker extends ServiceProxy {
private Object targetService;
private String bizIdentity;
private ThreadLocal clientClassloader = new ThreadLocal<>();
+ private boolean serialize;
static protected final String TOSTRING_METHOD = "toString";
static protected final String EQUALS_METHOD = "equals";
@@ -130,12 +138,13 @@ static class DynamicJvmServiceInvoker extends ServiceProxy {
public DynamicJvmServiceInvoker(ClassLoader clientClassloader,
ClassLoader serviceClassLoader, Object targetService,
- Contract contract, String bizIdentity) {
+ Contract contract, String bizIdentity, boolean serialize) {
super(serviceClassLoader);
this.clientClassloader.set(clientClassloader);
this.targetService = targetService;
this.contract = contract;
this.bizIdentity = bizIdentity;
+ this.serialize = serialize;
}
@Override
@@ -148,6 +157,16 @@ protected Object doInvoke(MethodInvocation invocation) throws Throwable {
.debug(">> Start in Cross App JVM service invoke, the service interface is - "
+ getInterfaceType());
+ if (!serialize) {
+ ClassLoader tcl = Thread.currentThread().getContextClassLoader();
+ try {
+ pushThreadContextClassLoader(getServiceClassLoader());
+ return targetMethod.invoke(targetService, targetArguments);
+ } finally {
+ pushThreadContextClassLoader(tcl);
+ }
+ }
+
if (TOSTRING_METHOD.equalsIgnoreCase(targetMethod.getName())
&& targetMethod.getParameterTypes().length == 0) {
return targetService.toString();
@@ -182,7 +201,9 @@ protected void doCatch(MethodInvocation invocation, Throwable e, long startTime)
@Override
protected void doFinally(MethodInvocation invocation, long startTime) {
- SofaLogger.debug(getCommonInvocationLog("Finally", invocation, startTime));
+ if (SofaLogger.isDebugEnabled()) {
+ SofaLogger.debug(getCommonInvocationLog("Finally", invocation, startTime));
+ }
}
private Class getInterfaceType() {
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/service/SofaEventHandler.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/service/SofaEventHandler.java
index a5a93a023..dcf322a8a 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/service/SofaEventHandler.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/service/SofaEventHandler.java
@@ -16,7 +16,6 @@
*/
package com.alipay.sofa.runtime.integration.service;
-import com.alipay.sofa.ark.spi.constant.Constants;
import com.alipay.sofa.ark.spi.event.ArkEvent;
import com.alipay.sofa.ark.spi.event.BizEvent;
import com.alipay.sofa.ark.spi.model.Biz;
@@ -30,11 +29,15 @@
* @since 2.5.0
*/
public class SofaEventHandler implements EventHandler {
+ // TODO FIX After Release SOFAArk 1.0.0, the constant variable would be removed.
+ public final static String BIZ_EVENT_TOPIC_AFTER_INVOKE_BIZ_START = "AFTER-INVOKE-BIZ-START";
+ public final static String BIZ_EVENT_TOPIC_AFTER_INVOKE_BIZ_STOP = "AFTER-INVOKE-BIZ-STOP";
+
@Override
public void handleEvent(ArkEvent event) {
- if (Constants.BIZ_EVENT_TOPIC_UNINSTALL.equals(event.getTopic())) {
+ if (BIZ_EVENT_TOPIC_AFTER_INVOKE_BIZ_STOP.equals(event.getTopic())) {
doUninstallBiz((BizEvent) event);
- } else if (Constants.BIZ_EVENT_TOPIC_HEALTH_CHECK.equals(event.getTopic())) {
+ } else if (BIZ_EVENT_TOPIC_AFTER_INVOKE_BIZ_START.equals(event.getTopic())) {
doHealthCheck((BizEvent) event);
}
}
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBinding.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBinding.java
index 5446aa260..0d2a4ab25 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBinding.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBinding.java
@@ -31,10 +31,20 @@ public class JvmBinding extends AbstractBinding {
/**
* binding type: JVM
*/
- public static BindingType JVM_BINDING_TYPE = new BindingType("jvm");
+ public static BindingType JVM_BINDING_TYPE = new BindingType(XmlConstants.BINDING_TYPE);
+
+ private JvmBindingParam jvmBindingParam = new JvmBindingParam();
public JvmBinding() {
+ }
+
+ public JvmBindingParam getJvmBindingParam() {
+ return jvmBindingParam;
+ }
+ public JvmBinding setJvmBindingParam(JvmBindingParam jvmBindingParam) {
+ this.jvmBindingParam = jvmBindingParam;
+ return this;
}
/**
@@ -85,4 +95,10 @@ public HealthResult healthCheck() {
healthResult.setHealthy(isHealthy);
return healthResult;
}
+
+ public static class XmlConstants {
+ public static String SERIALIZE = "serialize";
+ public static String SUPPORT_TAG_NAME = "binding.jvm";
+ public static String BINDING_TYPE = "jvm";
+ }
}
\ No newline at end of file
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBindingConverter.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBindingConverter.java
new file mode 100644
index 000000000..1d4b352f0
--- /dev/null
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBindingConverter.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alipay.sofa.runtime.service.binding;
+
+import com.alipay.sofa.runtime.api.annotation.SofaReference;
+import com.alipay.sofa.runtime.api.annotation.SofaReferenceBinding;
+import com.alipay.sofa.runtime.api.annotation.SofaService;
+import com.alipay.sofa.runtime.api.annotation.SofaServiceBinding;
+import com.alipay.sofa.runtime.api.binding.BindingType;
+import com.alipay.sofa.runtime.spi.service.BindingConverter;
+import com.alipay.sofa.runtime.spi.service.BindingConverterContext;
+import org.w3c.dom.Element;
+
+/**
+ * @author qilong.zql
+ * @since 3.1.3
+ */
+public class JvmBindingConverter implements BindingConverter {
+ @Override
+ public JvmBinding convert(JvmBindingParam bindingParam,
+ BindingConverterContext bindingConverterContext) {
+ return new JvmBinding().setJvmBindingParam(bindingParam);
+ }
+
+ @Override
+ public JvmBinding convert(Element element, BindingConverterContext bindingConverterContext) {
+ JvmBindingParam jvmBindingParam = new JvmBindingParam();
+ if (element != null) {
+ jvmBindingParam.setSerialize(Boolean.TRUE.toString().equalsIgnoreCase(
+ element.getAttribute(JvmBinding.XmlConstants.SERIALIZE)));
+ }
+ return new JvmBinding().setJvmBindingParam(jvmBindingParam);
+ }
+
+ @Override
+ public JvmBinding convert(SofaService sofaServiceAnnotation,
+ SofaServiceBinding sofaServiceBindingAnnotation,
+ BindingConverterContext bindingConverterContext) {
+ if (JvmBinding.XmlConstants.BINDING_TYPE.equals(sofaServiceBindingAnnotation.bindingType())) {
+ JvmBindingParam jvmBindingParam = new JvmBindingParam();
+ jvmBindingParam.setSerialize(sofaServiceBindingAnnotation.serialize());
+ return new JvmBinding().setJvmBindingParam(jvmBindingParam);
+ }
+ return null;
+ }
+
+ @Override
+ public JvmBinding convert(SofaReference sofaReferenceAnnotation,
+ SofaReferenceBinding sofaReferenceBindingAnnotation,
+ BindingConverterContext bindingConverterContext) {
+ if (JvmBinding.XmlConstants.BINDING_TYPE.equals(sofaReferenceBindingAnnotation
+ .bindingType())) {
+ JvmBindingParam jvmBindingParam = new JvmBindingParam();
+ jvmBindingParam.setSerialize(sofaReferenceBindingAnnotation.serialize());
+ return new JvmBinding().setJvmBindingParam(jvmBindingParam);
+ }
+ return null;
+ }
+
+ @Override
+ public BindingType supportBindingType() {
+ return JvmBinding.JVM_BINDING_TYPE;
+ }
+
+ @Override
+ public String supportTagName() {
+ return JvmBinding.XmlConstants.SUPPORT_TAG_NAME;
+ }
+
+}
\ No newline at end of file
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBindingParam.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBindingParam.java
new file mode 100644
index 000000000..48bdb1d04
--- /dev/null
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBindingParam.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alipay.sofa.runtime.service.binding;
+
+import com.alipay.sofa.runtime.api.binding.BindingType;
+import com.alipay.sofa.runtime.api.client.param.BindingParam;
+
+/**
+ * @author qilong.zql
+ * @since 3.1.2
+ */
+public class JvmBindingParam implements BindingParam {
+
+ private boolean serialize = true;
+
+ @Override
+ public BindingType getBindingType() {
+ return JvmBinding.JVM_BINDING_TYPE;
+ }
+
+ /**
+ * whether ignore serialize when invoke across ClassLoader.
+ *
+ * @return
+ */
+ public boolean isSerialize() {
+ return serialize;
+ }
+
+ /**
+ * Set whether ignore serialize when invoke across ClassLoader.
+ *
+ * @param serialize
+ */
+ public JvmBindingParam setSerialize(boolean serialize) {
+ this.serialize = serialize;
+ return this;
+ }
+}
\ No newline at end of file
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/client/ReferenceClientImpl.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/client/ReferenceClientImpl.java
index 1c7c91455..d49a70a6c 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/client/ReferenceClientImpl.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/client/ReferenceClientImpl.java
@@ -23,6 +23,7 @@
import com.alipay.sofa.runtime.api.component.ComponentName;
import com.alipay.sofa.runtime.model.InterfaceMode;
import com.alipay.sofa.runtime.service.binding.JvmBinding;
+import com.alipay.sofa.runtime.service.binding.JvmBindingParam;
import com.alipay.sofa.runtime.service.component.Reference;
import com.alipay.sofa.runtime.service.component.ReferenceComponent;
import com.alipay.sofa.runtime.service.component.impl.ReferenceImpl;
@@ -63,8 +64,10 @@ private Reference getReferenceFromReferenceParam(ReferenceParam reference
referenceParam.getInterfaceType(), InterfaceMode.api, referenceParam.isJvmFirst(), null);
if (bindingParam == null) {
- // add JVM Binding Default
- reference.addBinding(new JvmBinding());
+ // default add jvm binding and reference jvm binding should set serialize as false
+ JvmBindingParam jvmBindingParam = new JvmBindingParam();
+ jvmBindingParam.setSerialize(false);
+ reference.addBinding(new JvmBinding().setJvmBindingParam(jvmBindingParam));
} else {
BindingConverter bindingConverter = bindingConverterFactory
.getBindingConverter(bindingParam.getBindingType());
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/helper/ReferenceRegisterHelper.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/helper/ReferenceRegisterHelper.java
index 12aa0e07c..004c5ca0f 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/helper/ReferenceRegisterHelper.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/helper/ReferenceRegisterHelper.java
@@ -43,6 +43,7 @@ public static Object registerReference(Reference reference,
if (!binding.getBindingType().equals(JvmBinding.JVM_BINDING_TYPE)
&& !SofaRuntimeProperties.isDisableJvmFirst(sofaRuntimeContext)
&& reference.isJvmFirst()) {
+ // as rpc invocation would be serialized, so here would Not ignore serialized
reference.addBinding(new JvmBinding());
}
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/ReferenceAnnotationBeanPostProcessor.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/ReferenceAnnotationBeanPostProcessor.java
index eb06a3400..ffb46c29c 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/ReferenceAnnotationBeanPostProcessor.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/ReferenceAnnotationBeanPostProcessor.java
@@ -162,28 +162,21 @@ private Object createReferenceProxy(SofaReference sofaReferenceAnnotation,
Class> interfaceType) {
Reference reference = new ReferenceImpl(sofaReferenceAnnotation.uniqueId(), interfaceType,
InterfaceMode.annotation, sofaReferenceAnnotation.jvmFirst());
- if (JvmBinding.JVM_BINDING_TYPE.getType().equals(
- sofaReferenceAnnotation.binding().bindingType())) {
- reference.addBinding(new JvmBinding());
- } else {
- BindingConverter bindingConverter = bindingConverterFactory
- .getBindingConverter(new BindingType(sofaReferenceAnnotation.binding()
- .bindingType()));
- if (bindingConverter == null) {
- throw new ServiceRuntimeException(
- "Can not found binding converter for binding type "
- + sofaReferenceAnnotation.binding().bindingType());
- }
-
- BindingConverterContext bindingConverterContext = new BindingConverterContext();
- bindingConverterContext.setInBinding(true);
- bindingConverterContext.setApplicationContext(applicationContext);
- bindingConverterContext.setAppName(sofaRuntimeContext.getAppName());
- bindingConverterContext.setAppClassLoader(sofaRuntimeContext.getAppClassLoader());
- Binding binding = bindingConverter.convert(sofaReferenceAnnotation,
- sofaReferenceAnnotation.binding(), bindingConverterContext);
- reference.addBinding(binding);
+ BindingConverter bindingConverter = bindingConverterFactory
+ .getBindingConverter(new BindingType(sofaReferenceAnnotation.binding().bindingType()));
+ if (bindingConverter == null) {
+ throw new ServiceRuntimeException("Can not found binding converter for binding type "
+ + sofaReferenceAnnotation.binding().bindingType());
}
+
+ BindingConverterContext bindingConverterContext = new BindingConverterContext();
+ bindingConverterContext.setInBinding(true);
+ bindingConverterContext.setApplicationContext(applicationContext);
+ bindingConverterContext.setAppName(sofaRuntimeContext.getAppName());
+ bindingConverterContext.setAppClassLoader(sofaRuntimeContext.getAppClassLoader());
+ Binding binding = bindingConverter.convert(sofaReferenceAnnotation,
+ sofaReferenceAnnotation.binding(), bindingConverterContext);
+ reference.addBinding(binding);
return ReferenceRegisterHelper.registerReference(reference, bindingAdapterFactory,
sofaRuntimeContext);
}
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/ServiceBeanFactoryPostProcessor.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/ServiceBeanFactoryPostProcessor.java
index 02487d7bd..d4cd6fc4a 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/ServiceBeanFactoryPostProcessor.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/ServiceBeanFactoryPostProcessor.java
@@ -24,6 +24,7 @@
import java.util.List;
import java.util.Set;
+import com.alipay.sofa.runtime.api.annotation.SofaReferenceBinding;
import org.springframework.beans.BeansException;
import org.springframework.beans.FatalBeanException;
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
@@ -271,6 +272,8 @@ private void doGenerateSofaReferenceDefinition(BeanDefinition beanDefinition,
builder.addPropertyValue(AbstractContractDefinitionParser.UNIQUE_ID_PROPERTY, uniqueId);
builder.addPropertyValue(AbstractContractDefinitionParser.INTERFACE_CLASS_PROPERTY,
interfaceType);
+ builder.addPropertyValue(AbstractContractDefinitionParser.BINDINGS,
+ getSofaReferenceBinding(sofaReference, sofaReference.binding()));
builder.addPropertyValue(AbstractContractDefinitionParser.DEFINITION_BUILDING_API_TYPE,
true);
((BeanDefinitionRegistry) beanFactory).registerBeanDefinition(referenceId,
@@ -349,26 +352,52 @@ private List getSofaServiceBinding(SofaService sofaServiceAnnotation,
SofaServiceBinding[] sofaServiceBindings) {
List bindings = new ArrayList<>();
for (SofaServiceBinding sofaServiceBinding : sofaServiceBindings) {
- if (JvmBinding.JVM_BINDING_TYPE.getType().equals(sofaServiceBinding.bindingType())) {
- bindings.add(new JvmBinding());
- } else {
- BindingConverter bindingConverter = bindingConverterFactory
- .getBindingConverter(new BindingType(sofaServiceBinding.bindingType()));
- if (bindingConverter == null) {
- throw new ServiceRuntimeException(
- "Can not found binding converter for binding type "
- + sofaServiceBinding.bindingType());
- }
- BindingConverterContext bindingConverterContext = new BindingConverterContext();
- bindingConverterContext.setInBinding(false);
- bindingConverterContext.setApplicationContext(applicationContext);
- bindingConverterContext.setAppName(sofaRuntimeContext.getAppName());
- bindingConverterContext.setAppClassLoader(sofaRuntimeContext.getAppClassLoader());
- Binding binding = bindingConverter.convert(sofaServiceAnnotation,
- sofaServiceBinding, bindingConverterContext);
- bindings.add(binding);
+ BindingConverter bindingConverter = bindingConverterFactory
+ .getBindingConverter(new BindingType(sofaServiceBinding.bindingType()));
+ if (bindingConverter == null) {
+ throw new ServiceRuntimeException(
+ "Can not found binding converter for binding type "
+ + sofaServiceBinding.bindingType());
}
+ BindingConverterContext bindingConverterContext = new BindingConverterContext();
+ bindingConverterContext.setInBinding(false);
+ bindingConverterContext.setApplicationContext(applicationContext);
+ bindingConverterContext.setAppName(sofaRuntimeContext.getAppName());
+ bindingConverterContext.setAppClassLoader(sofaRuntimeContext.getAppClassLoader());
+ Binding binding = bindingConverter.convert(sofaServiceAnnotation, sofaServiceBinding,
+ bindingConverterContext);
+ bindings.add(binding);
+ }
+ return bindings;
+ }
+
+ /**
+ * get sofa reference binding annotated on parameter. At present, only jvm sofa reference is supported .
+ * @param sofaReferenceAnnotation
+ * @param sofaReferenceBinding
+ * @return
+ */
+ private List getSofaReferenceBinding(SofaReference sofaReferenceAnnotation,
+ SofaReferenceBinding sofaReferenceBinding) {
+ if (!JvmBinding.XmlConstants.BINDING_TYPE.equals(sofaReferenceBinding.bindingType())) {
+ throw new ServiceRuntimeException(
+ "Only jvm sofa reference binding is supported to annotate on parameter.");
+ }
+ List bindings = new ArrayList<>();
+ BindingConverter bindingConverter = bindingConverterFactory
+ .getBindingConverter(new BindingType(sofaReferenceBinding.bindingType()));
+ if (bindingConverter == null) {
+ throw new ServiceRuntimeException("Can not found binding converter for binding type "
+ + sofaReferenceBinding.bindingType());
}
+ BindingConverterContext bindingConverterContext = new BindingConverterContext();
+ bindingConverterContext.setInBinding(true);
+ bindingConverterContext.setApplicationContext(applicationContext);
+ bindingConverterContext.setAppName(sofaRuntimeContext.getAppName());
+ bindingConverterContext.setAppClassLoader(sofaRuntimeContext.getAppClassLoader());
+ Binding binding = bindingConverter.convert(sofaReferenceAnnotation, sofaReferenceBinding,
+ bindingConverterContext);
+ bindings.add(binding);
return bindings;
}
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/AbstractContractFactoryBean.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/AbstractContractFactoryBean.java
index 93910dba9..93b644dd4 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/AbstractContractFactoryBean.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/AbstractContractFactoryBean.java
@@ -33,7 +33,6 @@
import com.alipay.sofa.runtime.api.ServiceRuntimeException;
import com.alipay.sofa.runtime.constants.SofaRuntimeFrameworkConstants;
-import com.alipay.sofa.runtime.service.binding.JvmBinding;
import com.alipay.sofa.runtime.spi.binding.Binding;
import com.alipay.sofa.runtime.spi.binding.BindingAdapterFactory;
import com.alipay.sofa.runtime.spi.component.SofaRuntimeContext;
@@ -148,10 +147,7 @@ protected List parseBindings(List parseElements,
}
protected void dealWithbindingConverterNotExist(String tagName) {
- if (!tagName.equals(SofaRuntimeFrameworkConstants.BINDING_PREFIX
- + JvmBinding.JVM_BINDING_TYPE.toString())) {
- throw new ServiceRuntimeException("Can't find BindingConverter of type " + tagName);
- }
+ throw new ServiceRuntimeException("Can't find BindingConverter of type " + tagName);
}
@Override
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/ReferenceFactoryBean.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/ReferenceFactoryBean.java
index 5711f6cc4..302a3ded6 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/ReferenceFactoryBean.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/ReferenceFactoryBean.java
@@ -19,6 +19,7 @@
import com.alipay.sofa.runtime.constants.SofaRuntimeFrameworkConstants;
import com.alipay.sofa.runtime.model.InterfaceMode;
import com.alipay.sofa.runtime.service.binding.JvmBinding;
+import com.alipay.sofa.runtime.service.binding.JvmBindingParam;
import com.alipay.sofa.runtime.service.component.Reference;
import com.alipay.sofa.runtime.service.component.impl.ReferenceImpl;
import com.alipay.sofa.runtime.service.helper.ReferenceRegisterHelper;
@@ -50,8 +51,12 @@ protected void doAfterPropertiesSet() throws Exception {
.isTrue(bindings.size() <= 1,
"Found more than one binding in , can only have one binding.");
+ // default add jvm binding and reference jvm binding should set serialize as false
if (bindings.size() == 0) {
- bindings.add(new JvmBinding());
+ // default reference prefer to ignore serialize
+ JvmBindingParam jvmBindingParam = new JvmBindingParam();
+ jvmBindingParam.setSerialize(true);
+ bindings.add(new JvmBinding().setJvmBindingParam(jvmBindingParam));
}
reference.addBinding(bindings.get(0));
diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/ServiceFactoryBean.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/ServiceFactoryBean.java
index f04a29b0b..4daad536f 100644
--- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/ServiceFactoryBean.java
+++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/spring/factory/ServiceFactoryBean.java
@@ -20,6 +20,7 @@
import com.alipay.sofa.runtime.api.annotation.SofaService;
import com.alipay.sofa.runtime.model.InterfaceMode;
import com.alipay.sofa.runtime.service.binding.JvmBinding;
+import com.alipay.sofa.runtime.service.binding.JvmBindingParam;
import com.alipay.sofa.runtime.service.component.Service;
import com.alipay.sofa.runtime.service.component.ServiceComponent;
import com.alipay.sofa.runtime.service.component.impl.ServiceImpl;
@@ -56,8 +57,11 @@ protected void doAfterPropertiesSet() {
implementation.setTarget(ref);
service = buildService();
+ // default add jvm binding and service jvm binding should set serialize as true
if (bindings.size() == 0) {
- bindings.add(new JvmBinding());
+ JvmBinding jvmBinding = new JvmBinding();
+ JvmBindingParam jvmBindingParam = new JvmBindingParam().setSerialize(true);
+ bindings.add(new JvmBinding().setJvmBindingParam(jvmBindingParam));
}
for (Binding binding : bindings) {
diff --git a/runtime-sofa-boot-starter/src/main/resources/META-INF/services/com.alipay.sofa.runtime.spi.service.BindingConverter b/runtime-sofa-boot-starter/src/main/resources/META-INF/services/com.alipay.sofa.runtime.spi.service.BindingConverter
new file mode 100644
index 000000000..5cc029210
--- /dev/null
+++ b/runtime-sofa-boot-starter/src/main/resources/META-INF/services/com.alipay.sofa.runtime.spi.service.BindingConverter
@@ -0,0 +1 @@
+com.alipay.sofa.runtime.service.binding.JvmBindingConverter
\ No newline at end of file
diff --git a/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/ark/SofaEventHandlerTest.java b/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/ark/SofaEventHandlerTest.java
index 687477efe..6c252de4a 100644
--- a/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/ark/SofaEventHandlerTest.java
+++ b/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/ark/SofaEventHandlerTest.java
@@ -38,6 +38,7 @@
import com.alipay.sofa.runtime.beans.service.SampleService;
import com.alipay.sofa.runtime.integration.invoke.DynamicJvmServiceProxyFinder;
import com.alipay.sofa.runtime.integration.service.SofaEventHandler;
+import com.alipay.sofa.runtime.service.binding.JvmBinding;
import com.alipay.sofa.runtime.spi.binding.Contract;
import com.alipay.sofa.runtime.spi.component.SofaRuntimeContext;
import com.alipay.sofa.runtime.spi.component.SofaRuntimeManager;
@@ -94,7 +95,8 @@ public void testUninstallEvent() {
Assert.assertTrue(applicationContext.isActive());
SofaEventHandler sofaEventHandler = new SofaEventHandler();
- sofaEventHandler.handleEvent(new BizEvent(biz, Constants.BIZ_EVENT_TOPIC_UNINSTALL));
+ sofaEventHandler.handleEvent(new BizEvent(biz,
+ SofaEventHandler.BIZ_EVENT_TOPIC_AFTER_INVOKE_BIZ_STOP));
Assert.assertFalse(SofaRuntimeProperties.isDisableJvmFirst(applicationContext
.getClassLoader()));
@@ -114,7 +116,8 @@ public void testHealthCheck() {
}
};
SofaEventHandler sofaEventHandler = new SofaEventHandler();
- sofaEventHandler.handleEvent(new BizEvent(biz, Constants.BIZ_EVENT_TOPIC_HEALTH_CHECK));
+ sofaEventHandler.handleEvent(new BizEvent(biz,
+ SofaEventHandler.BIZ_EVENT_TOPIC_AFTER_INVOKE_BIZ_START));
}
@Test
@@ -149,6 +152,8 @@ public Biz getBiz(SofaRuntimeManager sofaRuntimeManager) {
result = SampleService.class;
contract.getUniqueId();
result = "";
+ contract.getBinding(JvmBinding.JVM_BINDING_TYPE);
+ result = new JvmBinding();
invocation.getArguments();
result = new Object[] {};
diff --git a/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/integration/IntegrationTest.java b/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/integration/IntegrationTest.java
index a0f2c6eb3..73bdaed58 100644
--- a/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/integration/IntegrationTest.java
+++ b/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/integration/IntegrationTest.java
@@ -16,6 +16,13 @@
*/
package com.alipay.sofa.runtime.integration;
+import com.alipay.sofa.runtime.api.component.ComponentName;
+import com.alipay.sofa.runtime.service.binding.JvmBinding;
+import com.alipay.sofa.runtime.service.component.ReferenceComponent;
+import com.alipay.sofa.runtime.service.component.ServiceComponent;
+import com.alipay.sofa.runtime.spi.component.ComponentInfo;
+import com.alipay.sofa.runtime.spi.component.ComponentManager;
+import com.alipay.sofa.runtime.spi.util.ComponentNameFactory;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.boot.actuate.health.Status;
@@ -35,6 +42,7 @@
import com.alipay.sofa.runtime.spring.factory.ReferenceFactoryBean;
import com.alipay.sofa.runtime.spring.factory.ServiceFactoryBean;
+import java.util.Collection;
import java.util.Map;
/**
@@ -236,4 +244,113 @@ public void testServiceFactoryBean() {
Assert.assertTrue(key.startsWith("&ServiceFactoryBean#"));
}
}
+
+ @Test
+ public void testReferenceBinding() {
+ ComponentManager componentManager = sofaRuntimeContext.getComponentManager();
+ ReferenceComponent serializeTrueViaAnnotation = null;
+ ReferenceComponent defaultSerializeFalseViaAnnotation = null;
+ ReferenceComponent defaultElement = null;
+ ReferenceComponent element = null;
+ ReferenceComponent noneUniqueId = null;
+ Collection componentInfos = componentManager
+ .getComponentInfosByType(ReferenceComponent.REFERENCE_COMPONENT_TYPE);
+ for (ComponentInfo componentInfo : componentInfos) {
+ String rawName = componentInfo.getName().getRawName();
+ if (rawName.contains(getReferenceComponentName(SampleService.class,
+ "serializeTrueViaAnnotation").getRawName())) {
+ serializeTrueViaAnnotation = (ReferenceComponent) componentInfo;
+ } else if (rawName.contains(getReferenceComponentName(SampleService.class,
+ "defaultSerializeFalseViaAnnotation").getRawName())) {
+ defaultSerializeFalseViaAnnotation = (ReferenceComponent) componentInfo;
+ } else if (rawName.contains(getReferenceComponentName(SampleService.class,
+ "default-element").getRawName())) {
+ defaultElement = (ReferenceComponent) componentInfo;
+ } else if (componentInfo.getName().getRawName()
+ .contains(getReferenceComponentName(SampleService.class, "element").getRawName())) {
+ element = (ReferenceComponent) componentInfo;
+ } else if (rawName.contains(":#")
+ && rawName.contains(getReferenceComponentName(SampleService.class, "")
+ .getRawName())) {
+ noneUniqueId = (ReferenceComponent) componentInfo;
+ }
+ }
+ Assert.assertNotNull(serializeTrueViaAnnotation);
+ Assert.assertNotNull(defaultSerializeFalseViaAnnotation);
+ Assert.assertNotNull(defaultElement);
+ Assert.assertNotNull(element);
+ Assert.assertNotNull(noneUniqueId);
+
+ JvmBinding jvmBinding;
+ jvmBinding = (JvmBinding) serializeTrueViaAnnotation.getReference().getBinding(
+ JvmBinding.JVM_BINDING_TYPE);
+ Assert.assertTrue(jvmBinding.getJvmBindingParam().isSerialize());
+
+ jvmBinding = (JvmBinding) defaultSerializeFalseViaAnnotation.getReference().getBinding(
+ JvmBinding.JVM_BINDING_TYPE);
+ Assert.assertFalse(jvmBinding.getJvmBindingParam().isSerialize());
+
+ jvmBinding = (JvmBinding) defaultElement.getReference().getBinding(
+ JvmBinding.JVM_BINDING_TYPE);
+ Assert.assertFalse(jvmBinding.getJvmBindingParam().isSerialize());
+
+ jvmBinding = (JvmBinding) element.getReference().getBinding(JvmBinding.JVM_BINDING_TYPE);
+ Assert.assertTrue(jvmBinding.getJvmBindingParam().isSerialize());
+
+ jvmBinding = (JvmBinding) noneUniqueId.getReference().getBinding(
+ JvmBinding.JVM_BINDING_TYPE);
+ Assert.assertFalse(jvmBinding.getJvmBindingParam().isSerialize());
+ }
+
+ @Test
+ public void testServiceBinding() {
+ ComponentManager componentManager = sofaRuntimeContext.getComponentManager();
+ ServiceComponent serializeFalseViaAnnotation = (ServiceComponent) componentManager
+ .getComponentInfo(getServiceComponentName(SampleService.class,
+ "serializeFalseViaAnnotation"));
+ ServiceComponent defaultSerializeTrueViaAnnotation = (ServiceComponent) componentManager
+ .getComponentInfo(getServiceComponentName(SampleService.class,
+ "defaultSerializeTrueViaAnnotation"));
+ ServiceComponent defaultElement = (ServiceComponent) componentManager
+ .getComponentInfo(getServiceComponentName(SampleService.class, "default-element"));
+ ServiceComponent element = (ServiceComponent) componentManager
+ .getComponentInfo(getServiceComponentName(SampleService.class, "element"));
+ ServiceComponent noneUniqueId = (ServiceComponent) componentManager
+ .getComponentInfo(getServiceComponentName(SampleService.class, ""));
+
+ Assert.assertNotNull(serializeFalseViaAnnotation);
+ Assert.assertNotNull(defaultSerializeTrueViaAnnotation);
+ Assert.assertNotNull(defaultElement);
+ Assert.assertNotNull(element);
+ Assert.assertNotNull(noneUniqueId);
+
+ JvmBinding jvmBinding;
+ jvmBinding = (JvmBinding) serializeFalseViaAnnotation.getService().getBinding(
+ JvmBinding.JVM_BINDING_TYPE);
+ Assert.assertFalse(jvmBinding.getJvmBindingParam().isSerialize());
+
+ jvmBinding = (JvmBinding) defaultSerializeTrueViaAnnotation.getService().getBinding(
+ JvmBinding.JVM_BINDING_TYPE);
+ Assert.assertTrue(jvmBinding.getJvmBindingParam().isSerialize());
+
+ jvmBinding = (JvmBinding) defaultElement.getService().getBinding(
+ JvmBinding.JVM_BINDING_TYPE);
+ Assert.assertTrue(jvmBinding.getJvmBindingParam().isSerialize());
+
+ jvmBinding = (JvmBinding) element.getService().getBinding(JvmBinding.JVM_BINDING_TYPE);
+ Assert.assertFalse(jvmBinding.getJvmBindingParam().isSerialize());
+
+ jvmBinding = (JvmBinding) noneUniqueId.getService().getBinding(JvmBinding.JVM_BINDING_TYPE);
+ Assert.assertTrue(jvmBinding.getJvmBindingParam().isSerialize());
+ }
+
+ private ComponentName getServiceComponentName(Class clazz, String uniqueId) {
+ return ComponentNameFactory.createComponentName(ServiceComponent.SERVICE_COMPONENT_TYPE,
+ clazz, uniqueId);
+ }
+
+ private ComponentName getReferenceComponentName(Class clazz, String uniqueId) {
+ return ComponentNameFactory.createComponentName(
+ ReferenceComponent.REFERENCE_COMPONENT_TYPE, clazz, uniqueId);
+ }
}
\ No newline at end of file
diff --git a/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/integration/base/AbstractTestBase.java b/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/integration/base/AbstractTestBase.java
index 43a8b08fc..18492fee5 100644
--- a/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/integration/base/AbstractTestBase.java
+++ b/runtime-sofa-boot-starter/src/test/java/com/alipay/sofa/runtime/integration/base/AbstractTestBase.java
@@ -17,13 +17,16 @@
package com.alipay.sofa.runtime.integration.base;
import com.alipay.sofa.runtime.api.annotation.SofaReference;
+import com.alipay.sofa.runtime.api.annotation.SofaReferenceBinding;
import com.alipay.sofa.runtime.api.annotation.SofaService;
+import com.alipay.sofa.runtime.api.annotation.SofaServiceBinding;
import com.alipay.sofa.runtime.beans.impl.MethodBeanClassAnnotationSampleService;
import com.alipay.sofa.runtime.beans.impl.MethodBeanMethodAnnotationSampleService;
import com.alipay.sofa.runtime.beans.impl.ParameterAnnotationSampleService;
import com.alipay.sofa.runtime.beans.impl.SampleServiceImpl;
import com.alipay.sofa.runtime.beans.service.SampleService;
import com.alipay.sofa.runtime.integration.features.AwareTest;
+import com.alipay.sofa.runtime.spi.component.SofaRuntimeContext;
import org.junit.Before;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
@@ -51,10 +54,11 @@
*/
public abstract class AbstractTestBase extends TestBase {
- public AwareTest awareTest;
+ public AwareTest awareTest;
+ public SofaRuntimeContext sofaRuntimeContext;
@Mocked
- public Biz biz;
+ public Biz biz;
@Before
public void before() {
@@ -76,8 +80,10 @@ public Biz getBiz(SofaRuntimeManager sofaRuntimeManager) {
properties.put("spring.application.name", "runtime-test");
properties.put("mix-xml-annotation-unique-id", "xmlAnnotationSampleService");
properties.put("spring.jmx.enabled", "false");
+ properties.put("com.alipay.sofa.boot.skipJvmReferenceHealthCheck", true);
initApplicationContext(properties, IntegrationTestConfiguration.class);
awareTest = applicationContext.getBean(AwareTest.class);
+ sofaRuntimeContext = applicationContext.getBean(SofaRuntimeContext.class);
}
@Configuration
@@ -98,6 +104,18 @@ SampleService methodBeanMethodAnnotationSampleService() {
return new MethodBeanMethodAnnotationSampleService();
}
+ @Bean({ "name3" })
+ @SofaService(uniqueId = "serializeFalseViaAnnotation", bindings = { @SofaServiceBinding(serialize = false) })
+ SampleService serializeFalseViaAnnotationSampleService() {
+ return new MethodBeanMethodAnnotationSampleService();
+ }
+
+ @Bean({ "name4" })
+ @SofaService(uniqueId = "defaultSerializeTrueViaAnnotation")
+ SampleService defaultSerializeTrueViaAnnotationSampleService() {
+ return new MethodBeanMethodAnnotationSampleService();
+ }
+
@Bean("multiService")
SampleService service() {
return new SampleServiceImpl("");
@@ -107,6 +125,7 @@ SampleService service() {
SampleService service(@Value("$spring.application.name") String appName) {
return new SampleServiceImpl("");
}
+
}
@Configuration
@@ -115,7 +134,9 @@ static class AfterConfiguration {
@Bean
SampleService parameterAnnotationSampleService(@SofaReference(uniqueId = "${mix-xml-annotation-unique-id}") SampleService service1,
@SofaReference(uniqueId = "methodBeanClassAnnotationSampleService") SampleService service2,
- @SofaReference(uniqueId = "methodBeanMethodAnnotationSampleService") SampleService service3) {
+ @SofaReference(uniqueId = "methodBeanMethodAnnotationSampleService") SampleService service3,
+ @SofaReference(uniqueId = "serializeTrueViaAnnotation", binding = @SofaReferenceBinding(serialize = true)) SampleService service4,
+ @SofaReference(uniqueId = "defaultSerializeFalseViaAnnotation") SampleService service5) {
return new ParameterAnnotationSampleService(service1, service2, service3);
}
}
diff --git a/runtime-sofa-boot-starter/src/test/resources/META-INF/spring/test-service.xml b/runtime-sofa-boot-starter/src/test/resources/META-INF/spring/test-service.xml
index 97088ebda..d0fa492bb 100644
--- a/runtime-sofa-boot-starter/src/test/resources/META-INF/spring/test-service.xml
+++ b/runtime-sofa-boot-starter/src/test/resources/META-INF/spring/test-service.xml
@@ -16,9 +16,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
com.alipay.sofa
sofa-boot-runtime
- 2.6.1
+ 2.6.2-SNAPSHOT
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-standard/app/biz/service-impl/pom.xml b/sofaboot-samples/sofaboot-sample-standard/app/biz/service-impl/pom.xml
index 36ca9b5f0..efcbfa24e 100644
--- a/sofaboot-samples/sofaboot-sample-standard/app/biz/service-impl/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-standard/app/biz/service-impl/pom.xml
@@ -3,7 +3,7 @@
com.alipay.sofa
sofaboot-sample-standard-parent
- 2.6.1
+ 2.6.2-SNAPSHOT
../../../pom.xml
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-standard/app/biz/shared/pom.xml b/sofaboot-samples/sofaboot-sample-standard/app/biz/shared/pom.xml
index d24ab2b0e..a2719e2bd 100644
--- a/sofaboot-samples/sofaboot-sample-standard/app/biz/shared/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-standard/app/biz/shared/pom.xml
@@ -4,7 +4,7 @@
com.alipay.sofa
sofaboot-sample-standard-parent
- 2.6.1
+ 2.6.2-SNAPSHOT
../../../pom.xml
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-standard/app/common/dal/pom.xml b/sofaboot-samples/sofaboot-sample-standard/app/common/dal/pom.xml
index 6701343f2..c2cf167f7 100644
--- a/sofaboot-samples/sofaboot-sample-standard/app/common/dal/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-standard/app/common/dal/pom.xml
@@ -3,7 +3,7 @@
com.alipay.sofa
sofaboot-sample-standard-parent
- 2.6.1
+ 2.6.2-SNAPSHOT
../../../pom.xml
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-standard/app/common/service/facade/pom.xml b/sofaboot-samples/sofaboot-sample-standard/app/common/service/facade/pom.xml
index 1eedddeb1..36de9e03b 100644
--- a/sofaboot-samples/sofaboot-sample-standard/app/common/service/facade/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-standard/app/common/service/facade/pom.xml
@@ -5,7 +5,7 @@
com.alipay.sofa
sofaboot-sample-standard-parent
- 2.6.1
+ 2.6.2-SNAPSHOT
../../../../pom.xml
diff --git a/sofaboot-samples/sofaboot-sample-standard/app/test/pom.xml b/sofaboot-samples/sofaboot-sample-standard/app/test/pom.xml
index 23e4d6d2b..ac54ef6d1 100644
--- a/sofaboot-samples/sofaboot-sample-standard/app/test/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-standard/app/test/pom.xml
@@ -3,7 +3,7 @@
com.alipay.sofa
sofaboot-sample-standard-parent
- 2.6.1
+ 2.6.2-SNAPSHOT
../../pom.xml
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-standard/app/web/pom.xml b/sofaboot-samples/sofaboot-sample-standard/app/web/pom.xml
index b89f13680..681af80e8 100644
--- a/sofaboot-samples/sofaboot-sample-standard/app/web/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-standard/app/web/pom.xml
@@ -3,7 +3,7 @@
com.alipay.sofa
sofaboot-sample-standard-parent
- 2.6.1
+ 2.6.2-SNAPSHOT
../../pom.xml
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-standard/pom.xml b/sofaboot-samples/sofaboot-sample-standard/pom.xml
index c2dfd7ed5..6cb530e61 100644
--- a/sofaboot-samples/sofaboot-sample-standard/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-standard/pom.xml
@@ -5,7 +5,7 @@
sofaboot-samples
com.alipay.sofa
- 2.6.1
+ 2.6.2-SNAPSHOT
com.alipay.sofa
diff --git a/sofaboot-samples/sofaboot-sample-with-isle/pom.xml b/sofaboot-samples/sofaboot-sample-with-isle/pom.xml
index dd1d0f5ca..d4dc6b3a2 100644
--- a/sofaboot-samples/sofaboot-sample-with-isle/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-with-isle/pom.xml
@@ -5,7 +5,7 @@
sofaboot-samples
com.alipay.sofa
- 2.6.1
+ 2.6.2-SNAPSHOT
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-with-isle/service-consumer/pom.xml b/sofaboot-samples/sofaboot-sample-with-isle/service-consumer/pom.xml
index 4a94ad302..3543d7e6f 100644
--- a/sofaboot-samples/sofaboot-sample-with-isle/service-consumer/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-with-isle/service-consumer/pom.xml
@@ -5,7 +5,7 @@
sofaboot-sample-with-isle
com.alipay.sofa
- 2.6.1
+ 2.6.2-SNAPSHOT
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-with-isle/service-facade/pom.xml b/sofaboot-samples/sofaboot-sample-with-isle/service-facade/pom.xml
index bdbe2f89c..814e5720a 100644
--- a/sofaboot-samples/sofaboot-sample-with-isle/service-facade/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-with-isle/service-facade/pom.xml
@@ -5,7 +5,7 @@
sofaboot-sample-with-isle
com.alipay.sofa
- 2.6.1
+ 2.6.2-SNAPSHOT
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-with-isle/service-provider/pom.xml b/sofaboot-samples/sofaboot-sample-with-isle/service-provider/pom.xml
index c311634eb..c762fa075 100644
--- a/sofaboot-samples/sofaboot-sample-with-isle/service-provider/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-with-isle/service-provider/pom.xml
@@ -5,7 +5,7 @@
sofaboot-sample-with-isle
com.alipay.sofa
- 2.6.1
+ 2.6.2-SNAPSHOT
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-with-isle/sofa-boot-run/pom.xml b/sofaboot-samples/sofaboot-sample-with-isle/sofa-boot-run/pom.xml
index 896dd098a..f066a9965 100644
--- a/sofaboot-samples/sofaboot-sample-with-isle/sofa-boot-run/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-with-isle/sofa-boot-run/pom.xml
@@ -5,7 +5,7 @@
sofaboot-sample-with-isle
com.alipay.sofa
- 2.6.1
+ 2.6.2-SNAPSHOT
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-with-isolation/pom.xml b/sofaboot-samples/sofaboot-sample-with-isolation/pom.xml
index 7d90935db..cc736b667 100644
--- a/sofaboot-samples/sofaboot-sample-with-isolation/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-with-isolation/pom.xml
@@ -22,7 +22,7 @@
sofaboot-samples
com.alipay.sofa
- 2.6.1
+ 2.6.2-SNAPSHOT
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample-with-rpc/pom.xml b/sofaboot-samples/sofaboot-sample-with-rpc/pom.xml
index 236c890b7..34ad92835 100644
--- a/sofaboot-samples/sofaboot-sample-with-rpc/pom.xml
+++ b/sofaboot-samples/sofaboot-sample-with-rpc/pom.xml
@@ -5,7 +5,7 @@
sofaboot-samples
com.alipay.sofa
- 2.6.1
+ 2.6.2-SNAPSHOT
4.0.0
diff --git a/sofaboot-samples/sofaboot-sample/pom.xml b/sofaboot-samples/sofaboot-sample/pom.xml
index 895b51ea2..027aa7a01 100644
--- a/sofaboot-samples/sofaboot-sample/pom.xml
+++ b/sofaboot-samples/sofaboot-sample/pom.xml
@@ -22,7 +22,7 @@
sofaboot-samples
com.alipay.sofa
- 2.6.1
+ 2.6.2-SNAPSHOT
4.0.0
diff --git a/test-sofa-boot-starter/pom.xml b/test-sofa-boot-starter/pom.xml
index 1887ca5f2..395263ee3 100644
--- a/test-sofa-boot-starter/pom.xml
+++ b/test-sofa-boot-starter/pom.xml
@@ -5,7 +5,7 @@
sofa-boot-runtime
com.alipay.sofa
- 2.6.1
+ 2.6.2-SNAPSHOT
../pom.xml
4.0.0