You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2021/08/25 20:36:48 UTC
[tomcat] branch main updated: Add available flag for UserDatabase
This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new 459cbf6 Add available flag for UserDatabase
459cbf6 is described below
commit 459cbf6bd96a0488f205f090efba34520186066e
Author: remm <re...@apache.org>
AuthorDate: Wed Aug 25 22:36:17 2021 +0200
Add available flag for UserDatabase
Also avoid loading the whole database as MBeans, the behavior is fancy
but only makes sense for a memory user database.
---
java/org/apache/catalina/UserDatabase.java | 22 ++++++++++++++++++++++
.../mbeans/GlobalResourcesLifecycleListener.java | 5 +++++
.../apache/catalina/realm/UserDatabaseRealm.java | 6 ++++++
3 files changed, 33 insertions(+)
diff --git a/java/org/apache/catalina/UserDatabase.java b/java/org/apache/catalina/UserDatabase.java
index 9242170..713cc1d 100644
--- a/java/org/apache/catalina/UserDatabase.java
+++ b/java/org/apache/catalina/UserDatabase.java
@@ -198,4 +198,26 @@ public interface UserDatabase {
public default void backgroundProcess() {
// NO-OP by default
}
+
+
+ /**
+ * Is the database available.
+ *
+ * @return true
+ */
+ public default boolean isAvailable() {
+ return true;
+ }
+
+
+ /**
+ * Is the database data loaded on demand. This is used to avoid eager
+ * loading of the full database data, for example for JMX registration of
+ * all objects.
+ *
+ * @return false
+ */
+ public default boolean isSparse() {
+ return false;
+ }
}
diff --git a/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java b/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java
index a86b486..bca1ed7 100644
--- a/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java
+++ b/java/org/apache/catalina/mbeans/GlobalResourcesLifecycleListener.java
@@ -168,6 +168,11 @@ public class GlobalResourcesLifecycleListener implements LifecycleListener {
throw new IllegalArgumentException(sm.getString("globalResources.createError.userDatabase", name), e);
}
+ if (database.isSparse()) {
+ // Avoid loading all the database as mbeans
+ return;
+ }
+
// Create the MBeans for each defined Role
Iterator<Role> roles = database.getRoles();
while (roles.hasNext()) {
diff --git a/java/org/apache/catalina/realm/UserDatabaseRealm.java b/java/org/apache/catalina/realm/UserDatabaseRealm.java
index c13b706..477be7f 100644
--- a/java/org/apache/catalina/realm/UserDatabaseRealm.java
+++ b/java/org/apache/catalina/realm/UserDatabaseRealm.java
@@ -231,6 +231,12 @@ public class UserDatabaseRealm extends RealmBase {
}
+ @Override
+ public boolean isAvailable() {
+ return (database == null) ? false : database.isAvailable();
+ }
+
+
public static final class UserDatabasePrincipal extends GenericPrincipal {
private static final long serialVersionUID = 1L;
private final transient User user;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org