diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java
index 637b093455..72c3136ce0 100644
--- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java
+++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java
@@ -105,6 +105,20 @@ public abstract class AbstractConfig implements Serializable {
appendMaps(parameters, config, prefix, true);
}
+ private static boolean isPrimitive(Class> type) {
+ return type.isPrimitive()
+ || type == String.class
+ || type == Character.class
+ || type == Boolean.class
+ || type == Byte.class
+ || type == Short.class
+ || type == Integer.class
+ || type == Long.class
+ || type == Float.class
+ || type == Double.class
+ || type == Object.class;
+ }
+
@SuppressWarnings({ "unchecked", "rawtypes" })
private static void appendMaps(Map parameters, Object config, String prefix, boolean attribute) {
if (config == null) {
@@ -118,16 +132,7 @@ public abstract class AbstractConfig implements Serializable {
&& ! "getClass".equals(name)
&& Modifier.isPublic(method.getModifiers())
&& method.getParameterTypes().length == 0
- && (method.getReturnType() == String.class
- || method.getReturnType() == Character.class
- || method.getReturnType() == Boolean.class
- || method.getReturnType() == Byte.class
- || method.getReturnType() == Short.class
- || method.getReturnType() == Integer.class
- || method.getReturnType() == Long.class
- || method.getReturnType() == Float.class
- || method.getReturnType() == Double.class
- || method.getReturnType() == Object.class)) {
+ && isPrimitive(method.getReturnType())) {
Parameter parameter = method.getAnnotation(Parameter.class);
if (attribute){
if (parameter == null || !parameter.attribute())
@@ -271,5 +276,47 @@ public abstract class AbstractConfig implements Serializable {
}
}, "DubboShutdownHook"));
}
+
+ @Override
+ public String toString() {
+ try {
+ String tag = getClass().getSimpleName();
+ if (tag.equals("Config")) {
+ tag = tag.substring(0, tag.length() - "Config".length());
+ }
+ tag = tag.toLowerCase();
+ StringBuilder buf = new StringBuilder();
+ buf.append("");
+ return buf.toString();
+ } catch (Throwable t) { // 防御性容错
+ return super.toString();
+ }
+ }
}
\ No newline at end of file
diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java
index ddcb1e3686..fcf6840211 100644
--- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java
+++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java
@@ -140,36 +140,4 @@ public class ApplicationConfig extends AbstractConfig {
this.monitor = new MonitorConfig(monitor);
}
- @Override
- public String toString() {
- StringBuilder buf = new StringBuilder(" 0) {
- buf.append(" name=\"");
- buf.append(name);
- buf.append("\"");
- }
- if (owner != null && owner.length() > 0) {
- buf.append(" owner=\"");
- buf.append(owner);
- buf.append("\"");
- }
- if (organization != null && organization.length() > 0) {
- buf.append(" organization=\"");
- buf.append(organization);
- buf.append("\"");
- }
- if (architecture != null && architecture.length() > 0) {
- buf.append(" architecture=\"");
- buf.append(architecture);
- buf.append("\"");
- }
- if (environment != null && environment.length() > 0) {
- buf.append(" environment=\"");
- buf.append(environment);
- buf.append("\"");
- }
- buf.append(" />");
- return buf.toString();
- }
-
}
\ No newline at end of file
diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ServiceBean.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ServiceBean.java
index d924624785..6a4feef6c7 100644
--- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ServiceBean.java
+++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ServiceBean.java
@@ -150,7 +150,10 @@ public class ServiceBean extends ServiceConfig implements InitializingBean
if ((getProtocols() == null || getProtocols().size() == 0)
&& (getProvider() == null || getProvider().getProtocols() == null || getProvider().getProtocols().size() == 0)) {
Map protocolConfigMap = applicationContext == null ? null : applicationContext.getBeansOfType(ProtocolConfig.class, false, false);
- if (protocolConfigMap != null && protocolConfigMap.size() > 0) {
+ if (protocolConfigMap != null && protocolConfigMap.size() > 0) {
+ if (protocolConfigMap.size() > 1) {
+ throw new IllegalStateException("Found multi-protocols: " + protocolConfigMap.values() + ", You must be set default protocol in: , or set service protocol in: ");
+ }
Collection protocolConfigs = protocolConfigMap.values();
if (protocolConfigs != null && protocolConfigs.size() > 0) {
setProtocols(new ArrayList(protocolConfigs));