18 changed files with 939 additions and 928 deletions
@ -1,78 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2011-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.config; |
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.BeanDefinition; |
|
||||||
import org.springframework.beans.factory.parsing.BeanComponentDefinition; |
|
||||||
import org.springframework.beans.factory.parsing.CompositeComponentDefinition; |
|
||||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder; |
|
||||||
import org.springframework.beans.factory.xml.BeanDefinitionParser; |
|
||||||
import org.springframework.beans.factory.xml.ParserContext; |
|
||||||
import org.springframework.data.mongodb.core.MongoAdmin; |
|
||||||
import org.springframework.data.mongodb.monitor.*; |
|
||||||
import org.springframework.util.StringUtils; |
|
||||||
import org.w3c.dom.Element; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author Mark Pollack |
|
||||||
* @author Thomas Risberg |
|
||||||
* @author John Brisbin |
|
||||||
* @author Oliver Gierke |
|
||||||
* @author Christoph Strobl |
|
||||||
* @deprecated since 4.5 |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
public class MongoJmxParser implements BeanDefinitionParser { |
|
||||||
|
|
||||||
public BeanDefinition parse(Element element, ParserContext parserContext) { |
|
||||||
String name = element.getAttribute("mongo-ref"); |
|
||||||
if (!StringUtils.hasText(name)) { |
|
||||||
name = BeanNames.MONGO_BEAN_NAME; |
|
||||||
} |
|
||||||
registerJmxComponents(name, element, parserContext); |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
protected void registerJmxComponents(String mongoRefName, Element element, ParserContext parserContext) { |
|
||||||
Object eleSource = parserContext.extractSource(element); |
|
||||||
|
|
||||||
CompositeComponentDefinition compositeDef = new CompositeComponentDefinition(element.getTagName(), eleSource); |
|
||||||
|
|
||||||
createBeanDefEntry(AssertMetrics.class, compositeDef, mongoRefName, eleSource, parserContext); |
|
||||||
createBeanDefEntry(BackgroundFlushingMetrics.class, compositeDef, mongoRefName, eleSource, parserContext); |
|
||||||
createBeanDefEntry(BtreeIndexCounters.class, compositeDef, mongoRefName, eleSource, parserContext); |
|
||||||
createBeanDefEntry(ConnectionMetrics.class, compositeDef, mongoRefName, eleSource, parserContext); |
|
||||||
createBeanDefEntry(GlobalLockMetrics.class, compositeDef, mongoRefName, eleSource, parserContext); |
|
||||||
createBeanDefEntry(MemoryMetrics.class, compositeDef, mongoRefName, eleSource, parserContext); |
|
||||||
createBeanDefEntry(OperationCounters.class, compositeDef, mongoRefName, eleSource, parserContext); |
|
||||||
createBeanDefEntry(ServerInfo.class, compositeDef, mongoRefName, eleSource, parserContext); |
|
||||||
createBeanDefEntry(MongoAdmin.class, compositeDef, mongoRefName, eleSource, parserContext); |
|
||||||
|
|
||||||
parserContext.registerComponent(compositeDef); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
protected void createBeanDefEntry(Class<?> clazz, CompositeComponentDefinition compositeDef, String mongoRefName, |
|
||||||
Object eleSource, ParserContext parserContext) { |
|
||||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(clazz); |
|
||||||
builder.getRawBeanDefinition().setSource(eleSource); |
|
||||||
builder.addConstructorArgReference(mongoRefName); |
|
||||||
BeanDefinition assertDef = builder.getBeanDefinition(); |
|
||||||
String assertName = parserContext.getReaderContext().registerWithGeneratedName(assertDef); |
|
||||||
compositeDef.addNestedComponent(new BeanComponentDefinition(assertDef, assertName)); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,66 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import java.util.List; |
|
||||||
import java.util.stream.Collectors; |
|
||||||
|
|
||||||
import org.bson.Document; |
|
||||||
|
|
||||||
import com.mongodb.ServerAddress; |
|
||||||
import com.mongodb.client.MongoClient; |
|
||||||
import com.mongodb.client.MongoDatabase; |
|
||||||
import com.mongodb.connection.ServerDescription; |
|
||||||
|
|
||||||
/** |
|
||||||
* Base class to encapsulate common configuration settings when connecting to a database |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @author Oliver Gierke |
|
||||||
* @author Christoph Strobl |
|
||||||
* @deprecated since 4.5 |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
public abstract class AbstractMonitor { |
|
||||||
|
|
||||||
private final MongoClient mongoClient; |
|
||||||
|
|
||||||
/** |
|
||||||
* @param mongoClient must not be {@literal null}. |
|
||||||
* @since 2.2 |
|
||||||
*/ |
|
||||||
protected AbstractMonitor(MongoClient mongoClient) { |
|
||||||
this.mongoClient = mongoClient; |
|
||||||
} |
|
||||||
|
|
||||||
public Document getServerStatus() { |
|
||||||
return getDb("admin").runCommand(new Document("serverStatus", 1).append("rangeDeleter", 1).append("repl", 1)); |
|
||||||
} |
|
||||||
|
|
||||||
public MongoDatabase getDb(String databaseName) { |
|
||||||
return mongoClient.getDatabase(databaseName); |
|
||||||
} |
|
||||||
|
|
||||||
protected MongoClient getMongoClient() { |
|
||||||
return mongoClient; |
|
||||||
} |
|
||||||
|
|
||||||
protected List<ServerAddress> hosts() { |
|
||||||
|
|
||||||
return mongoClient.getClusterDescription().getServerDescriptions().stream().map(ServerDescription::getAddress) |
|
||||||
.collect(Collectors.toList()); |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,74 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import org.bson.Document; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedMetric; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedResource; |
|
||||||
import org.springframework.jmx.support.MetricType; |
|
||||||
|
|
||||||
import com.mongodb.client.MongoClient; |
|
||||||
|
|
||||||
/** |
|
||||||
* JMX Metrics for assertions |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @deprecated since 4.5 |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
@ManagedResource(description = "Assertion Metrics") |
|
||||||
public class AssertMetrics extends AbstractMonitor { |
|
||||||
|
|
||||||
/** |
|
||||||
* @param mongoClient must not be {@literal null}. |
|
||||||
* @since 2.2 |
|
||||||
*/ |
|
||||||
public AssertMetrics(MongoClient mongoClient) { |
|
||||||
super(mongoClient); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Regular") |
|
||||||
public int getRegular() { |
|
||||||
return getBtree("regular"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Warning") |
|
||||||
public int getWarning() { |
|
||||||
return getBtree("warning"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Msg") |
|
||||||
public int getMsg() { |
|
||||||
return getBtree("msg"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "User") |
|
||||||
public int getUser() { |
|
||||||
return getBtree("user"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Rollovers") |
|
||||||
public int getRollovers() { |
|
||||||
return getBtree("rollovers"); |
|
||||||
} |
|
||||||
|
|
||||||
private int getBtree(String key) { |
|
||||||
Document asserts = (Document) getServerStatus().get("asserts"); |
|
||||||
// Class c = btree.get(key).getClass();
|
|
||||||
return (Integer) asserts.get(key); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,82 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import java.util.Date; |
|
||||||
|
|
||||||
import org.bson.Document; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedMetric; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedResource; |
|
||||||
import org.springframework.jmx.support.MetricType; |
|
||||||
|
|
||||||
import com.mongodb.client.MongoClient; |
|
||||||
|
|
||||||
/** |
|
||||||
* JMX Metrics for Background Flushing |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @deprecated since 4.5 |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
@ManagedResource(description = "Background Flushing Metrics") |
|
||||||
public class BackgroundFlushingMetrics extends AbstractMonitor { |
|
||||||
|
|
||||||
/** |
|
||||||
* @param mongoClient must not be {@literal null}. |
|
||||||
* @since 2.2 |
|
||||||
*/ |
|
||||||
public BackgroundFlushingMetrics(MongoClient mongoClient) { |
|
||||||
super(mongoClient); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Flushes") |
|
||||||
public int getFlushes() { |
|
||||||
return getFlushingData("flushes", java.lang.Integer.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Total ms", unit = "ms") |
|
||||||
public int getTotalMs() { |
|
||||||
return getFlushingData("total_ms", java.lang.Integer.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Average ms", unit = "ms") |
|
||||||
public double getAverageMs() { |
|
||||||
return getFlushingData("average_ms", java.lang.Double.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Last Ms", unit = "ms") |
|
||||||
public int getLastMs() { |
|
||||||
return getFlushingData("last_ms", java.lang.Integer.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Last finished") |
|
||||||
public Date getLastFinished() { |
|
||||||
return getLast(); |
|
||||||
} |
|
||||||
|
|
||||||
@SuppressWarnings("unchecked") |
|
||||||
private <T> T getFlushingData(String key, Class<T> targetClass) { |
|
||||||
Document mem = (Document) getServerStatus().get("backgroundFlushing"); |
|
||||||
return (T) mem.get(key); |
|
||||||
} |
|
||||||
|
|
||||||
private Date getLast() { |
|
||||||
Document bgFlush = (Document) getServerStatus().get("backgroundFlushing"); |
|
||||||
Date lastFinished = (Date) bgFlush.get("last_finished"); |
|
||||||
return lastFinished; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,81 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import org.bson.Document; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedMetric; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedResource; |
|
||||||
import org.springframework.jmx.support.MetricType; |
|
||||||
|
|
||||||
import com.mongodb.client.MongoClient; |
|
||||||
|
|
||||||
/** |
|
||||||
* JMX Metrics for B-tree index counters |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @deprecated since 4.5 |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
@ManagedResource(description = "Btree Metrics") |
|
||||||
public class BtreeIndexCounters extends AbstractMonitor { |
|
||||||
|
|
||||||
/** |
|
||||||
* @param mongoClient must not be {@literal null}. |
|
||||||
* @since 2.2 |
|
||||||
*/ |
|
||||||
public BtreeIndexCounters(MongoClient mongoClient) { |
|
||||||
super(mongoClient); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Accesses") |
|
||||||
public int getAccesses() { |
|
||||||
return getBtree("accesses"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Hits") |
|
||||||
public int getHits() { |
|
||||||
return getBtree("hits"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Misses") |
|
||||||
public int getMisses() { |
|
||||||
return getBtree("misses"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Resets") |
|
||||||
public int getResets() { |
|
||||||
return getBtree("resets"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Miss Ratio") |
|
||||||
public int getMissRatio() { |
|
||||||
return getBtree("missRatio"); |
|
||||||
} |
|
||||||
|
|
||||||
private int getBtree(String key) { |
|
||||||
Document indexCounters = (Document) getServerStatus().get("indexCounters"); |
|
||||||
if (indexCounters.get("note") != null) { |
|
||||||
String message = (String) indexCounters.get("note"); |
|
||||||
if (message.contains("not supported")) { |
|
||||||
return -1; |
|
||||||
} |
|
||||||
} |
|
||||||
Document btree = (Document) indexCounters.get("btree"); |
|
||||||
// Class c = btree.get(key).getClass();
|
|
||||||
return (Integer) btree.get(key); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,60 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import org.bson.Document; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedMetric; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedResource; |
|
||||||
import org.springframework.jmx.support.MetricType; |
|
||||||
|
|
||||||
import com.mongodb.client.MongoClient; |
|
||||||
|
|
||||||
/** |
|
||||||
* JMX Metrics for Connections |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @deprecated since 4.5 |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
@ManagedResource(description = "Connection metrics") |
|
||||||
public class ConnectionMetrics extends AbstractMonitor { |
|
||||||
|
|
||||||
/** |
|
||||||
* @param mongoClient must not be {@literal null}. |
|
||||||
* @since 2.2 |
|
||||||
*/ |
|
||||||
public ConnectionMetrics(MongoClient mongoClient) { |
|
||||||
super(mongoClient); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Current Connections") |
|
||||||
public int getCurrent() { |
|
||||||
return getConnectionData("current", java.lang.Integer.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Available Connections") |
|
||||||
public int getAvailable() { |
|
||||||
return getConnectionData("available", java.lang.Integer.class); |
|
||||||
} |
|
||||||
|
|
||||||
@SuppressWarnings("unchecked") |
|
||||||
private <T> T getConnectionData(String key, Class<T> targetClass) { |
|
||||||
Document mem = (Document) getServerStatus().get("connections"); |
|
||||||
// Class c = mem.get(key).getClass();
|
|
||||||
return (T) mem.get(key); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,85 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import org.bson.Document; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedMetric; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedResource; |
|
||||||
import org.springframework.jmx.support.MetricType; |
|
||||||
|
|
||||||
import com.mongodb.DBObject; |
|
||||||
import com.mongodb.client.MongoClient; |
|
||||||
|
|
||||||
/** |
|
||||||
* JMX Metrics for Global Locks |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @deprecated since 4.5 |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
@ManagedResource(description = "Global Lock Metrics") |
|
||||||
public class GlobalLockMetrics extends AbstractMonitor { |
|
||||||
|
|
||||||
/** |
|
||||||
* @param mongoClient must not be {@literal null}. |
|
||||||
* @since 2.2 |
|
||||||
*/ |
|
||||||
public GlobalLockMetrics(MongoClient mongoClient) { |
|
||||||
super(mongoClient); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Total time") |
|
||||||
public double getTotalTime() { |
|
||||||
return getGlobalLockData("totalTime", java.lang.Double.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Lock time", unit = "s") |
|
||||||
public double getLockTime() { |
|
||||||
return getGlobalLockData("lockTime", java.lang.Double.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Lock time") |
|
||||||
public double getLockTimeRatio() { |
|
||||||
return getGlobalLockData("ratio", java.lang.Double.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Current Queue") |
|
||||||
public int getCurrentQueueTotal() { |
|
||||||
return getCurrentQueue("total"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Reader Queue") |
|
||||||
public int getCurrentQueueReaders() { |
|
||||||
return getCurrentQueue("readers"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Writer Queue") |
|
||||||
public int getCurrentQueueWriters() { |
|
||||||
return getCurrentQueue("writers"); |
|
||||||
} |
|
||||||
|
|
||||||
@SuppressWarnings("unchecked") |
|
||||||
private <T> T getGlobalLockData(String key, Class<T> targetClass) { |
|
||||||
DBObject globalLock = (DBObject) getServerStatus().get("globalLock"); |
|
||||||
return (T) globalLock.get(key); |
|
||||||
} |
|
||||||
|
|
||||||
private int getCurrentQueue(String key) { |
|
||||||
Document globalLock = (Document) getServerStatus().get("globalLock"); |
|
||||||
Document currentQueue = (Document) globalLock.get("currentQueue"); |
|
||||||
return (Integer) currentQueue.get(key); |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,75 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import org.bson.Document; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedMetric; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedResource; |
|
||||||
import org.springframework.jmx.support.MetricType; |
|
||||||
|
|
||||||
import com.mongodb.client.MongoClient; |
|
||||||
|
|
||||||
/** |
|
||||||
* JMX Metrics for Memory |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @deprecated since 4.5 |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
@ManagedResource(description = "Memory Metrics") |
|
||||||
public class MemoryMetrics extends AbstractMonitor { |
|
||||||
|
|
||||||
/** |
|
||||||
* @param mongoClient |
|
||||||
* @since 2.2 |
|
||||||
*/ |
|
||||||
public MemoryMetrics(MongoClient mongoClient) { |
|
||||||
super(mongoClient); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Memory address size") |
|
||||||
public int getBits() { |
|
||||||
return getMemData("bits", java.lang.Integer.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Resident in Physical Memory", unit = "MB") |
|
||||||
public int getResidentSpace() { |
|
||||||
return getMemData("resident", java.lang.Integer.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Virtual Address Space", unit = "MB") |
|
||||||
public int getVirtualAddressSpace() { |
|
||||||
return getMemData("virtual", java.lang.Integer.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Is memory info supported on this platform") |
|
||||||
public boolean getMemoryInfoSupported() { |
|
||||||
return getMemData("supported", java.lang.Boolean.class); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.GAUGE, displayName = "Memory Mapped Space", unit = "MB") |
|
||||||
public int getMemoryMappedSpace() { |
|
||||||
return getMemData("mapped", java.lang.Integer.class); |
|
||||||
} |
|
||||||
|
|
||||||
@SuppressWarnings("unchecked") |
|
||||||
private <T> T getMemData(String key, Class<T> targetClass) { |
|
||||||
Document mem = (Document) getServerStatus().get("mem"); |
|
||||||
// Class c = mem.get(key).getClass();
|
|
||||||
return (T) mem.get(key); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,78 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import org.bson.Document; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedMetric; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedResource; |
|
||||||
import org.springframework.jmx.support.MetricType; |
|
||||||
import org.springframework.util.NumberUtils; |
|
||||||
|
|
||||||
import com.mongodb.client.MongoClient; |
|
||||||
|
|
||||||
/** |
|
||||||
* JMX Metrics for Operation counters |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @deprecated since 4.5 |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
@ManagedResource(description = "Operation Counters") |
|
||||||
public class OperationCounters extends AbstractMonitor { |
|
||||||
|
|
||||||
/** |
|
||||||
* @param mongoClient |
|
||||||
* @since 2.2 |
|
||||||
*/ |
|
||||||
public OperationCounters(MongoClient mongoClient) { |
|
||||||
super(mongoClient); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Insert operation count") |
|
||||||
public int getInsertCount() { |
|
||||||
return getOpCounter("insert"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Query operation count") |
|
||||||
public int getQueryCount() { |
|
||||||
return getOpCounter("query"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Update operation count") |
|
||||||
public int getUpdateCount() { |
|
||||||
return getOpCounter("update"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Delete operation count") |
|
||||||
public int getDeleteCount() { |
|
||||||
return getOpCounter("delete"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "GetMore operation count") |
|
||||||
public int getGetMoreCount() { |
|
||||||
return getOpCounter("getmore"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Command operation count") |
|
||||||
public int getCommandCount() { |
|
||||||
return getOpCounter("command"); |
|
||||||
} |
|
||||||
|
|
||||||
private int getOpCounter(String key) { |
|
||||||
Document opCounters = (Document) getServerStatus().get("opcounters"); |
|
||||||
return NumberUtils.convertNumberToTargetClass((Number) opCounters.get(key), Integer.class); |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,83 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2012-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import java.net.UnknownHostException; |
|
||||||
|
|
||||||
import org.springframework.jmx.export.annotation.ManagedMetric; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedOperation; |
|
||||||
import org.springframework.jmx.export.annotation.ManagedResource; |
|
||||||
import org.springframework.jmx.support.MetricType; |
|
||||||
import org.springframework.util.StringUtils; |
|
||||||
|
|
||||||
import com.mongodb.client.MongoClient; |
|
||||||
|
|
||||||
/** |
|
||||||
* Expose basic server information via JMX |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @author Thomas Darimont |
|
||||||
* @author Christoph Strobl |
|
||||||
* @deprecated since 4.5 |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
@ManagedResource(description = "Server Information") |
|
||||||
public class ServerInfo extends AbstractMonitor { |
|
||||||
|
|
||||||
/** |
|
||||||
* @param mongoClient |
|
||||||
* @since 2.2 |
|
||||||
*/ |
|
||||||
protected ServerInfo(MongoClient mongoClient) { |
|
||||||
super(mongoClient); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Returns the hostname of the used server reported by MongoDB. |
|
||||||
* |
|
||||||
* @return the reported hostname can also be an IP address. |
|
||||||
* @throws UnknownHostException |
|
||||||
*/ |
|
||||||
@ManagedOperation(description = "Server host name") |
|
||||||
public String getHostName() throws UnknownHostException { |
|
||||||
|
|
||||||
/* |
|
||||||
* UnknownHostException is not necessary anymore, but clients could have |
|
||||||
* called this method in a try..catch(UnknownHostException) already |
|
||||||
*/ |
|
||||||
return StringUtils.collectionToDelimitedString(hosts(), ","); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(displayName = "Uptime Estimate") |
|
||||||
public double getUptimeEstimate() { |
|
||||||
return (Double) getServerStatus().get("uptimeEstimate"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedOperation(description = "MongoDB Server Version") |
|
||||||
public String getVersion() { |
|
||||||
return (String) getServerStatus().get("version"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedOperation(description = "Local Time") |
|
||||||
public String getLocalTime() { |
|
||||||
return (String) getServerStatus().get("localTime"); |
|
||||||
} |
|
||||||
|
|
||||||
@ManagedMetric(metricType = MetricType.COUNTER, displayName = "Server uptime in seconds", unit = "seconds") |
|
||||||
public double getUptime() { |
|
||||||
return (Double) getServerStatus().get("uptime"); |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,7 +0,0 @@ |
|||||||
/** |
|
||||||
* MongoDB specific JMX monitoring support. |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
@org.springframework.lang.NonNullApi |
|
||||||
package org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
@ -0,0 +1,935 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||||
|
<!-- |
||||||
|
~ Copyright 2019-2025 the original author or authors. |
||||||
|
~ |
||||||
|
~ Licensed 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 |
||||||
|
~ |
||||||
|
~ https://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. |
||||||
|
--> |
||||||
|
<xsd:schema xmlns="http://www.springframework.org/schema/data/mongo" |
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema" |
||||||
|
xmlns:beans="http://www.springframework.org/schema/beans" |
||||||
|
xmlns:tool="http://www.springframework.org/schema/tool" |
||||||
|
xmlns:repository="http://www.springframework.org/schema/data/repository" |
||||||
|
targetNamespace="http://www.springframework.org/schema/data/mongo" |
||||||
|
elementFormDefault="qualified" attributeFormDefault="unqualified"> |
||||||
|
|
||||||
|
<xsd:import namespace="http://www.springframework.org/schema/beans"/> |
||||||
|
<xsd:import namespace="http://www.springframework.org/schema/tool"/> |
||||||
|
<xsd:import namespace="http://www.springframework.org/schema/context"/> |
||||||
|
<xsd:import namespace="http://www.springframework.org/schema/data/repository" |
||||||
|
schemaLocation="https://www.springframework.org/schema/data/repository/spring-repository.xsd"/> |
||||||
|
|
||||||
|
<xsd:element name="mongo-client" type="mongoClientType"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation |
||||||
|
source="org.springframework.data.mongodb.core.MongoClientFactoryBean"> |
||||||
|
<![CDATA[ |
||||||
|
Defines a com.mongodb.client.MongoClient instance used for accessing MongoDB. |
||||||
|
]]></xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation> |
||||||
|
<tool:exports type="com.mongodb.client.MongoClient"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:element> |
||||||
|
|
||||||
|
<xsd:element name="db-factory"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Defines a MongoDbFactory for connecting to a specific database |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:attribute name="id" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The name of the MongoDatabaseFactory definition (by default "mongoDbFactory").]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="mongo-client-ref" type="mongoRef" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The reference to a com.mongodb.client.MongoClient instance. |
||||||
|
]]> |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="dbname" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The name of the database to connect to. Default is 'db'. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="client-uri" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The MongoClientURI string. |
||||||
|
@Deprecated since 3.0 - Use connection-string instead. |
||||||
|
]]> |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="connection-string" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The MongoDB Connection String. Supersedes client-uri. |
||||||
|
See https://docs.mongodb.com/manual/reference/connection-string/ for full documentation. |
||||||
|
@Since 3.0 |
||||||
|
]]> |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="write-concern"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
The WriteConcern that will be the default value used when asking |
||||||
|
the MongoDatabaseFactory for a DB object |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="writeConcernEnumeration xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
|
||||||
|
<xsd:attributeGroup name="mongo-repository-attributes"> |
||||||
|
<xsd:attribute name="mongo-template-ref" type="mongoTemplateRef" |
||||||
|
default="mongoTemplate"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
The reference to a MongoTemplate. Will default to 'mongoTemplate'. |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="create-query-indexes" default="false"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
Enables creation of indexes for queries that get derived from the |
||||||
|
method name |
||||||
|
and thus reference domain class properties. Defaults to false. |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="booleanType xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
</xsd:attributeGroup> |
||||||
|
|
||||||
|
<xsd:element name="repositories"> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:complexContent> |
||||||
|
<xsd:extension base="repository:repositories"> |
||||||
|
<xsd:attributeGroup ref="mongo-repository-attributes"/> |
||||||
|
<xsd:attributeGroup ref="repository:repository-attributes"/> |
||||||
|
</xsd:extension> |
||||||
|
</xsd:complexContent> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
|
||||||
|
<xsd:element name="mapping-converter"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
<![CDATA[Defines a MongoConverter for getting rich mapping functionality.]]></xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:exports |
||||||
|
type="org.springframework.data.mongodb.core.convert.MappingMongoConverter"/> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:sequence> |
||||||
|
<xsd:element name="custom-converters" minOccurs="0"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Top-level element that contains one or more custom converters to be used for mapping |
||||||
|
domain objects to and from Mongo's Document]]> |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:sequence> |
||||||
|
<xsd:element name="converter" type="customConverterType" |
||||||
|
minOccurs="0" maxOccurs="unbounded"/> |
||||||
|
</xsd:sequence> |
||||||
|
<xsd:attribute name="base-package" type="xsd:string"/> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
</xsd:sequence> |
||||||
|
<xsd:attribute name="id" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The name of the MappingMongoConverter instance (by default "mappingConverter").]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="base-package" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The base package in which to scan for entities annotated with @Document |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="db-factory-ref" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
The reference to a MongoDatabaseFactory. |
||||||
|
</xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.MongoDatabaseFactory"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="type-mapper-ref" type="typeMapperRef" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
The reference to a MongoTypeMapper to be used by this |
||||||
|
MappingMongoConverter. |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="mapping-context-ref" type="mappingContextRef" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation |
||||||
|
source="org.springframework.data.mapping.model.MappingContext"> |
||||||
|
The reference to a MappingContext. Will default to |
||||||
|
'mappingContext'. |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="disable-validation" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation |
||||||
|
source="org.springframework.data.mongodb.core.mapping.event.ValidatingMongoEventListener"> |
||||||
|
Disables JSR-303 validation on MongoDB documents before they are |
||||||
|
saved. By default it is set to false. |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="xsd:boolean xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="abbreviate-field-names" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation |
||||||
|
source="org.springframework.data.mongodb.core.mapping.CamelCaseAbbreviatingFieldNamingStrategy"> |
||||||
|
Enables abbreviating the field names for domain class properties |
||||||
|
to the |
||||||
|
first character of their camel case names, e.g. fooBar -> fb. |
||||||
|
Defaults to false. |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="xsd:boolean xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="field-naming-strategy-ref" type="fieldNamingStrategyRef" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation |
||||||
|
source="org.springframework.data.mongodb.core.mapping.FieldNamingStrategy"> |
||||||
|
The reference to a FieldNamingStrategy. |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="auto-index-creation" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
Enable/Disable index creation for annotated properties/entities. |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="xsd:boolean xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
|
||||||
|
<xsd:element name="auditing"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation> |
||||||
|
<tool:exports |
||||||
|
type="org.springframework.data.mongodb.core.mapping.event.AuditingEntityCallback"/> |
||||||
|
<tool:exports |
||||||
|
type="org.springframework.data.auditing.IsNewAwareAuditingHandler"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:attributeGroup ref="repository:auditing-attributes"/> |
||||||
|
<xsd:attribute name="mapping-context-ref" type="mappingContextRef"/> |
||||||
|
<xsd:attribute name="mongo-converter-ref" type="mongoConverterRef"/> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
|
||||||
|
<xsd:simpleType name="typeMapperRef"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.core.convert.MongoTypeMapper"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:union memberTypes="xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="mappingContextRef"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mapping.model.MappingContext"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:union memberTypes="xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="mongoConverterRef"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.core.convert.MongoConverter"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:union memberTypes="xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="fieldNamingStrategyRef"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.core.mapping.FieldNamingStrategy"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:union memberTypes="xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="mongoTemplateRef"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.core.MongoTemplate"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:union memberTypes="xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="mongoRef"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.core.MongoClientFactoryBean"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:union memberTypes="xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="sslSocketFactoryRef"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to type="javax.net.ssl.SSLSocketFactory"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:union memberTypes="xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="encryptionSettingsRef"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Reference to FactoryBean for com.mongodb.AutoEncryptionSettings - @since 2.2 |
||||||
|
]]></xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.core.MongoEncryptionSettingsFactoryBean"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:union memberTypes="xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="serverApiRef"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Reference to FactoryBean for com.mongodb.MongoServerApiFactoryBean - @since 3.3 |
||||||
|
]]></xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.core.MongoServerApiFactoryBean"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:union memberTypes="xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="readConcernEnumeration"> |
||||||
|
<xsd:restriction base="xsd:token"> |
||||||
|
<xsd:enumeration value="DEFAULT"/> |
||||||
|
<xsd:enumeration value="LOCAL"/> |
||||||
|
<xsd:enumeration value="MAJORITY"/> |
||||||
|
<xsd:enumeration value="LINEARIZABLE"/> |
||||||
|
<xsd:enumeration value="AVAILABLE"/> |
||||||
|
</xsd:restriction> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="writeConcernEnumeration"> |
||||||
|
<xsd:restriction base="xsd:token"> |
||||||
|
<xsd:enumeration value="ACKNOWLEDGED"/> |
||||||
|
<xsd:enumeration value="W1"/> |
||||||
|
<xsd:enumeration value="W2"/> |
||||||
|
<xsd:enumeration value="W3"/> |
||||||
|
<xsd:enumeration value="UNACKNOWLEDGED"/> |
||||||
|
<xsd:enumeration value="JOURNALED"/> |
||||||
|
<xsd:enumeration value="MAJORITY"/> |
||||||
|
</xsd:restriction> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="readPreferenceEnumeration"> |
||||||
|
<xsd:restriction base="xsd:token"> |
||||||
|
<xsd:enumeration value="PRIMARY"/> |
||||||
|
<xsd:enumeration value="PRIMARY_PREFERRED"/> |
||||||
|
<xsd:enumeration value="SECONDARY"/> |
||||||
|
<xsd:enumeration value="SECONDARY_PREFERRED"/> |
||||||
|
<xsd:enumeration value="NEAREST"/> |
||||||
|
</xsd:restriction> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="uuidRepresentationEnumeration"> |
||||||
|
<xsd:restriction base="xsd:token"> |
||||||
|
<xsd:enumeration value="UNSPECIFIED"/> |
||||||
|
<xsd:enumeration value="STANDARD"/> |
||||||
|
<xsd:enumeration value="C_SHARP_LEGACY"/> |
||||||
|
<xsd:enumeration value="JAVA_LEGACY"/> |
||||||
|
<xsd:enumeration value="PYTHON_LEGACY"/> |
||||||
|
</xsd:restriction> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="clusterConnectionModeEnumeration"> |
||||||
|
<xsd:restriction base="xsd:token"> |
||||||
|
<xsd:enumeration value="SINGLE"/> |
||||||
|
<xsd:enumeration value="MULTIPLE"/> |
||||||
|
</xsd:restriction> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="clusterTypeEnumeration"> |
||||||
|
<xsd:restriction base="xsd:token"> |
||||||
|
<xsd:enumeration value="STANDALONE"/> |
||||||
|
<xsd:enumeration value="REPLICA_SET"/> |
||||||
|
<xsd:enumeration value="SHARDED"/> |
||||||
|
<xsd:enumeration value="UNKNOWN"/> |
||||||
|
</xsd:restriction> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:simpleType name="booleanType"> |
||||||
|
<xsd:restriction base="xsd:token"> |
||||||
|
<xsd:enumeration value="true"/> |
||||||
|
<xsd:enumeration value="false"/> |
||||||
|
</xsd:restriction> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:complexType name="mongoClientType"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Configuration options for 'com.mongodb.client.MongoClient' |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:sequence minOccurs="0" maxOccurs="1"> |
||||||
|
<xsd:element name="client-settings" type="clientSettingsType"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The Mongo driver settings |
||||||
|
]]></xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation> |
||||||
|
<tool:exports type="com.mongodb.MongoClientSettings"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:element> |
||||||
|
</xsd:sequence> |
||||||
|
<xsd:attribute name="id" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The name of the MongoClient definition (by default "mongoClient").]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="connection-string" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The mongodb connection string. E.g. 'mongodb://localhost:27017?replicaSet=rs0' |
||||||
|
See https://docs.mongodb.com/manual/reference/connection-string/ for full documentation. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="port" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The port to connect to MongoDB server. Default is 27017 |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="host" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The host to connect to a MongoDB server. Default is localhost |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="replica-set" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The replica set name when connecting to a cluster. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="credential" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
NOTE: Best way of setting up a connection is by providing the 'connection-string'. |
||||||
|
The comma delimited list of username:password@database entries to use for authentication. Appending ?uri.authMechanism allows to specify the authentication challenge mechanism. If the credential you're trying to pass contains a comma itself, quote it with single quotes: '…'. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
</xsd:complexType> |
||||||
|
|
||||||
|
<xsd:complexType name="clientSettingsType"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Configuration options for 'MongoClientSettings' - @since 3.0 |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:attribute name="application-name" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The application name to use when connecting to MongoDB. Mainly used to identify an operation in server logs, query logs and other profiling features. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="uuid-representation" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The storage format of UUID types. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="uuidRepresentationEnumeration xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="read-preference" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The read preference to use for quries, map-reduce, aggregation and count operations. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="readPreferenceEnumeration xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="read-concern" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Set the global read isolation level. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="readConcernEnumeration xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="write-concern"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Set the default 'WriteConcern' that is controls the acknowledgment of write operations. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="writeConcernEnumeration xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="retry-reads" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets whether reads should be retried if they fail due to a network error. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="booleanType xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="retry-writes" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets whether writes should be retried if they fail due to a network error. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="booleanType xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="socket-connect-timeout" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the socket connect timeout (msec). |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="socket-read-timeout" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the socket read timeoutn (msec). |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="socket-receive-buffer-size" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the receive buffer size. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="socket-send-buffer-size" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the send buffer size. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="server-heartbeat-frequency" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
This is the frequency that the driver will attempt to determine the current state of each server in the cluster. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="server-min-heartbeat-frequency" type="xsd:string" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
In the event that the driver has to frequently re-check a server's availability, it will wait at least this long since the previous check to avoid wasted effort. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="cluster-srv-host" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the host name to use in order to look up an SRV DNS record to find the MongoDB hosts. |
||||||
|
NOTE: do not use along with cluster-hosts. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="cluster-hosts" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the hosts for the cluster. Any duplicate server addresses are removed from the list. |
||||||
|
NOTE: do not use along with cluster-srv-host |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="cluster-connection-mode" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the cluster connection mode to either single node direct or multiple servers. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="clusterConnectionModeEnumeration xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="cluster-type" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the cluster type (eg. SHARDED, REPLICA_SET,...). |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="clusterTypeEnumeration xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="cluster-local-threshold" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the local threshold when selecting a server based on fastes ping time. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="cluster-server-selection-timeout" type="xsd:string" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the timeout to apply when selecting a server. |
||||||
|
Zero indicates an immediate timeout while a negative value means indefinitely wait. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="connection-pool-max-size" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the maximum number of connections allowed. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="connection-pool-min-size" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the minimum number of connections. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="connection-pool-max-wait-time" type="xsd:string" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the maximum time a thread may wait for a connection to become available. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="connection-pool-max-connection-life-time" type="xsd:string" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The maximum time a pooled connection can live for. |
||||||
|
Zero indicates no limit. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="connection-pool-max-connection-idle-time" type="xsd:string" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the maximum idle time of a pooled connection. |
||||||
|
Zero indicates no limit. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="connection-pool-maintenance-initial-delay" type="xsd:string" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the period of time to wait before running the first maintenance job on the connection pool. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="connection-pool-maintenance-frequency" type="xsd:string" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Sets the time period between runs of the maintenance job. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="ssl-enabled" default="false"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Set whether SSL should be enabled or not. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="booleanType xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="ssl-invalid-host-name-allowed" type="xsd:string" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Set whether invalid host names should be allowed. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="ssl-provider" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Set the SSL Context instance provider. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="encryption-settings-ref" type="encryptionSettingsRef" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
AutoEncryptionSettings for MongoDB 4.2+ |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="server-api-version" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Set the server API version for MongoDB 5.0+. Use server-api-ref if required to set additional modes like 'strict',... |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="server-api-ref" type="serverApiRef" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
ServerAPI for MongoDB 5.0+ |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
</xsd:complexType> |
||||||
|
|
||||||
|
<xsd:group name="beanElementGroup"> |
||||||
|
<xsd:choice> |
||||||
|
<xsd:element ref="beans:bean"/> |
||||||
|
<xsd:element ref="beans:ref"/> |
||||||
|
</xsd:choice> |
||||||
|
</xsd:group> |
||||||
|
|
||||||
|
<xsd:complexType name="customConverterType"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Element defining a custom converter. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:group ref="beanElementGroup" minOccurs="0" maxOccurs="1"/> |
||||||
|
<xsd:attribute name="ref" type="xsd:string"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
A reference to a custom converter. |
||||||
|
</xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"/> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
</xsd:complexType> |
||||||
|
|
||||||
|
<xsd:simpleType name="converterRef"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.core.convert.MongoConverter"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:union memberTypes="xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
|
||||||
|
<xsd:element name="template"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Defines a MongoTemplate. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:attribute name="id" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The name of the MongoTemplate definition (by default "mongoTemplate").]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="converter-ref" type="converterRef" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The reference to a MappingMongoConverter instance. |
||||||
|
]]> |
||||||
|
</xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.core.convert.MongoConverter"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="db-factory-ref" type="xsd:string" |
||||||
|
use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
The reference to a MongoDatabaseFactory. |
||||||
|
</xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.MongoDatabaseFactory"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="write-concern"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
The WriteConcern that will be the default value used when asking |
||||||
|
the MongoDatabaseFactory for a DB object |
||||||
|
</xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:simpleType> |
||||||
|
<xsd:union memberTypes="writeConcernEnumeration xsd:string"/> |
||||||
|
</xsd:simpleType> |
||||||
|
</xsd:attribute> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
|
||||||
|
<xsd:element name="gridFsTemplate"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
Defines a GridFsTemplate. |
||||||
|
]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:attribute name="id" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The name of the GridFsTemplate definition (by default "gridFsTemplate").]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="converter-ref" type="converterRef" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The reference to a MappingMongoConverter instance. |
||||||
|
]]> |
||||||
|
</xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.core.convert.MongoConverter"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="db-factory-ref" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation> |
||||||
|
The reference to a MongoDatabaseFactory. |
||||||
|
</xsd:documentation> |
||||||
|
<xsd:appinfo> |
||||||
|
<tool:annotation kind="ref"> |
||||||
|
<tool:assignable-to |
||||||
|
type="org.springframework.data.mongodb.MongoDatabaseFactory"/> |
||||||
|
</tool:annotation> |
||||||
|
</xsd:appinfo> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
<xsd:attribute name="bucket" type="xsd:string" use="optional"> |
||||||
|
<xsd:annotation> |
||||||
|
<xsd:documentation><![CDATA[ |
||||||
|
The GridFs bucket string.]]></xsd:documentation> |
||||||
|
</xsd:annotation> |
||||||
|
</xsd:attribute> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
</xsd:schema> |
||||||
@ -1,38 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.core; |
|
||||||
|
|
||||||
import org.springframework.context.support.ClassPathXmlApplicationContext; |
|
||||||
|
|
||||||
/** |
|
||||||
* Server application than can be run as an app or unit test. |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @author Oliver Gierke |
|
||||||
* @deprecated since 4.5. |
|
||||||
*/ |
|
||||||
@Deprecated(since = "4.5", forRemoval = true) |
|
||||||
public class JmxServer { |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
new JmxServer().run(); |
|
||||||
} |
|
||||||
|
|
||||||
@SuppressWarnings("resource") |
|
||||||
public void run() { |
|
||||||
new ClassPathXmlApplicationContext(new String[] { "infrastructure.xml", "server-jmx.xml" }); |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,68 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.*; |
|
||||||
|
|
||||||
import java.net.UnknownHostException; |
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test; |
|
||||||
import org.junit.jupiter.api.extension.ExtendWith; |
|
||||||
import org.springframework.data.mongodb.test.util.Client; |
|
||||||
import org.springframework.data.mongodb.test.util.MongoClientExtension; |
|
||||||
|
|
||||||
import com.mongodb.client.MongoClient; |
|
||||||
|
|
||||||
/** |
|
||||||
* This test class assumes that you are already running the MongoDB server. |
|
||||||
* |
|
||||||
* @author Mark Pollack |
|
||||||
* @author Thomas Darimont |
|
||||||
* @author Mark Paluch |
|
||||||
*/ |
|
||||||
@ExtendWith(MongoClientExtension.class) |
|
||||||
public class MongoMonitorIntegrationTests { |
|
||||||
|
|
||||||
static @Client MongoClient mongoClient; |
|
||||||
|
|
||||||
@Test |
|
||||||
public void serverInfo() { |
|
||||||
ServerInfo serverInfo = new ServerInfo(mongoClient); |
|
||||||
serverInfo.getVersion(); |
|
||||||
} |
|
||||||
|
|
||||||
@Test // DATAMONGO-685
|
|
||||||
public void getHostNameShouldReturnServerNameReportedByMongo() throws UnknownHostException { |
|
||||||
|
|
||||||
ServerInfo serverInfo = new ServerInfo(mongoClient); |
|
||||||
|
|
||||||
String hostName = null; |
|
||||||
try { |
|
||||||
hostName = serverInfo.getHostName(); |
|
||||||
} catch (UnknownHostException e) { |
|
||||||
throw e; |
|
||||||
} |
|
||||||
|
|
||||||
assertThat(hostName).isNotNull(); |
|
||||||
assertThat(hostName).isEqualTo("127.0.0.1:27017"); |
|
||||||
} |
|
||||||
|
|
||||||
@Test |
|
||||||
public void operationCounters() { |
|
||||||
OperationCounters operationCounters = new OperationCounters(mongoClient); |
|
||||||
operationCounters.getInsertCount(); |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,27 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2018-2025 the original author or authors. |
|
||||||
* |
|
||||||
* Licensed 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 |
|
||||||
* |
|
||||||
* https://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 org.springframework.data.mongodb.monitor; |
|
||||||
|
|
||||||
import java.util.function.Supplier; |
|
||||||
|
|
||||||
/** |
|
||||||
* @author Christoph Strobl |
|
||||||
* @since 2018/01 |
|
||||||
*/ |
|
||||||
interface Resumeable<T> { |
|
||||||
|
|
||||||
void resumeAt(Supplier<T> token); |
|
||||||
} |
|
||||||
@ -1,23 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<beans xmlns="http://www.springframework.org/schema/beans" |
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
||||||
xmlns:p="http://www.springframework.org/schema/p" |
|
||||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo" |
|
||||||
xmlns:context="http://www.springframework.org/schema/context" |
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo https://www.springframework.org/schema/data/mongo/spring-mongo.xsd |
|
||||||
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd |
|
||||||
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> |
|
||||||
|
|
||||||
<mongo:jmx/> |
|
||||||
|
|
||||||
<context:mbean-export/> |
|
||||||
|
|
||||||
<bean id="registry" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean" |
|
||||||
p:port="1099"/> |
|
||||||
|
|
||||||
<!-- Expose JMX over RMI --> |
|
||||||
<bean id="serverConnector" class="org.springframework.jmx.support.ConnectorServerFactoryBean" depends-on="registry" |
|
||||||
p:objectName="connector:name=rmi" |
|
||||||
p:serviceUrl="service:jmx:rmi://localhost/jndi/rmi://localhost:1099/myconnector"/> |
|
||||||
|
|
||||||
</beans> |
|
||||||
Loading…
Reference in new issue