This is an automated email from the ASF dual-hosted git repository.
menghaoran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new d827ba1 Adjust discovery api about namespace. (#14186)
d827ba1 is described below
commit d827ba10795de966a07074e2f9317d611782797c
Author: zhaojinchao <[email protected]>
AuthorDate: Tue Dec 21 14:00:31 2021 +0800
Adjust discovery api about namespace. (#14186)
* support namespace.
* update
* update
* update
---
.../DatabaseDiscoveryAlgorithmFactoryBean.java} | 23 ++++++----
.../handler/DatabaseDiscoveryNamespaceHandler.java | 4 ++
.../DatabaseDiscoveryRuleBeanDefinitionParser.java | 49 ++++++++++++++++++++--
...tabaseDiscoveryHeartbeatBeanDefinitionTag.java} | 10 ++---
.../DatabaseDiscoveryRuleBeanDefinitionTag.java | 6 +++
...=> DatabaseDiscoveryTypeBeanDefinitionTag.java} | 10 ++---
.../META-INF/namespace/database-discovery.xsd | 28 ++++++++++++-
.../pom.xml | 5 +++
8 files changed, 108 insertions(+), 27 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/factorybean/DatabaseDiscovery
[...]
similarity index 51%
copy from
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
copy to
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/factorybean/DatabaseDiscoveryAlgorithmFactoryBean.java
index abc2e57..be148bf 100644
---
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
+++
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/factorybean/DatabaseDiscoveryAlgorithmFactoryBean.java
@@ -15,19 +15,24 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.dbdiscovery.spring.namespace.handler;
+package org.apache.shardingsphere.dbdiscovery.spring.namespace.factorybean;
-import
org.apache.shardingsphere.dbdiscovery.spring.namespace.parser.DatabaseDiscoveryRuleBeanDefinitionParser;
-import
org.apache.shardingsphere.dbdiscovery.spring.namespace.tag.DatabaseDiscoveryRuleBeanDefinitionTag;
-import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
+import org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryType;
+import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
+import
org.apache.shardingsphere.spring.namespace.factorybean.ShardingSphereAlgorithmFactoryBean;
+
+import java.util.Properties;
/**
- * Spring namespace handler for data base discovery.
+ * Database discovery algorithm factory bean.
*/
-public final class DatabaseDiscoveryNamespaceHandler extends
NamespaceHandlerSupport {
+public final class DatabaseDiscoveryAlgorithmFactoryBean extends
ShardingSphereAlgorithmFactoryBean<DatabaseDiscoveryType> {
+
+ static {
+ ShardingSphereServiceLoader.register(DatabaseDiscoveryType.class);
+ }
- @Override
- public void init() {
-
registerBeanDefinitionParser(DatabaseDiscoveryRuleBeanDefinitionTag.ROOT_TAG,
new DatabaseDiscoveryRuleBeanDefinitionParser());
+ public DatabaseDiscoveryAlgorithmFactoryBean(final String type, final
Properties props) {
+ super(DatabaseDiscoveryType.class, type, props);
}
}
diff --git
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryName
[...]
index abc2e57..577b81c 100644
---
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
+++
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/handler/DatabaseDiscoveryNamespaceHandler.java
@@ -17,8 +17,11 @@
package org.apache.shardingsphere.dbdiscovery.spring.namespace.handler;
+import
org.apache.shardingsphere.dbdiscovery.spring.namespace.factorybean.DatabaseDiscoveryAlgorithmFactoryBean;
import
org.apache.shardingsphere.dbdiscovery.spring.namespace.parser.DatabaseDiscoveryRuleBeanDefinitionParser;
import
org.apache.shardingsphere.dbdiscovery.spring.namespace.tag.DatabaseDiscoveryRuleBeanDefinitionTag;
+import
org.apache.shardingsphere.dbdiscovery.spring.namespace.tag.DatabaseDiscoveryTypeBeanDefinitionTag;
+import
org.apache.shardingsphere.spring.namespace.parser.ShardingSphereAlgorithmBeanDefinitionParser;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
/**
@@ -29,5 +32,6 @@ public final class DatabaseDiscoveryNamespaceHandler extends
NamespaceHandlerSup
@Override
public void init() {
registerBeanDefinitionParser(DatabaseDiscoveryRuleBeanDefinitionTag.ROOT_TAG,
new DatabaseDiscoveryRuleBeanDefinitionParser());
+
registerBeanDefinitionParser(DatabaseDiscoveryTypeBeanDefinitionTag.ROOT_TAG,
new
ShardingSphereAlgorithmBeanDefinitionParser(DatabaseDiscoveryAlgorithmFactoryBean.class));
}
}
diff --git
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/parser/DatabaseDiscoveryRuleBeanDefinitionParser.java
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/parser/DatabaseDiscove
[...]
index 1eb95e8..9658e8b 100644
---
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/parser/DatabaseDiscoveryRuleBeanDefinitionParser.java
+++
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/parser/DatabaseDiscoveryRuleBeanDefinitionParser.java
@@ -17,19 +17,28 @@
package org.apache.shardingsphere.dbdiscovery.spring.namespace.parser;
+import com.google.common.base.Splitter;
import
org.apache.shardingsphere.dbdiscovery.algorithm.config.AlgorithmProvidedDatabaseDiscoveryRuleConfiguration;
import
org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryDataSourceRuleConfiguration;
+import
org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryHeartBeatConfiguration;
+import
org.apache.shardingsphere.dbdiscovery.spring.namespace.factorybean.DatabaseDiscoveryAlgorithmFactoryBean;
+import
org.apache.shardingsphere.dbdiscovery.spring.namespace.tag.DatabaseDiscoveryHeartbeatBeanDefinitionTag;
import
org.apache.shardingsphere.dbdiscovery.spring.namespace.tag.DatabaseDiscoveryRuleBeanDefinitionTag;
+import
org.apache.shardingsphere.spring.namespace.registry.ShardingSphereAlgorithmBeanRegistry;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.ManagedList;
+import org.springframework.beans.factory.support.ManagedMap;
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.util.xml.DomUtils;
import org.w3c.dom.Element;
+import java.util.Collection;
import java.util.List;
+import java.util.Map;
+import java.util.Properties;
/**
* Database discovery rule bean definition parser.
@@ -39,22 +48,54 @@ public final class
DatabaseDiscoveryRuleBeanDefinitionParser extends AbstractBea
@Override
protected AbstractBeanDefinition parseInternal(final Element element,
final ParserContext parserContext) {
BeanDefinitionBuilder factory =
BeanDefinitionBuilder.rootBeanDefinition(AlgorithmProvidedDatabaseDiscoveryRuleConfiguration.class);
-
factory.addConstructorArgValue(parseHADataSourceRuleConfigurations(element));
+ factory.addPropertyValue("dataSources",
parseDatabaseDiscoveryDataSourceRuleConfigurations(element));
+ factory.addPropertyValue("discoveryHeartbeats",
parseDiscoveryHeartbeatsConfigurations(element, parserContext));
+ factory.addPropertyValue("discoveryTypes",
ShardingSphereAlgorithmBeanRegistry.getAlgorithmBeanReferences(parserContext,
DatabaseDiscoveryAlgorithmFactoryBean.class));
return factory.getBeanDefinition();
}
- private List<BeanDefinition> parseHADataSourceRuleConfigurations(final
Element element) {
+ private List<BeanDefinition>
parseDatabaseDiscoveryDataSourceRuleConfigurations(final Element element) {
List<Element> dataSourceElements =
DomUtils.getChildElementsByTagName(element,
DatabaseDiscoveryRuleBeanDefinitionTag.DATA_SOURCE_TAG);
List<BeanDefinition> result = new
ManagedList<>(dataSourceElements.size());
for (Element each : dataSourceElements) {
- result.add(parseHADataSourceRuleConfiguration(each));
+
result.add(parseDatabaseDiscoveryDataSourceRuleConfiguration(each));
}
return result;
}
- private BeanDefinition parseHADataSourceRuleConfiguration(final Element
element) {
+ private BeanDefinition
parseDatabaseDiscoveryDataSourceRuleConfiguration(final Element element) {
BeanDefinitionBuilder factory =
BeanDefinitionBuilder.rootBeanDefinition(DatabaseDiscoveryDataSourceRuleConfiguration.class);
factory.addConstructorArgValue(element.getAttribute(DatabaseDiscoveryRuleBeanDefinitionTag.DB_DISCOVERY_DATA_SOURCE_ID_ATTRIBUTE));
+ factory.addConstructorArgValue(parseDataSources(element));
+
factory.addConstructorArgValue(element.getAttribute(DatabaseDiscoveryRuleBeanDefinitionTag.DB_DISCOVERY_HEARTBEAT_NAME_ATTRIBUTE));
+
factory.addConstructorArgValue(element.getAttribute(DatabaseDiscoveryRuleBeanDefinitionTag.DB_DISCOVERY_TYPE_NAME_ATTRIBUTE));
return factory.getBeanDefinition();
}
+
+ private Collection<String> parseDataSources(final Element element) {
+ List<String> dataSources =
Splitter.on(",").trimResults().splitToList(element.getAttribute(DatabaseDiscoveryRuleBeanDefinitionTag.DB_DISCOVERY_DATASOURCE_NAMES_ATTRIBUTE));
+ Collection<String> result = new ManagedList<>(dataSources.size());
+ result.addAll(dataSources);
+ return result;
+ }
+
+ private Map<String, BeanDefinition>
parseDiscoveryHeartbeatsConfigurations(final Element element, final
ParserContext parserContext) {
+ List<Element> heartbeatElements =
DomUtils.getChildElementsByTagName(element,
DatabaseDiscoveryHeartbeatBeanDefinitionTag.ROOT_TAG);
+ Map<String, BeanDefinition> result = new
ManagedMap<>(heartbeatElements.size());
+ for (Element each : heartbeatElements) {
+
result.put(each.getAttribute(DatabaseDiscoveryHeartbeatBeanDefinitionTag.HEARTBEAT_ID_ATTRIBUTE),
parseDiscoveryHeartbeatConfiguration(each, parserContext));
+ }
+ return result;
+ }
+
+ private BeanDefinition parseDiscoveryHeartbeatConfiguration(final Element
element, final ParserContext parserContext) {
+ BeanDefinitionBuilder factory =
BeanDefinitionBuilder.rootBeanDefinition(DatabaseDiscoveryHeartBeatConfiguration.class);
+ factory.addConstructorArgValue(parseProperties(element,
parserContext));
+ return factory.getBeanDefinition();
+ }
+
+ private Properties parseProperties(final Element element, final
ParserContext parserContext) {
+ Element propsElement = DomUtils.getChildElementByTagName(element,
DatabaseDiscoveryHeartbeatBeanDefinitionTag.HEARTBEAT_PROPS_TAG);
+ return null == propsElement ? new Properties() :
parserContext.getDelegate().parsePropsElement(propsElement);
+ }
}
diff --git
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryHeartbe
[...]
similarity index 76%
copy from
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
copy to
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryHeartbeatBeanDefinitionTag.java
index f821348..7b3ecb6 100644
---
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
+++
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryHeartbeatBeanDefinitionTag.java
@@ -21,14 +21,14 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
/**
- * Database discovery rule bean definition tag.
+ * Database discovery heartbeat bean definition tag.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DatabaseDiscoveryRuleBeanDefinitionTag {
+public final class DatabaseDiscoveryHeartbeatBeanDefinitionTag {
- public static final String ROOT_TAG = "rule";
+ public static final String ROOT_TAG = "discovery-heartbeat";
- public static final String DATA_SOURCE_TAG = "data-source-rule";
+ public static final String HEARTBEAT_ID_ATTRIBUTE = "id";
- public static final String DB_DISCOVERY_DATA_SOURCE_ID_ATTRIBUTE = "id";
+ public static final String HEARTBEAT_PROPS_TAG = "props";
}
diff --git
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBea
[...]
index f821348..620c812 100644
---
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
+++
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
@@ -31,4 +31,10 @@ public final class DatabaseDiscoveryRuleBeanDefinitionTag {
public static final String DATA_SOURCE_TAG = "data-source-rule";
public static final String DB_DISCOVERY_DATA_SOURCE_ID_ATTRIBUTE = "id";
+
+ public static final String DB_DISCOVERY_DATASOURCE_NAMES_ATTRIBUTE =
"data-source-names";
+
+ public static final String DB_DISCOVERY_HEARTBEAT_NAME_ATTRIBUTE =
"discovery-heartbeat-name";
+
+ public static final String DB_DISCOVERY_TYPE_NAME_ATTRIBUTE =
"discovery-type-name";
}
diff --git
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryTypeBea
[...]
similarity index 76%
copy from
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
copy to
shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryTypeBeanDefinitionTag.java
index f821348..d469ed4 100644
---
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryRuleBeanDefinitionTag.java
+++
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/java/org/apache/shardingsphere/dbdiscovery/spring/namespace/tag/DatabaseDiscoveryTypeBeanDefinitionTag.java
@@ -21,14 +21,10 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
/**
- * Database discovery rule bean definition tag.
+ * Database discovery type bean definition tag.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DatabaseDiscoveryRuleBeanDefinitionTag {
+public final class DatabaseDiscoveryTypeBeanDefinitionTag {
- public static final String ROOT_TAG = "rule";
-
- public static final String DATA_SOURCE_TAG = "data-source-rule";
-
- public static final String DB_DISCOVERY_DATA_SOURCE_ID_ATTRIBUTE = "id";
+ public static final String ROOT_TAG = "discovery-type";
}
diff --git
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/resources/META-INF/namespace/database-discovery.xsd
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/resources/META-INF/namespace/database-discovery.xsd
index 34d5a77..f21673f 100644
---
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/resources/META-INF/namespace/database-discovery.xsd
+++
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-spring/shardingsphere-db-discovery-spring-namespace/src/main/resources/META-INF/namespace/database-discovery.xsd
@@ -16,9 +16,10 @@
~ limitations under the License.
-->
-<xsd:schema xmlns="http://shardingsphere.apache.org/schema/shardingsphere/ha"
+<xsd:schema
xmlns="http://shardingsphere.apache.org/schema/shardingsphere/database-discovery"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-
targetNamespace="http://shardingsphere.apache.org/schema/shardingsphere/ha"
+ xmlns:beans="http://www.springframework.org/schema/beans"
+
targetNamespace="http://shardingsphere.apache.org/schema/shardingsphere/database-discovery"
elementFormDefault="qualified">
<xsd:import namespace="http://www.springframework.org/schema/beans"
schemaLocation="http://www.springframework.org/schema/beans/spring-beans.xsd" />
@@ -26,6 +27,7 @@
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="data-source-rule" maxOccurs="unbounded" />
+ <xsd:element ref="discovery-heartbeat" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string" use="required" />
</xsd:complexType>
@@ -34,6 +36,28 @@
<xsd:element name="data-source-rule">
<xsd:complexType>
<xsd:attribute name="id" type="xsd:string" use="required" />
+ <xsd:attribute name="data-source-names" type="xsd:string"
use="required" />
+ <xsd:attribute name="discovery-heartbeat-name" type="xsd:string"
use="required" />
+ <xsd:attribute name="discovery-type-name" type="xsd:string"
use="required" />
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="discovery-heartbeat">
+ <xsd:complexType>
+ <xsd:all>
+ <xsd:element ref="beans:props" minOccurs="0" />
+ </xsd:all>
+ <xsd:attribute name="id" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="discovery-type">
+ <xsd:complexType>
+ <xsd:all>
+ <xsd:element ref="beans:props" minOccurs="0" />
+ </xsd:all>
+ <xsd:attribute name="id" type="xsd:string" use="required" />
+ <xsd:attribute name="type" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/pom.xml
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/pom.xml
index 1a81b1f..20505fa 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/pom.xml
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/pom.xml
@@ -80,6 +80,11 @@
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-db-discovery-spring-namespace</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-parser-spring-namespace</artifactId>
<version>${project.version}</version>
</dependency>