You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2023/10/13 01:24:58 UTC

[openmeetings] branch jakarta-spring-6 updated (63a1cb368 -> 03101ec91)

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a change to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


 discard 63a1cb368 [OPENMEETINGS-2756] javadocs are fixed
 discard 9a6c2d516 [OPENMEETINGS-2756] modules are restructured to remove 'test-jar'; Prometheus is updated to 1.0.0
 discard 473fc1ea4 [OPENMEETINGS-2756] custom-mimetypes.xml is moved to be searchable by Tika-3
 discard 141702757 Build is green
 discard 335d61648 [OPENMEETINGS-2756] audio/video is fixed; version is bumped
 discard 89858568e [OPENMEETINGS-2756] property name is updated
 discard 211dd81c8 [OPENMEETINGS-2756] spring, tomcat, cxf and jetty are updated
 discard 773485bf2 [OPENMEETINGS-2756] JPMS branch is merged into this one
 discard 22ed16895 [OPENMEETINGS-2756] build is fixed; code clean-up some dependencies are updated
 discard a4095490c [OPENMEETINGS-2756] jackrabbit-webdav maven coordinates are updated, bcprov is updated
 discard 8917961f8 [OPENMEETINGS-2756] prometheus is back, code clean-up
 discard b83893c5a [OPENMEETINGS-2756] build is green for me; trublemakers so far: wicket-ioc, prometheus, jackrabbit-webdav
 discard 0d9199499 javax.annotation -> jakarta.annotation
 discard e743dbec8 Project is compilable, tests are RED
 discard 0affc8e93 [OPENMEETINGS-2756] spring, cxf, tomcat, wicket
 discard 61b77e33d Some minor (incomplete) JPMS changes
 discard fe319eabe no jira: unmerged file is fixed
 discard a8ace8fbb More work on JPMS
 discard f59d31986 Build fixed
 discard ba8dc453f Code clean-up
 discard 01d7fc33a The build is green
 discard d7df95a0e Some more work on modules
 discard 30ecd88db Another attempt to fix the build
 discard 1cbb9dba1 some compilation errors are resolved
 discard 9c89ca95f OpenJpa modules were changed
 discard 94ecac6e7 Simple-xml is dropped
 discard d44874c42 no jira: project is partially converted to use java11 modules
     add d251c0405 [OPENMEETINGS-2770] wicket-bootstrap, ldap-api, jetty and bytebuddy
     new d95ae0a86 no jira: project is partially converted to use java11 modules
     new 7c6fba8c4 Simple-xml is dropped
     new b7df4d43b OpenJpa modules were changed
     new d17a6ab17 some compilation errors are resolved
     new b0871e4ec Another attempt to fix the build
     new 747de4dfb Some more work on modules
     new cdbf02c4d The build is green
     new ba1002dc4 Code clean-up
     new 2be6300ed Build fixed
     new d85aae974 More work on JPMS
     new d9b7d015d no jira: unmerged file is fixed
     new e6314ade0 Some minor (incomplete) JPMS changes
     new ebf2f8247 [OPENMEETINGS-2756] spring, cxf, tomcat, wicket
     new 254b4abc5 Project is compilable, tests are RED
     new 2785317ac javax.annotation -> jakarta.annotation
     new a65ee70ac [OPENMEETINGS-2756] build is green for me; trublemakers so far: wicket-ioc, prometheus, jackrabbit-webdav
     new 60885b3c5 [OPENMEETINGS-2756] prometheus is back, code clean-up
     new fa02e741b [OPENMEETINGS-2756] jackrabbit-webdav maven coordinates are updated, bcprov is updated
     new 6626e0888 [OPENMEETINGS-2756] build is fixed; code clean-up some dependencies are updated
     new 85fa59141 [OPENMEETINGS-2756] JPMS branch is merged into this one
     new d5a7321f8 [OPENMEETINGS-2756] spring, tomcat, cxf and jetty are updated
     new af089f598 [OPENMEETINGS-2756] property name is updated
     new b30fb2c2d [OPENMEETINGS-2756] audio/video is fixed; version is bumped
     new c73e65662 Build is green
     new 338ccb401 [OPENMEETINGS-2756] custom-mimetypes.xml is moved to be searchable by Tika-3
     new 0d5e36186 [OPENMEETINGS-2756] modules are restructured to remove 'test-jar'; Prometheus is updated to 1.0.0
     new 03101ec91 [OPENMEETINGS-2756] javadocs are fixed

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (63a1cb368)
            \
             N -- N -- N   refs/heads/jakarta-spring-6 (03101ec91)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 27 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)


[openmeetings] 12/27: Some minor (incomplete) JPMS changes

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit e6314ade009a9ceb0989334edf367495eac3c00e
Author: Maxim Solodovnik <so...@apache.org>
AuthorDate: Mon Sep 25 11:24:42 2023 +0700

    Some minor (incomplete) JPMS changes
---
 openmeetings-core/src/main/java/module-info.java | 1 -
 openmeetings-util/src/main/java/module-info.java | 2 +-
 openmeetings-util/src/test/java/module-info.test | 2 +-
 3 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/openmeetings-core/src/main/java/module-info.java b/openmeetings-core/src/main/java/module-info.java
index ec9973b40..9a17eeddd 100644
--- a/openmeetings-core/src/main/java/module-info.java
+++ b/openmeetings-core/src/main/java/module-info.java
@@ -41,6 +41,5 @@ module org.apache.openmeetings.core {
 	requires javax.inject;
 	requires asterisk.java;
 	requires jain.sip.ri;
-	requires org.apache.tika.parsers;
 	requires jakarta.mail;
 }
diff --git a/openmeetings-util/src/main/java/module-info.java b/openmeetings-util/src/main/java/module-info.java
index fdb492512..3e307dab1 100644
--- a/openmeetings-util/src/main/java/module-info.java
+++ b/openmeetings-util/src/main/java/module-info.java
@@ -39,7 +39,7 @@ module org.apache.openmeetings.util {
 	requires jakarta.activation;
 	requires org.mnode.ical4j.core;
 	requires org.aspectj.tools;
-	requires dom4j;
+	requires org.dom4j;
 	requires simpleclient;
 	requires ch.qos.logback.classic;
 	requires ch.qos.logback.core;
diff --git a/openmeetings-util/src/test/java/module-info.test b/openmeetings-util/src/test/java/module-info.test
index b65dab769..579e840ad 100644
--- a/openmeetings-util/src/test/java/module-info.test
+++ b/openmeetings-util/src/test/java/module-info.test
@@ -40,7 +40,7 @@ open module org.apache.openmeetings.util {
 	requires jakarta.activation;
 	requires org.mnode.ical4j.core;
 	requires org.aspectj.tools;
-	requires dom4j;
+	requires org.dom4j;
 	requires simpleclient;
 	requires ch.qos.logback.classic;
 	requires ch.qos.logback.core;


[openmeetings] 09/27: Build fixed

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 2be6300edcea2be12b9c79e827254aedd3500c08
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue May 17 10:51:32 2022 +0700

    Build fixed
---
 .../src/main/java/org/apache/openmeetings/backup/BackupImport.java      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 0ac284644..8eeb5ab19 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -506,7 +506,7 @@ public class BackupImport {
 		}
 	}
 
-	void cleanup() {
+	public void cleanup() {
 		ldapMap.clear();
 		oauthMap.clear();
 		userMap.clear();


[openmeetings] 24/27: Build is green

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit c73e656621129e84292584e4d45fc1f5b32e905e
Author: Maxim Solodovnik <so...@apache.org>
AuthorDate: Thu Sep 28 12:28:16 2023 +0700

    Build is green
---
 openmeetings-core/src/test/java/module-info.test   |  3 +-
 openmeetings-db/src/main/java/module-info.java     |  1 +
 .../apache/openmeetings/db/dao/user/UserDao.java   |  2 +-
 openmeetings-db/src/test/java/module-info.test     |  4 +--
 .../src/test/java/module-info.test                 |  3 +-
 .../src/test/java/module-info.test                 |  3 +-
 openmeetings-util/src/test/java/module-info.test   |  4 +--
 openmeetings-web/pom.xml                           |  4 +++
 openmeetings-web/src/test/java/module-info.test    |  3 +-
 .../src/main/java/module-info.java                 |  1 +
 .../src/test/java/module-info.test                 |  4 +--
 pom.xml                                            | 37 ++++++----------------
 12 files changed, 27 insertions(+), 42 deletions(-)

diff --git a/openmeetings-core/src/test/java/module-info.test b/openmeetings-core/src/test/java/module-info.test
index b76057d82..fb0ceeb30 100644
--- a/openmeetings-core/src/test/java/module-info.test
+++ b/openmeetings-core/src/test/java/module-info.test
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-module org.apache.openmeetings.core {
+open module org.apache.openmeetings.core {
 	// This one should be in-sync with module-info.java
 	exports org.apache.openmeetings.core.converter;
 	exports org.apache.openmeetings.core.data.file;
@@ -62,6 +62,5 @@ module org.apache.openmeetings.core {
 	requires org.slf4j;
 
 	//tests
-	requires org.junit.jupiter.engine;
 	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-db/src/main/java/module-info.java b/openmeetings-db/src/main/java/module-info.java
index b31f406ef..622b7a9b0 100644
--- a/openmeetings-db/src/main/java/module-info.java
+++ b/openmeetings-db/src/main/java/module-info.java
@@ -78,5 +78,6 @@ module org.apache.openmeetings.db {
 	requires jakarta.servlet;
 	requires jakarta.xml.bind;
 
+	requires org.dom4j;
 	requires org.slf4j;
 }
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
index 9b2a51cc8..64212363e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
@@ -598,7 +598,7 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 	/**
 	 * login logic
 	 *
-	 * @param userOrEmail - login or email of the user being tested
+	 * @param _userOrEmail - login or email of the user being tested
 	 * @param userpass - password of the user being tested
 	 * @return User object in case of successful login
 	 * @throws OmException in case of any issue
diff --git a/openmeetings-db/src/test/java/module-info.test b/openmeetings-db/src/test/java/module-info.test
index df483e26a..fd9ed1196 100644
--- a/openmeetings-db/src/test/java/module-info.test
+++ b/openmeetings-db/src/test/java/module-info.test
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-module org.apache.openmeetings.db {
+open module org.apache.openmeetings.db {
 	// This one should be in-sync with module-info.java
 	exports org.apache.openmeetings;
 	exports org.apache.openmeetings.db.bind;
@@ -79,9 +79,9 @@ module org.apache.openmeetings.db {
 	requires jakarta.servlet;
 	requires jakarta.xml.bind;
 
+	requires org.dom4j;
 	requires org.slf4j;
 
 	//tests
-	requires org.junit.jupiter.engine;
 	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-install/src/test/java/module-info.test b/openmeetings-install/src/test/java/module-info.test
index 6625f6c4d..7841b5f3c 100644
--- a/openmeetings-install/src/test/java/module-info.test
+++ b/openmeetings-install/src/test/java/module-info.test
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-module org.apache.openmeetings.install {
+open module org.apache.openmeetings.install {
 	// This one should be in-sync with module-info.java
 	exports org.apache.openmeetings.backup;
 	exports org.apache.openmeetings.cli;
@@ -53,6 +53,5 @@ module org.apache.openmeetings.install {
 	requires org.slf4j;
 
 	//tests
-	requires org.junit.jupiter.engine;
 	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-mediaserver/src/test/java/module-info.test b/openmeetings-mediaserver/src/test/java/module-info.test
index 5f839623c..3234ebb9b 100644
--- a/openmeetings-mediaserver/src/test/java/module-info.test
+++ b/openmeetings-mediaserver/src/test/java/module-info.test
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-module org.apache.openmeetings.mediaserver {
+open module org.apache.openmeetings.mediaserver {
 	// This one should be in-sync with module-info.java
 	exports org.apache.openmeetings.mediaserver;
 
@@ -47,6 +47,5 @@ module org.apache.openmeetings.mediaserver {
 	requires org.slf4j;
 
 	//tests
-	requires org.junit.jupiter.engine;
 	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-util/src/test/java/module-info.test b/openmeetings-util/src/test/java/module-info.test
index c064884ae..3ea1b258b 100644
--- a/openmeetings-util/src/test/java/module-info.test
+++ b/openmeetings-util/src/test/java/module-info.test
@@ -51,6 +51,6 @@ open module org.apache.openmeetings.util {
 	requires ch.qos.logback.core;
 
 	//tests
-	requires org.junit.jupiter.engine;
-	requires org.junit.jupiter.api;
+	requires transitive org.junit.jupiter.engine;
+	requires transitive org.junit.jupiter.api;
 }
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index dda3a619f..5cc6c4d42 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -493,6 +493,10 @@
 			<artifactId>cxf-rt-rs-client</artifactId>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>jakarta.annotation</groupId>
+			<artifactId>jakarta.annotation-api</artifactId>
+		</dependency>
 		<dependency>
 			<groupId>jakarta.websocket</groupId>
 			<artifactId>jakarta.websocket-client-api</artifactId>
diff --git a/openmeetings-web/src/test/java/module-info.test b/openmeetings-web/src/test/java/module-info.test
index 2873bcb6b..428ba6791 100644
--- a/openmeetings-web/src/test/java/module-info.test
+++ b/openmeetings-web/src/test/java/module-info.test
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-module org.apache.openmeetings.web {
+open module org.apache.openmeetings.web {
 	// This one should be in-sync with module-info.java
 	requires org.apache.openmeetings.core;
 	requires org.apache.openmeetings.db;
@@ -88,6 +88,5 @@ module org.apache.openmeetings.web {
 	requires org.slf4j;
 
 	//tests
-	requires org.junit.jupiter.engine;
 	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-webservice/src/main/java/module-info.java b/openmeetings-webservice/src/main/java/module-info.java
index 3d62da8ca..54d68cb7c 100644
--- a/openmeetings-webservice/src/main/java/module-info.java
+++ b/openmeetings-webservice/src/main/java/module-info.java
@@ -25,6 +25,7 @@ module org.apache.openmeetings.webservice {
 	requires org.apache.openmeetings.service;
 	requires org.apache.openmeetings.util;
 
+	requires com.github.openjson;
 	requires org.apache.commons.lang3;
 
 	requires jakarta.annotation;
diff --git a/openmeetings-webservice/src/test/java/module-info.test b/openmeetings-webservice/src/test/java/module-info.test
index a64ca3edc..d1c1fe2b3 100644
--- a/openmeetings-webservice/src/test/java/module-info.test
+++ b/openmeetings-webservice/src/test/java/module-info.test
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-module org.apache.openmeetings.webservice {
+open module org.apache.openmeetings.webservice {
 	// This one should be in-sync with module-info.java
 	exports org.apache.openmeetings.webservice.util;
 
@@ -26,6 +26,7 @@ module org.apache.openmeetings.webservice {
 	requires org.apache.openmeetings.service;
 	requires org.apache.openmeetings.util;
 
+	requires com.github.openjson;
 	requires org.apache.commons.lang3;
 
 	requires jakarta.annotation;
@@ -53,6 +54,5 @@ module org.apache.openmeetings.webservice {
 	requires org.slf4j;
 
 	//tests
-	requires org.junit.jupiter.engine;
 	requires org.junit.jupiter.api;
 }
diff --git a/pom.xml b/pom.xml
index adf9bff6e..af6076ff8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -463,8 +463,8 @@
 				<version>${spring.version}</version>
 				<exclusions>
 					<exclusion>
-						<groupId>commons-logging</groupId>
-						<artifactId>commons-logging</artifactId>
+						<groupId>org.springframework</groupId>
+						<artifactId>spring-jcl</artifactId>
 					</exclusion>
 				</exclusions>
 			</dependency>
@@ -472,45 +472,21 @@
 				<groupId>org.springframework</groupId>
 				<artifactId>spring-context</artifactId>
 				<version>${spring.version}</version>
-				<exclusions>
-					<exclusion>
-						<groupId>commons-logging</groupId>
-						<artifactId>commons-logging</artifactId>
-					</exclusion>
-				</exclusions>
 			</dependency>
 			<dependency>
 				<groupId>org.springframework</groupId>
 				<artifactId>spring-context-support</artifactId>
 				<version>${spring.version}</version>
-				<exclusions>
-					<exclusion>
-						<groupId>commons-logging</groupId>
-						<artifactId>commons-logging</artifactId>
-					</exclusion>
-				</exclusions>
 			</dependency>
 			<dependency>
 				<groupId>org.springframework</groupId>
 				<artifactId>spring-orm</artifactId>
 				<version>${spring.version}</version>
-				<exclusions>
-					<exclusion>
-						<groupId>commons-logging</groupId>
-						<artifactId>commons-logging</artifactId>
-					</exclusion>
-				</exclusions>
 			</dependency>
 			<dependency>
 				<groupId>org.springframework</groupId>
 				<artifactId>spring-aop</artifactId>
 				<version>${spring.version}</version>
-				<exclusions>
-					<exclusion>
-						<groupId>commons-logging</groupId>
-						<artifactId>commons-logging</artifactId>
-					</exclusion>
-				</exclusions>
 			</dependency>
 			<dependency>
 				<groupId>org.springframework</groupId>
@@ -531,6 +507,12 @@
 				<groupId>org.mnode.ical4j</groupId>
 				<artifactId>ical4j</artifactId>
 				<version>${ical4j.version}</version>
+				<exclusions>
+					<exclusion>
+						<groupId>commons-logging</groupId>
+						<artifactId>commons-logging</artifactId>
+					</exclusion>
+				</exclusions>
 			</dependency>
 			<dependency>
 				<groupId>org.apache.cxf</groupId>
@@ -1285,7 +1267,6 @@
 					<configuration>
 						<forkCount>1</forkCount>
 						<reuseForks>true</reuseForks>
-						<useModulePath>false</useModulePath>
 						<excludedGroups>${excluded.test.groups}</excludedGroups>
 						<includes>
 							<include>**/Test*.java</include>
@@ -1293,6 +1274,8 @@
 						<excludes>
 							<exclude/>
 						</excludes>
+						<useModulePath>false</useModulePath>
+						<!--argLine>-Xint ${argLine}</argLine-->
 						<argLine>@{argLine} --add-modules java.se --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED --add-opens=java.base/sun.security.x509=A [...]
 					</configuration>
 				</plugin>


[openmeetings] 25/27: [OPENMEETINGS-2756] custom-mimetypes.xml is moved to be searchable by Tika-3

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 338ccb40162ddba3d748581a7755f8a89b343713
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Wed Oct 4 16:41:59 2023 +0700

    [OPENMEETINGS-2756] custom-mimetypes.xml is moved to be searchable by Tika-3
---
 .../src/main/resources/{org/apache/tika/mime => }/custom-mimetypes.xml    | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/openmeetings-util/src/main/resources/org/apache/tika/mime/custom-mimetypes.xml b/openmeetings-util/src/main/resources/custom-mimetypes.xml
similarity index 100%
rename from openmeetings-util/src/main/resources/org/apache/tika/mime/custom-mimetypes.xml
rename to openmeetings-util/src/main/resources/custom-mimetypes.xml


[openmeetings] 07/27: The build is green

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit cdbf02c4dd2afccad7b1adaacd70e67dd6d40d66
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Apr 21 15:52:27 2022 +0700

    The build is green
---
 .../openmeetings/db/util/ApplicationHelper.java    |  6 ++-
 .../apache/openmeetings/backup/BackupImport.java   | 48 +++++++++++++++-------
 .../service/scheduler/ReminderJob.java             |  4 +-
 .../org/apache/openmeetings/backup/TestExport.java |  6 +--
 .../mail/template/subject/TestSubjTemplate.java    |  2 +-
 5 files changed, 44 insertions(+), 22 deletions(-)

diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
index d63c6c20a..89f3bee09 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
@@ -123,7 +123,11 @@ public class ApplicationHelper {
 			} catch(IllegalStateException e) {
 				app.setServletContext(new MockServletContext(app, null));
 			}
-			app.setConfigurationType(RuntimeConfigurationType.DEPLOYMENT);
+			try {
+				app.setConfigurationType(RuntimeConfigurationType.DEPLOYMENT);
+			} catch (IllegalStateException e) {
+				// no-op, might be already set
+			}
 			OMContextListener omcl = new OMContextListener();
 			omcl.contextInitialized(new ServletContextEvent(app.getServletContext()));
 			ThreadContext.setApplication(app);
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 6ec134772..0ac284644 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -523,7 +523,8 @@ public class BackupImport {
 		messageFolderMap.put(TRASH_FOLDER_ID, TRASH_FOLDER_ID);
 	}
 
-	static BackupVersion getVersion(File base) {
+	// public for testing
+	public static BackupVersion getVersion(File base) {
 		List<BackupVersion> list = new ArrayList<>(1);
 		readList(base, "version.xml", VERSION_LIST_NODE, VERSION_NODE, BackupVersion.class, list::add, true);
 		return list.isEmpty() ? new BackupVersion() : list.get(0);
@@ -532,7 +533,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import Configs
 	 */
-	void importConfigs(File base) throws Exception {
+	// public for testing
+	public void importConfigs(File base) throws Exception {
 		final Map<Integer, String> keyMap = new HashMap<>();
 		Arrays.stream(KeyEvent.class.getDeclaredFields())
 				.filter(fld -> fld.getName().startsWith("VK_"))
@@ -595,7 +597,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import Groups
 	 */
-	void importGroups(File base) {
+	// public for testing
+	public void importGroups(File base) {
 		log.info("Configs import complete, starting group import");
 		readList(base, "organizations.xml", GROUP_LIST_NODE, GROUP_NODE, Group.class, g -> {
 			Long oldId = g.getId();
@@ -608,7 +611,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import LDAP Configs
 	 */
-	Long importLdap(File base) {
+	// public for testing
+	public Long importLdap(File base) {
 		log.info("Groups import complete, starting LDAP config import");
 		Long[] defaultLdapId = {cfgDao.getLong(CONFIG_DEFAULT_LDAP_ID, null)};
 		readList(base, "ldapconfigs.xml", "ldapconfigs", "ldapconfig", LdapConfig.class, c -> {
@@ -631,7 +635,8 @@ public class BackupImport {
 	/*
 	 * ##################### OAuth2 servers
 	 */
-	void importOauth(File base) {
+	// public for testing
+	public void importOauth(File base) {
 		log.info("Ldap config import complete, starting OAuth2 server import");
 		readList(base, "oauth2servers.xml", OAUTH_LIST_NODE, OAUTH_NODE, OAuthServer.class
 				, s -> {
@@ -676,7 +681,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import Users
 	 */
-	void importUsers(File base) throws Exception {
+	// public for testing
+	public void importUsers(File base) throws Exception {
 		log.info("OAuth2 servers import complete, starting user import");
 		String jNameTimeZone = getDefaultTimezone();
 		//add existent emails from database
@@ -740,7 +746,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import Rooms
 	 */
-	void importRooms(File base) throws Exception {
+	// public for testing
+	public void importRooms(File base) throws Exception {
 		log.info("Users import complete, starting room import");
 		Class<Room> eClazz = Room.class;
 		JAXBContext jc = JAXBContext.newInstance(eClazz);
@@ -775,7 +782,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import Room Groups
 	 */
-	void importRoomGroups(File base) throws Exception {
+	// public for testing
+	public void importRoomGroups(File base) throws Exception {
 		log.info("Room import complete, starting room groups import");
 		Class<RoomGroup> eClazz = RoomGroup.class;
 		JAXBContext jc = JAXBContext.newInstance(eClazz);
@@ -804,7 +812,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import Chat messages
 	 */
-	void importChat(File base) throws Exception {
+	// public for testing
+	public void importChat(File base) throws Exception {
 		log.info("Room groups import complete, starting chat messages import");
 		Class<ChatMessage> eClazz = ChatMessage.class;
 		JAXBContext jc = JAXBContext.newInstance(eClazz);
@@ -827,7 +836,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import Calendars
 	 */
-	void importCalendars(File base) throws Exception {
+	// public for testing
+	public void importCalendars(File base) throws Exception {
 		log.info("Chat messages import complete, starting calendar import");
 		Class<OmCalendar> eClazz = OmCalendar.class;
 		JAXBContext jc = JAXBContext.newInstance(eClazz);
@@ -845,7 +855,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import Appointments
 	 */
-	void importAppointments(File base) throws Exception {
+	// public for testing
+	public void importAppointments(File base) throws Exception {
 		log.info("Calendar import complete, starting appointement import");
 		Class<Appointment> eClazz = Appointment.class;
 		JAXBContext jc = JAXBContext.newInstance(eClazz);
@@ -880,7 +891,8 @@ public class BackupImport {
 	 *
 	 * Reminder Invitations will be NOT send!
 	 */
-	void importMeetingMembers(File base) throws Exception {
+	// public for testing
+	public void importMeetingMembers(File base) throws Exception {
 		log.info("Appointement import complete, starting meeting members import");
 		Class<MeetingMember> eClazz = MeetingMember.class;
 		JAXBContext jc = JAXBContext.newInstance(eClazz);
@@ -970,10 +982,16 @@ public class BackupImport {
 		remain.entrySet().forEach(e -> log.warn("Doungling file/recording: {}", e.getValue()));
 		tree.process(f -> isInvalidFile(f, folders), save);
 	}
+
 	/*
 	 * ##################### Import Recordings
 	 */
+<<<<<<< HEAD
 	void importRecordings(File base) {
+=======
+	// public for testing
+	public void importRecordings(File base) throws Exception {
+>>>>>>> 2590e5123 (The build is green)
 		log.info("Meeting members import complete, starting recordings server import");
 		final Map<Long, Long> folders = new HashMap<>();
 		saveTree(base, "flvRecordings.xml", RECORDING_LIST_NODE, RECORDING_NODE, Recording.class, folders, r -> {
@@ -1016,7 +1034,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import Private Message Folders
 	 */
-	void importPrivateMsgFolders(File base) {
+	// public for testing
+	public void importPrivateMsgFolders(File base) {
 		log.info("Recording import complete, starting private message folder import");
 		readList(base, "privateMessageFolder.xml", MSG_FOLDER_LIST_NODE, MSG_FOLDER_NODE, PrivateMessageFolder.class, p -> {
 			Long folderId = p.getId();
@@ -1161,7 +1180,8 @@ public class BackupImport {
 		}, true);
 	}
 
-	void importExtraMenus(File base) throws Exception {
+	// public for testing
+	public void importExtraMenus(File base) throws Exception {
 		log.info("Room files complete, starting extra menus import");
 		Class<ExtraMenu> eClazz = ExtraMenu.class;
 		JAXBContext jc = JAXBContext.newInstance(eClazz);
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/ReminderJob.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/ReminderJob.java
index 7bfd134a6..c0ceb43b1 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/ReminderJob.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/ReminderJob.java
@@ -65,8 +65,8 @@ public class ReminderJob extends AbstractJob {
 	@Autowired
 	private GroupUserDao groupUserDao;
 
-	//package private for testing
-	Map<Long, LocalDateTime> groupNotifications = new HashMap<>();
+	// public for testing
+	public Map<Long, LocalDateTime> groupNotifications = new HashMap<>();
 
 	public void remindMeetings() {
 		log.trace("ReminderJob.remindMeetings");
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
index 6a22356d3..5e51cb8de 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
@@ -26,9 +26,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.IOException;
 import java.io.StringWriter;
-import java.io.Writer;
 import java.nio.file.Paths;
 import java.time.LocalDate;
 
@@ -45,8 +43,6 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import com.sun.xml.bind.marshaller.CharacterEscapeHandler;
-
 class TestExport extends AbstractOmServerTest {
 	@Autowired
 	private FileItemDao fileItemDao;
@@ -68,12 +64,14 @@ class TestExport extends AbstractOmServerTest {
 		JAXBContext jc = JAXBContext.newInstance(eClazz);
 		Marshaller marshaller = jc.createMarshaller();
 		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+		/* FIXME TODO
 		marshaller.setProperty(CharacterEscapeHandler.class.getName(), new CharacterEscapeHandler() {
 			@Override
 			public void escape(char[] ac, int i, int j, boolean flag, Writer writer) throws IOException {
 				writer.write(ac, i, j);
 			}
 		});
+		*/
 		StringWriter writer = new StringWriter();
 		marshaller.marshal(u, writer);
 		Assertions.assertNotNull(writer.getBuffer());
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/service/mail/template/subject/TestSubjTemplate.java b/openmeetings-web/src/test/java/org/apache/openmeetings/service/mail/template/subject/TestSubjTemplate.java
index d57918187..e7ed63470 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/service/mail/template/subject/TestSubjTemplate.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/service/mail/template/subject/TestSubjTemplate.java
@@ -85,7 +85,7 @@ class TestSubjTemplate extends AbstractWicketTesterTest {
 			private static final long serialVersionUID = 1L;
 
 			@Override
-			String getPrefix() {
+			public String getPrefix() {
 				return null;
 			}
 		};


[openmeetings] 05/27: Another attempt to fix the build

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit b0871e4ecc8b05750f083697695b37ba6e138770
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sat Jul 3 18:07:33 2021 +0700

    Another attempt to fix the build
---
 openmeetings-core/src/main/java/module-info.java | 3 ---
 openmeetings-db/src/main/java/module-info.java   | 1 -
 openmeetings-util/src/main/java/module-info.java | 2 +-
 3 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/openmeetings-core/src/main/java/module-info.java b/openmeetings-core/src/main/java/module-info.java
index 7b874cd9c..6495df2b8 100644
--- a/openmeetings-core/src/main/java/module-info.java
+++ b/openmeetings-core/src/main/java/module-info.java
@@ -22,8 +22,6 @@ module apache.openmeetings.core {
 
 	requires transitive org.apache.commons.io;
 
-	requires transitive spring.context;
-
 	requires kurento.client;
 	requires kurento.commons;
 	requires kurento.jsonrpc.client;
@@ -36,7 +34,6 @@ module apache.openmeetings.core {
 	requires jodconverter.core;
 	requires jodconverter.local;
 	requires org.apache.directory.ldap.api.all;
-	requires tika.core;
 	requires tika.parsers;
 	requires javax.inject;
 	requires wicket.ioc;
diff --git a/openmeetings-db/src/main/java/module-info.java b/openmeetings-db/src/main/java/module-info.java
index d8849cf89..671932f9f 100644
--- a/openmeetings-db/src/main/java/module-info.java
+++ b/openmeetings-db/src/main/java/module-info.java
@@ -56,7 +56,6 @@ module apache.openmeetings.db {
 	requires transitive spring.core;
 
 	requires spring.tx;
-	requires spring.context;
 	requires javax.persistence;
 	requires openjpa;
 	requires java.xml.bind;
diff --git a/openmeetings-util/src/main/java/module-info.java b/openmeetings-util/src/main/java/module-info.java
index 65ecb4f2b..3032e41b1 100644
--- a/openmeetings-util/src/main/java/module-info.java
+++ b/openmeetings-util/src/main/java/module-info.java
@@ -44,6 +44,6 @@ module apache.openmeetings.util {
 	requires transitive org.mnode.ical4j.core;
 	requires transitive tika.core;
 	requires org.aspectj.tools;
-	requires spring.context;
+	requires transitive spring.context;
 	requires simpleclient;
 }


[openmeetings] 26/27: [OPENMEETINGS-2756] modules are restructured to remove 'test-jar'; Prometheus is updated to 1.0.0

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 0d5e36186b60dcff957bf0646fc2673ad33dbbcc
Author: Maxim Solodovnik <so...@apache.org>
AuthorDate: Sun Oct 8 20:08:13 2023 +0700

    [OPENMEETINGS-2756] modules are restructured to remove 'test-jar'; Prometheus is updated to 1.0.0
---
 openmeetings-core/pom.xml                          |  21 +-
 openmeetings-core/src/test/java/module-info.test   |  66 -----
 openmeetings-db/pom.xml                            |   8 -
 openmeetings-db/src/test/java/module-info.test     |  87 ------
 openmeetings-install/pom.xml                       |   7 -
 .../src/test/java/module-info.test                 |  57 ----
 openmeetings-mediaserver/pom.xml                   |  12 +-
 .../src/test/java/module-info.test                 |  51 ----
 openmeetings-screenshare/pom.xml                   |   1 -
 openmeetings-server/pom.xml                        |   1 +
 .../pom.xml                                        |  34 +--
 .../src/main/java/module-info.java                 |  14 +-
 .../apache/openmeetings/test/NonJenkinsTest.java   |   0
 openmeetings-util/pom.xml                          |  18 +-
 openmeetings-util/src/main/java/module-info.java   |   4 +-
 .../util/logging/PrometheusAspect.java             |  14 +-
 .../openmeetings/util/logging/PrometheusUtil.java  |  37 ---
 .../util/logging/TimedApplication.java             |   1 -
 .../openmeetings/util/logging/TimedDatabase.java   |   1 -
 openmeetings-util/src/test/java/module-info.test   |  56 ----
 openmeetings-web/pom.xml                           |  16 +-
 openmeetings-web/src/main/java/module-info.java    |   5 +-
 .../util/logging/OpenMeetingsMetricsServlet.java   |  19 +-
 .../web/util/logging/TomcatGenericExports.java     | 324 ---------------------
 .../openmeetings/web/util/logging/TomcatStats.java | 314 ++++++++++++++++++++
 .../webapp/WEB-INF/classes/applicationContext.xml  |   2 +-
 openmeetings-web/src/main/webapp/WEB-INF/web.xml   |  50 +---
 openmeetings-web/src/test/java/module-info.test    |  92 ------
 openmeetings-webservice/pom.xml                    |  12 +-
 .../src/test/java/module-info.test                 |  58 ----
 pom.xml                                            |  82 ++++--
 31 files changed, 435 insertions(+), 1029 deletions(-)

diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 54a96621f..2339024c3 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -34,7 +34,7 @@
 	</properties>
 	<build>
 		<plugins>
-			<!--plugin>
+			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
 				<executions>
@@ -51,18 +51,6 @@
 						<goals>
 							<goal>javadoc-no-fork</goal>
 						</goals>
-						<phase>generate-resources</phase>
-					</execution>
-				</executions>
-			</plugin-->
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-jar-plugin</artifactId>
-				<executions>
-					<execution>
-						<goals>
-							<goal>test-jar</goal>
-						</goals>
 					</execution>
 				</executions>
 			</plugin>
@@ -118,12 +106,5 @@
 			<groupId>org.junit.jupiter</groupId>
 			<artifactId>junit-jupiter-params</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>org.apache.openmeetings</groupId>
-			<artifactId>openmeetings-util</artifactId>
-			<version>${project.version}</version>
-			<type>test-jar</type>
-			<scope>test</scope>
-		</dependency>
 	</dependencies>
 </project>
diff --git a/openmeetings-core/src/test/java/module-info.test b/openmeetings-core/src/test/java/module-info.test
deleted file mode 100644
index fb0ceeb30..000000000
--- a/openmeetings-core/src/test/java/module-info.test
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-open module org.apache.openmeetings.core {
-	// This one should be in-sync with module-info.java
-	exports org.apache.openmeetings.core.converter;
-	exports org.apache.openmeetings.core.data.file;
-	exports org.apache.openmeetings.core.ldap;
-	exports org.apache.openmeetings.core.mail;
-	exports org.apache.openmeetings.core.notifier;
-	exports org.apache.openmeetings.core.rss;
-	exports org.apache.openmeetings.core.sip;
-	exports org.apache.openmeetings.core.util;
-
-	requires com.github.openjson;
-
-	requires jakarta.annotation;
-	requires jakarta.inject;
-	requires jakarta.mail;
-
-	requires org.apache.commons.io;
-	requires org.apache.commons.lang3;
-
-	requires org.apache.tika.core;
-	requires org.apache.tika.parser.image;
-
-	requires org.apache.openmeetings.db;
-	requires org.apache.openmeetings.util;
-
-	requires org.apache.wicket.core;
-	requires org.apache.wicket.websocket.core;
-	requires org.apache.wicket.util;
-
-	requires java.xml;
-
-	requires xstream;
-
-	requires jodconverter.core;
-	requires jodconverter.local;
-	requires org.apache.directory.ldap.api.all;
-	requires asterisk.java;
-	requires jain.sip.ri;
-
-	requires spring.context;
-
-	requires org.slf4j;
-
-	//tests
-	requires org.junit.jupiter.api;
-}
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 3ba12399c..ed2df7a38 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -112,13 +112,6 @@
 			<groupId>com.google.code.findbugs</groupId>
 			<artifactId>jsr305</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>org.apache.openmeetings</groupId>
-			<artifactId>openmeetings-util</artifactId>
-			<version>${project.version}</version>
-			<type>test-jar</type>
-			<scope>test</scope>
-		</dependency>
 	</dependencies>
 	<build>
 		<plugins>
@@ -139,7 +132,6 @@
 						<goals>
 							<goal>javadoc-no-fork</goal>
 						</goals>
-						<phase>generate-resources</phase>
 					</execution>
 				</executions>
 			</plugin-->
diff --git a/openmeetings-db/src/test/java/module-info.test b/openmeetings-db/src/test/java/module-info.test
deleted file mode 100644
index fd9ed1196..000000000
--- a/openmeetings-db/src/test/java/module-info.test
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-open module org.apache.openmeetings.db {
-	// This one should be in-sync with module-info.java
-	exports org.apache.openmeetings;
-	exports org.apache.openmeetings.db.bind;
-	exports org.apache.openmeetings.db.bind.adapter;
-	exports org.apache.openmeetings.db.dao;
-	exports org.apache.openmeetings.db.dao.basic;
-	exports org.apache.openmeetings.db.dao.calendar;
-	exports org.apache.openmeetings.db.dao.file;
-	exports org.apache.openmeetings.db.dao.label;
-	exports org.apache.openmeetings.db.dao.log;
-	exports org.apache.openmeetings.db.dao.record;
-	exports org.apache.openmeetings.db.dao.room;
-	exports org.apache.openmeetings.db.dao.server;
-	exports org.apache.openmeetings.db.dao.user;
-	exports org.apache.openmeetings.db.dto.basic;
-	exports org.apache.openmeetings.db.dto.calendar;
-	exports org.apache.openmeetings.db.dto.file;
-	exports org.apache.openmeetings.db.dto.record;
-	exports org.apache.openmeetings.db.dto.room;
-	exports org.apache.openmeetings.db.dto.user;
-	exports org.apache.openmeetings.db.entity;
-	exports org.apache.openmeetings.db.entity.basic;
-	exports org.apache.openmeetings.db.entity.calendar;
-	exports org.apache.openmeetings.db.entity.file;
-	exports org.apache.openmeetings.db.entity.label;
-	exports org.apache.openmeetings.db.entity.log;
-	exports org.apache.openmeetings.db.entity.record;
-	exports org.apache.openmeetings.db.entity.room;
-	exports org.apache.openmeetings.db.entity.server;
-	exports org.apache.openmeetings.db.entity.user;
-	exports org.apache.openmeetings.db.manager;
-	exports org.apache.openmeetings.db.mapper;
-	exports org.apache.openmeetings.db.util;
-	exports org.apache.openmeetings.db.util.ws;
-
-	requires com.github.openjson;
-
-	requires org.apache.commons.lang3;
-	requires org.apache.commons.text;
-
-	requires org.apache.openjpa;
-
-	requires org.apache.openmeetings.util;
-
-	requires org.apache.wicket.core;
-	requires org.apache.wicket.extensions;
-	requires org.apache.wicket.request;
-	requires org.apache.wicket.util;
-	requires org.apache.wicket.websocket.core;
-
-	requires spring.beans;
-	requires spring.web;
-	requires spring.core;
-	requires spring.tx;
-	requires spring.context;
-
-	requires jakarta.annotation;
-	requires jakarta.inject;
-	requires jakarta.persistence;
-	requires jakarta.servlet;
-	requires jakarta.xml.bind;
-
-	requires org.dom4j;
-	requires org.slf4j;
-
-	//tests
-	requires org.junit.jupiter.api;
-}
diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index 3e37d0ed7..4b563bab0 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -53,12 +53,5 @@
 			<groupId>commons-cli</groupId>
 			<artifactId>commons-cli</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>org.apache.openmeetings</groupId>
-			<artifactId>openmeetings-util</artifactId>
-			<version>${project.version}</version>
-			<type>test-jar</type>
-			<scope>test</scope>
-		</dependency>
 	</dependencies>
 </project>
diff --git a/openmeetings-install/src/test/java/module-info.test b/openmeetings-install/src/test/java/module-info.test
deleted file mode 100644
index 7841b5f3c..000000000
--- a/openmeetings-install/src/test/java/module-info.test
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-open module org.apache.openmeetings.install {
-	// This one should be in-sync with module-info.java
-	exports org.apache.openmeetings.backup;
-	exports org.apache.openmeetings.cli;
-	exports org.apache.openmeetings.installation;
-
-	requires com.github.openjson;
-
-	requires org.apache.commons.io;
-	requires org.apache.commons.lang3;
-
-	requires org.apache.openjpa;
-
-	requires org.apache.openmeetings.core;
-	requires org.apache.openmeetings.db;
-	requires org.apache.openmeetings.util;
-
-	requires org.apache.wicket.core;
-	requires org.apache.wicket.request;
-	requires org.apache.wicket.util;
-
-	requires jakarta.inject;
-	requires jakarta.xml.bind;
-
-	requires spring.context;
-	requires spring.context.support;
-	requires spring.web;
-
-	requires java.desktop;
-	requires commons.cli;
-	requires quartz;
-	requires xstream;
-
-	requires org.slf4j;
-
-	//tests
-	requires org.junit.jupiter.api;
-}
diff --git a/openmeetings-mediaserver/pom.xml b/openmeetings-mediaserver/pom.xml
index a38173417..1a2758a1d 100644
--- a/openmeetings-mediaserver/pom.xml
+++ b/openmeetings-mediaserver/pom.xml
@@ -49,17 +49,10 @@
 			<groupId>org.kurento</groupId>
 			<artifactId>kurento-client</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>org.apache.openmeetings</groupId>
-			<artifactId>openmeetings-util</artifactId>
-			<version>${project.version}</version>
-			<type>test-jar</type>
-			<scope>test</scope>
-		</dependency>
 	</dependencies>
 	<build>
 		<plugins>
-			<!--plugin>
+			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
 				<executions>
@@ -76,10 +69,9 @@
 						<goals>
 							<goal>javadoc-no-fork</goal>
 						</goals>
-						<phase>generate-resources</phase>
 					</execution>
 				</executions>
-			</plugin-->
+			</plugin>
 		</plugins>
 	</build>
 </project>
diff --git a/openmeetings-mediaserver/src/test/java/module-info.test b/openmeetings-mediaserver/src/test/java/module-info.test
deleted file mode 100644
index 3234ebb9b..000000000
--- a/openmeetings-mediaserver/src/test/java/module-info.test
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-open module org.apache.openmeetings.mediaserver {
-	// This one should be in-sync with module-info.java
-	exports org.apache.openmeetings.mediaserver;
-
-	requires com.github.openjson;
-
-	requires org.apache.commons.lang3;
-
-	requires org.apache.openmeetings.core;
-	requires org.apache.openmeetings.db;
-	requires org.apache.openmeetings.util;
-
-	requires org.apache.wicket.ioc;
-	requires org.apache.wicket.util;
-
-	requires jakarta.annotation;
-	requires jakarta.inject;
-
-	requires spring.beans;
-	requires spring.context;
-	requires spring.core;
-
-	requires kurento.client;
-	requires kurento.jsonrpc.client;
-	requires kurento.commons;
-	requires com.google.gson;
-
-	requires org.slf4j;
-
-	//tests
-	requires org.junit.jupiter.api;
-}
diff --git a/openmeetings-screenshare/pom.xml b/openmeetings-screenshare/pom.xml
index 05b9e9035..a36ccdac5 100644
--- a/openmeetings-screenshare/pom.xml
+++ b/openmeetings-screenshare/pom.xml
@@ -214,4 +214,3 @@
 		</plugins>
 	</build>
 </project>
-
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index 696978a04..e56f3c043 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -40,6 +40,7 @@
 		<om.webapp>webapps/openmeetings</om.webapp>
 		<root.webapp>webapps/ROOT</root.webapp>
 		<server-file.dir>web-server</server-file.dir>
+		<automatic-module-name>org.apache.openmeetings.server</automatic-module-name>
 	</properties>
 	<url>https://openmeetings.apache.org</url>
 	<scm>
diff --git a/openmeetings-install/pom.xml b/openmeetings-tests/pom.xml
similarity index 60%
copy from openmeetings-install/pom.xml
copy to openmeetings-tests/pom.xml
index 3e37d0ed7..0deadc56a 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-tests/pom.xml
@@ -25,40 +25,18 @@
 		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
-	<artifactId>openmeetings-install</artifactId>
+	<artifactId>openmeetings-tests</artifactId>
 	<packaging>jar</packaging>
-	<name>Openmeetings Install</name>
-	<description>Module for OpenMeetings command line admin and classes necessary for installer.</description>
+	<name>Openmeetings Tests</name>
+	<description>Module for common test classes</description>
 	<properties>
 		<site.basedir>${project.parent.basedir}</site.basedir>
 	</properties>
 	<dependencies>
 		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-context-support</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-core</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.quartz-scheduler</groupId>
-			<artifactId>quartz</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.openmeetings</groupId>
-			<artifactId>openmeetings-core</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-cli</groupId>
-			<artifactId>commons-cli</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.openmeetings</groupId>
-			<artifactId>openmeetings-util</artifactId>
-			<version>${project.version}</version>
-			<type>test-jar</type>
-			<scope>test</scope>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-api</artifactId>
+			<scope>compile</scope>
 		</dependency>
 	</dependencies>
 </project>
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedDatabase.java b/openmeetings-tests/src/main/java/module-info.java
similarity index 72%
copy from openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedDatabase.java
copy to openmeetings-tests/src/main/java/module-info.java
index 028029551..60d0547a5 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedDatabase.java
+++ b/openmeetings-tests/src/main/java/module-info.java
@@ -1,5 +1,4 @@
 /*
-
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -17,15 +16,8 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.util.logging;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
-public @interface TimedDatabase {
+module org.apache.openmeetings.tests {
+	exports org.apache.openmeetings.test;
 
+	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-util/src/test/java/org/apache/openmeetings/test/NonJenkinsTest.java b/openmeetings-tests/src/main/java/org/apache/openmeetings/test/NonJenkinsTest.java
similarity index 100%
rename from openmeetings-util/src/test/java/org/apache/openmeetings/test/NonJenkinsTest.java
rename to openmeetings-tests/src/main/java/org/apache/openmeetings/test/NonJenkinsTest.java
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index b4388d9a5..8f99a8388 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -38,17 +38,6 @@
 				<groupId>org.apache.felix</groupId>
 				<artifactId>maven-bundle-plugin</artifactId>
 			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-jar-plugin</artifactId>
-				<executions>
-					<execution>
-						<goals>
-							<goal>test-jar</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
 		</plugins>
 		<resources>
 			<resource>
@@ -132,7 +121,12 @@
 		</dependency>
 		<dependency>
 			<groupId>io.prometheus</groupId>
-			<artifactId>simpleclient_servlet_jakarta</artifactId>
+			<artifactId>prometheus-metrics-core</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.openmeetings</groupId>
+			<artifactId>openmeetings-tests</artifactId>
 		</dependency>
 	</dependencies>
 </project>
diff --git a/openmeetings-util/src/main/java/module-info.java b/openmeetings-util/src/main/java/module-info.java
index 72e073b16..12b8d3ca4 100644
--- a/openmeetings-util/src/main/java/module-info.java
+++ b/openmeetings-util/src/main/java/module-info.java
@@ -45,7 +45,9 @@ module org.apache.openmeetings.util {
 	requires org.mnode.ical4j.core;
 	requires org.aspectj.tools;
 	requires org.dom4j;
-	requires simpleclient;
 	requires ch.qos.logback.classic;
 	requires ch.qos.logback.core;
+
+	requires prometheus.metrics.core;
+	requires prometheus.metrics.model;
 }
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/PrometheusAspect.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/PrometheusAspect.java
index 396f5ae50..258f0e3e1 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/PrometheusAspect.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/PrometheusAspect.java
@@ -24,21 +24,27 @@ import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
 import org.springframework.stereotype.Component;
 
-import io.prometheus.client.Histogram;
+import io.prometheus.metrics.core.metrics.Histogram;
+import io.prometheus.metrics.model.snapshots.Unit;
 
 @Aspect
 @Component
 public class PrometheusAspect {
+	private static final Histogram histogram = Histogram.builder()
+			.help("OpenMeetings Application Metrics")
+			.name("org_openmeetings_metrics")
+			.labelNames("class", "method", "type", "message")
+			.register();
 
 	private Object logExecutionTime(ProceedingJoinPoint joinPoint, String logType) throws Throwable {
 		String className = joinPoint.getSignature().getDeclaringType().getSimpleName();
 		String methodName = joinPoint.getSignature().getName();
-		Histogram.Timer timer = PrometheusUtil.getHistogram() //
-				.labels(className, methodName, logType, "default").startTimer();
+		long start = System.nanoTime();
 		try {
 			return joinPoint.proceed();
 		} finally {
-			timer.observeDuration();
+			histogram.labelValues(className, methodName, logType, "default")
+					.observe(Unit.nanosToSeconds(System.nanoTime() - start));
 		}
 	}
 
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/PrometheusUtil.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/PrometheusUtil.java
deleted file mode 100644
index 0f1cfd3f0..000000000
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/PrometheusUtil.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.util.logging;
-
-import io.prometheus.client.Histogram;
-
-public class PrometheusUtil {
-	private static final Histogram histogram = Histogram.build()
-			.help("OpenMeetings Application Metrics")
-			.name("org_openmeetings_metrics")
-			.labelNames("class", "method", "type", "message")
-			.register();
-
-	private PrometheusUtil() {
-	}
-
-	public static Histogram getHistogram() {
-		return histogram;
-	}
-}
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedApplication.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedApplication.java
index 09c25ea7a..b5d23fae2 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedApplication.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedApplication.java
@@ -27,5 +27,4 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.METHOD)
 public @interface TimedApplication {
-
 }
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedDatabase.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedDatabase.java
index 028029551..cdbe750b8 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedDatabase.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/logging/TimedDatabase.java
@@ -27,5 +27,4 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.METHOD)
 public @interface TimedDatabase {
-
 }
diff --git a/openmeetings-util/src/test/java/module-info.test b/openmeetings-util/src/test/java/module-info.test
deleted file mode 100644
index 3ea1b258b..000000000
--- a/openmeetings-util/src/test/java/module-info.test
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-open module org.apache.openmeetings.util {
-	// This one should be in-sync with module-info.java
-	exports org.apache.openmeetings.util;
-	exports org.apache.openmeetings.util.crypt;
-	exports org.apache.openmeetings.util.mail;
-	exports org.apache.openmeetings.util.process;
-	exports org.apache.openmeetings.util.ws;
-	exports org.apache.openmeetings.util.logging;
-
-	requires jakarta.activation;
-	requires jakarta.servlet;
-
-	requires com.github.openjson;
-
-	requires org.apache.commons.codec;
-	requires org.apache.commons.lang3;
-
-	requires org.apache.tika.core;
-
-	requires org.apache.wicket.util;
-	requires org.apache.wicket.core;
-	requires org.apache.wicket.extensions;
-
-	requires org.slf4j;
-	requires spring.context;
-
-	requires org.bouncycastle.provider;
-	requires org.mnode.ical4j.core;
-	requires org.aspectj.tools;
-	requires org.dom4j;
-	requires simpleclient;
-	requires ch.qos.logback.classic;
-	requires ch.qos.logback.core;
-
-	//tests
-	requires transitive org.junit.jupiter.engine;
-	requires transitive org.junit.jupiter.api;
-}
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 5cc6c4d42..48dceb1ab 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -476,17 +476,7 @@
 		<!-- Test dependencies -->
 		<dependency>
 			<groupId>org.apache.openmeetings</groupId>
-			<artifactId>openmeetings-util</artifactId>
-			<version>${project.version}</version>
-			<type>test-jar</type>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.openmeetings</groupId>
-			<artifactId>openmeetings-core</artifactId>
-			<version>${project.version}</version>
-			<type>test-jar</type>
-			<scope>test</scope>
+			<artifactId>openmeetings-tests</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.cxf</groupId>
@@ -521,5 +511,9 @@
 			<groupId>org.junit.jupiter</groupId>
 			<artifactId>junit-jupiter-params</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>io.prometheus</groupId>
+			<artifactId>prometheus-metrics-exporter-servlet-jakarta</artifactId>
+		</dependency>
 	</dependencies>
 </project>
diff --git a/openmeetings-web/src/main/java/module-info.java b/openmeetings-web/src/main/java/module-info.java
index e793d828e..78eefd4db 100644
--- a/openmeetings-web/src/main/java/module-info.java
+++ b/openmeetings-web/src/main/java/module-info.java
@@ -74,7 +74,6 @@ module org.apache.openmeetings.web {
 
 	requires com.hazelcast.core;
 	requires org.danekja.jdk.serializable.functional;
-	requires simpleclient.servlet.jakarta;
 	requires xstream;
 
 	requires spring.beans;
@@ -83,4 +82,8 @@ module org.apache.openmeetings.web {
 	requires spring.web;
 
 	requires org.slf4j;
+
+	requires prometheus.metrics.core;
+	requires prometheus.metrics.model;
+	requires prometheus.metrics.exporter.servlet.jakarta;
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
index f068ddbbc..f45e2040a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
@@ -18,14 +18,27 @@
  */
 package org.apache.openmeetings.web.util.logging;
 
-import io.prometheus.client.servlet.jakarta.exporter.MetricsServlet;
+import java.io.IOException;
 
-public class OpenMeetingsMetricsServlet extends MetricsServlet {
+import org.springframework.stereotype.Service;
+
+import io.prometheus.metrics.exporter.servlet.jakarta.PrometheusMetricsServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+@Service
+public class OpenMeetingsMetricsServlet extends PrometheusMetricsServlet {
 	private static final long serialVersionUID = 1L;
+	private final TomcatStats stats;
 
 	public OpenMeetingsMetricsServlet() {
 		super();
-		new TomcatGenericExports(false).register();
+		stats = new TomcatStats(false);
 	}
 
+	@Override
+	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
+		stats.refresh();
+		super.doGet(request, response);
+	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/TomcatGenericExports.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/TomcatGenericExports.java
deleted file mode 100644
index 5403b53b2..000000000
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/TomcatGenericExports.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.web.util.logging;
-
-import java.io.InputStream;
-import java.lang.management.ManagementFactory;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-import javax.management.Attribute;
-import javax.management.AttributeList;
-import javax.management.MBeanServer;
-import javax.management.ObjectInstance;
-import javax.management.ObjectName;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import io.prometheus.client.Collector;
-import io.prometheus.client.CounterMetricFamily;
-import io.prometheus.client.GaugeMetricFamily;
-
-/**
- * Exports Tomcat metrics applicable to most most applications:
- *
- * - http session metrics - request processor metrics - thread pool metrics
- *
- * Example usage:
- *
- * <pre>
- * {@code
- *   new TomcatGenericExports(false).register();
- * }
- * </pre>
- *
- * Example metrics being exported:
- *
- * <pre>
- * tomcat_info{version="7.0.61.0",build="Apr 29 2015 14:58:03 UTC",} 1.0
- * tomcat_session_active_total{context="/foo",host="default",} 877.0
- * tomcat_session_rejected_total{context="/foo",host="default",} 0.0
- * tomcat_session_created_total{context="/foo",host="default",} 24428.0
- * tomcat_session_expired_total{context="/foo",host="default",} 23832.0
- * tomcat_session_alivetime_seconds_avg{context="/foo",host="default",} 633.0
- * tomcat_session_alivetime_seconds_max{context="/foo",host="default",} 9883.0
- * tomcat_requestprocessor_received_bytes{name="http-bio-0.0.0.0-8080",} 0.0
- * tomcat_requestprocessor_sent_bytes{name="http-bio-0.0.0.0-8080",} 5056098.0
- * tomcat_requestprocessor_time_seconds{name="http-bio-0.0.0.0-8080",} 127386.0
- * tomcat_requestprocessor_error_count{name="http-bio-0.0.0.0-8080",} 0.0
- * tomcat_requestprocessor_request_count{name="http-bio-0.0.0.0-8080",} 33709.0
- * tomcat_threads_total{pool="http-bio-0.0.0.0-8080",} 10.0
- * tomcat_threads_active_total{pool="http-bio-0.0.0.0-8080",} 2.0
- * tomcat_threads_active_max{pool="http-bio-0.0.0.0-8080",} 200.0
- * </pre>
- */
-public class TomcatGenericExports extends Collector {
-	private static final Logger log = LoggerFactory.getLogger(TomcatGenericExports.class);
-	private static final String LABEL_NAME = "name";
-	private String jmxDomain = "Catalina";
-
-	public TomcatGenericExports(boolean embedded) {
-		if (embedded) {
-			jmxDomain = "Tomcat";
-		}
-	}
-
-	private void addRequestProcessorMetrics(List<MetricFamilySamples> mfs) {
-		try {
-			final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
-			ObjectName filterName = new ObjectName(jmxDomain + ":type=GlobalRequestProcessor,name=*");
-			Set<ObjectInstance> mBeans = server.queryMBeans(filterName, null);
-
-			if (!mBeans.isEmpty()) {
-				List<String> labelNameList = List.of(LABEL_NAME);
-
-				GaugeMetricFamily requestProcessorBytesReceivedGauge = new GaugeMetricFamily(
-						"tomcat_requestprocessor_received_bytes", "Number of bytes received by this request processor",
-						labelNameList);
-
-				GaugeMetricFamily requestProcessorBytesSentGauge = new GaugeMetricFamily(
-						"tomcat_requestprocessor_sent_bytes", "Number of bytes sent by this request processor",
-						labelNameList);
-
-				GaugeMetricFamily requestProcessorProcessingTimeGauge = new GaugeMetricFamily(
-						"tomcat_requestprocessor_time_seconds", "The total time spend by this request processor",
-						labelNameList);
-
-				CounterMetricFamily requestProcessorErrorCounter = new CounterMetricFamily(
-						"tomcat_requestprocessor_error_count",
-						"The number of error request served by this request processor", labelNameList);
-
-				CounterMetricFamily requestProcessorRequestCounter = new CounterMetricFamily(
-						"tomcat_requestprocessor_request_count",
-						"The number of request served by this request processor", labelNameList);
-
-				for (final ObjectInstance mBean : mBeans) {
-					List<String> labelValueList = Collections
-							.singletonList(mBean.getObjectName().getKeyProperty("name").replaceAll("[\"\\\\]", ""));
-
-					requestProcessorBytesReceivedGauge.addMetric(labelValueList,
-							((Long) server.getAttribute(mBean.getObjectName(), "bytesReceived")).doubleValue());
-
-					requestProcessorBytesSentGauge.addMetric(labelValueList,
-							((Long) server.getAttribute(mBean.getObjectName(), "bytesSent")).doubleValue());
-
-					requestProcessorProcessingTimeGauge.addMetric(labelValueList,
-							((Long) server.getAttribute(mBean.getObjectName(), "processingTime")).doubleValue()
-									/ 1000.0);
-
-					requestProcessorErrorCounter.addMetric(labelValueList,
-							((Integer) server.getAttribute(mBean.getObjectName(), "errorCount")).doubleValue());
-
-					requestProcessorRequestCounter.addMetric(labelValueList,
-							((Integer) server.getAttribute(mBean.getObjectName(), "requestCount")).doubleValue());
-				}
-
-				mfs.add(requestProcessorBytesReceivedGauge);
-				mfs.add(requestProcessorBytesSentGauge);
-				mfs.add(requestProcessorProcessingTimeGauge);
-				mfs.add(requestProcessorRequestCounter);
-				mfs.add(requestProcessorErrorCounter);
-			}
-		} catch (Exception e) {
-			log.error("Error retrieving metric.", e);
-		}
-	}
-
-	private void addSessionMetrics(List<MetricFamilySamples> mfs) {
-		try {
-			final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
-			ObjectName filterName = new ObjectName(jmxDomain + ":type=Manager,context=*,host=*");
-			Set<ObjectInstance> mBeans = server.queryMBeans(filterName, null);
-
-			if (!mBeans.isEmpty()) {
-				List<String> labelNameList = List.of("host", "context");
-
-				GaugeMetricFamily activeSessionCountGauge = new GaugeMetricFamily("tomcat_session_active_total",
-						"Number of active sessions", labelNameList);
-
-				GaugeMetricFamily rejectedSessionCountGauge = new GaugeMetricFamily("tomcat_session_rejected_total",
-						"Number of sessions rejected due to maxActive being reached", labelNameList);
-
-				GaugeMetricFamily createdSessionCountGauge = new GaugeMetricFamily("tomcat_session_created_total",
-						"Number of sessions created", labelNameList);
-
-				GaugeMetricFamily expiredSessionCountGauge = new GaugeMetricFamily("tomcat_session_expired_total",
-						"Number of sessions that expired", labelNameList);
-
-				GaugeMetricFamily sessionAvgAliveTimeGauge = new GaugeMetricFamily(
-						"tomcat_session_alivetime_seconds_avg", "Average time an expired session had been alive",
-						labelNameList);
-
-				GaugeMetricFamily sessionMaxAliveTimeGauge = new GaugeMetricFamily(
-						"tomcat_session_alivetime_seconds_max", "Maximum time an expired session had been alive",
-						labelNameList);
-
-				GaugeMetricFamily contextStateGauge = new GaugeMetricFamily("tomcat_context_state_started",
-						"Indication if the lifecycle state of this context is STARTED", labelNameList);
-
-				for (final ObjectInstance mBean : mBeans) {
-					List<String> labelValueList = List.of(mBean.getObjectName().getKeyProperty("host"),
-							mBean.getObjectName().getKeyProperty("context"));
-
-					activeSessionCountGauge.addMetric(labelValueList,
-							((Integer) server.getAttribute(mBean.getObjectName(), "activeSessions")).doubleValue());
-
-					rejectedSessionCountGauge.addMetric(labelValueList,
-							((Integer) server.getAttribute(mBean.getObjectName(), "rejectedSessions")).doubleValue());
-
-					createdSessionCountGauge.addMetric(labelValueList,
-							((Long) server.getAttribute(mBean.getObjectName(), "sessionCounter")).doubleValue());
-
-					expiredSessionCountGauge.addMetric(labelValueList,
-							((Long) server.getAttribute(mBean.getObjectName(), "expiredSessions")).doubleValue());
-
-					sessionAvgAliveTimeGauge.addMetric(labelValueList,
-							((Integer) server.getAttribute(mBean.getObjectName(), "sessionAverageAliveTime"))
-									.doubleValue());
-
-					sessionMaxAliveTimeGauge.addMetric(labelValueList,
-							((Integer) server.getAttribute(mBean.getObjectName(), "sessionMaxAliveTime"))
-									.doubleValue());
-
-					if (server.getAttribute(mBean.getObjectName(), "stateName").equals("STARTED")) {
-						contextStateGauge.addMetric(labelValueList, 1.0);
-					} else {
-						contextStateGauge.addMetric(labelValueList, 0.0);
-					}
-				}
-
-				mfs.add(activeSessionCountGauge);
-				mfs.add(rejectedSessionCountGauge);
-				mfs.add(createdSessionCountGauge);
-				mfs.add(expiredSessionCountGauge);
-				mfs.add(sessionAvgAliveTimeGauge);
-				mfs.add(sessionMaxAliveTimeGauge);
-				mfs.add(contextStateGauge);
-			}
-		} catch (Exception e) {
-			log.error("Error retrieving metric.", e);
-		}
-	}
-
-	private void addThreadPoolMetrics(List<MetricFamilySamples> mfs) {
-		try {
-			final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
-			ObjectName filterName = new ObjectName(jmxDomain + ":type=ThreadPool,name=*");
-			Set<ObjectInstance> mBeans = server.queryMBeans(filterName, null);
-
-			if (!mBeans.isEmpty()) {
-				List<String> labelList = List.of(LABEL_NAME);
-
-				GaugeMetricFamily threadPoolCurrentCountGauge = new GaugeMetricFamily("tomcat_threads_total",
-						"Number threads in this pool.", labelList);
-
-				GaugeMetricFamily threadPoolActiveCountGauge = new GaugeMetricFamily("tomcat_threads_active_total",
-						"Number of active threads in this pool.", labelList);
-
-				GaugeMetricFamily threadPoolMaxThreadsGauge = new GaugeMetricFamily("tomcat_threads_max",
-						"Maximum number of threads allowed in this pool.", labelList);
-
-				GaugeMetricFamily threadPoolConnectionCountGauge = new GaugeMetricFamily(
-						"tomcat_connections_active_total", "Number of connections served by this pool.", labelList);
-
-				GaugeMetricFamily threadPoolMaxConnectionGauge = new GaugeMetricFamily("tomcat_connections_active_max",
-						"Maximum number of concurrent connections served by this pool.", labelList);
-
-				String[] genericAttributes = new String[] { "currentThreadCount", "currentThreadsBusy", "maxThreads",
-						"connectionCount", "maxConnections" };
-
-				for (final ObjectInstance mBean : mBeans) {
-					List<String> labelValueList = Collections
-							.singletonList(mBean.getObjectName().getKeyProperty("name").replaceAll("[\"\\\\]", ""));
-					AttributeList attributeList = server.getAttributes(mBean.getObjectName(), genericAttributes);
-					for (Attribute attribute : attributeList.asList()) {
-						switch (attribute.getName()) {
-							case "currentThreadCount":
-								threadPoolCurrentCountGauge.addMetric(labelValueList,
-										((Integer) attribute.getValue()).doubleValue());
-								break;
-							case "currentThreadsBusy":
-								threadPoolActiveCountGauge.addMetric(labelValueList,
-										((Integer) attribute.getValue()).doubleValue());
-								break;
-							case "maxThreads":
-								threadPoolMaxThreadsGauge.addMetric(labelValueList,
-										((Integer) attribute.getValue()).doubleValue());
-								break;
-							case "connectionCount":
-								threadPoolConnectionCountGauge.addMetric(labelValueList,
-										((Long) attribute.getValue()).doubleValue());
-								break;
-							case "maxConnections":
-								threadPoolMaxConnectionGauge.addMetric(labelValueList,
-										((Integer) attribute.getValue()).doubleValue());
-								break;
-							default:
-								log.warn("Unexpected attribute {}", attribute);
-								break;
-						}
-					}
-				}
-
-				addNonEmptyMetricFamily(mfs, threadPoolCurrentCountGauge);
-				addNonEmptyMetricFamily(mfs, threadPoolActiveCountGauge);
-				addNonEmptyMetricFamily(mfs, threadPoolMaxThreadsGauge);
-				addNonEmptyMetricFamily(mfs, threadPoolConnectionCountGauge);
-				addNonEmptyMetricFamily(mfs, threadPoolMaxConnectionGauge);
-			}
-		} catch (Exception e) {
-			log.error("Error retrieving metric: {}", e.getMessage());
-		}
-	}
-
-	private void addVersionInfo(List<MetricFamilySamples> mfs) {
-		GaugeMetricFamily tomcatInfo = new GaugeMetricFamily("tomcat_info", "tomcat version info",
-				List.of("version", "build"));
-		try (InputStream is = getClass().getResourceAsStream("/org/apache/catalina/util/ServerInfo.properties")) {
-			Properties props = new Properties();
-			props.load(is);
-			//server info can be get as props.getProperty("server.info");
-			tomcatInfo.addMetric(List.of(props.getProperty("server.number"), props.getProperty("server.built")), 1);
-		} catch (Exception t) {
-			log.warn("Unable to read Tomcat version: ", t);
-		}
-		mfs.add(tomcatInfo);
-	}
-
-	private void addNonEmptyMetricFamily(List<MetricFamilySamples> mfs, GaugeMetricFamily metricFamily) {
-		if (!metricFamily.samples.isEmpty()) {
-			mfs.add(metricFamily);
-		}
-	}
-
-	@Override
-	public List<MetricFamilySamples> collect() {
-		List<MetricFamilySamples> mfs = new ArrayList<>();
-		addSessionMetrics(mfs);
-		addThreadPoolMetrics(mfs);
-		addRequestProcessorMetrics(mfs);
-		addVersionInfo(mfs);
-		return mfs;
-
-	}
-}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/TomcatStats.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/TomcatStats.java
new file mode 100644
index 000000000..cd1f9842d
--- /dev/null
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/TomcatStats.java
@@ -0,0 +1,314 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.util.logging;
+
+import java.io.InputStream;
+import java.lang.management.ManagementFactory;
+import java.util.Properties;
+import java.util.Set;
+
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.AttributeNotFoundException;
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanException;
+import javax.management.MBeanServer;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.prometheus.metrics.core.metrics.Gauge;
+
+/**
+ * Exports Tomcat metrics applicable to most applications:
+ *
+ * - http session metrics - request processor metrics - thread pool metrics
+ *
+ * Example usage:
+ *
+ * <pre>
+ * {@code
+ *   TomcatStats stats = new TomcatStats(false);
+ *   stats.refresh();
+ * }
+ * </pre>
+ *
+ * Example metrics being exported:
+ *
+ * <pre>
+ * tomcat_info{version="7.0.61.0",build="Apr 29 2015 14:58:03 UTC",} 1.0
+ * tomcat_session_active{context="/foo",host="default",} 877.0
+ * tomcat_session_rejected{context="/foo",host="default",} 0.0
+ * tomcat_session_constructed{context="/foo",host="default",} 24428.0
+ * tomcat_session_expired{context="/foo",host="default",} 23832.0
+ * tomcat_session_alivetime_seconds_avg{context="/foo",host="default",} 633.0
+ * tomcat_session_alivetime_seconds_max{context="/foo",host="default",} 9883.0
+ * tomcat_requestprocessor_received_bytes{name="http-bio-0.0.0.0-8080",} 0.0
+ * tomcat_requestprocessor_sent_bytes{name="http-bio-0.0.0.0-8080",} 5056098.0
+ * tomcat_requestprocessor_time_seconds{name="http-bio-0.0.0.0-8080",} 127386.0
+ * tomcat_requestprocessor_error_count{name="http-bio-0.0.0.0-8080",} 0.0
+ * tomcat_requestprocessor_request_count{name="http-bio-0.0.0.0-8080",} 33709.0
+ * tomcat_threads{pool="http-bio-0.0.0.0-8080",} 10.0
+ * tomcat_threads_active{pool="http-bio-0.0.0.0-8080",} 2.0
+ * tomcat_threads_active_max{pool="http-bio-0.0.0.0-8080",} 200.0
+ * </pre>
+ */
+
+public class TomcatStats {
+	private static final Logger log = LoggerFactory.getLogger(TomcatStats.class);
+
+	private static final String[] LBL_NAMES = new String[]{"name"};
+	private static final Gauge rqBytesReceived = Gauge.builder()
+			.name("tomcat_requestprocessor_received_bytes")
+			.help("Number of bytes received by this request processor")
+			.labelNames(LBL_NAMES)
+			.register();
+	private static final Gauge rqBytesSent = Gauge.builder()
+			.name("tomcat_requestprocessor_sent_bytes")
+			.help("Number of bytes sent by this request processor")
+			.labelNames(LBL_NAMES)
+			.register();
+	private static final Gauge rqTime = Gauge.builder()
+			.name("tomcat_requestprocessor_time_seconds")
+			.help("The total time spend by this request processor")
+			.labelNames(LBL_NAMES)
+			.register();
+	private static final Gauge rqErrors = Gauge.builder()
+			.name("tomcat_requestprocessor_error_count")
+			.help("The number of error request served by this request processor")
+			.labelNames(LBL_NAMES)
+			.register();
+	private static final Gauge rqRequests = Gauge.builder()
+			.name("tomcat_requestprocessor_request_count")
+			.help("The number of request served by this request processor")
+			.labelNames(LBL_NAMES)
+			.register();
+
+	private static final Gauge threads = Gauge.builder()
+			.name("tomcat_threads")
+			.help("Number threads in this pool.")
+			.labelNames(LBL_NAMES)
+			.register();
+	private static final Gauge threadsActive = Gauge.builder()
+			.name("tomcat_threads_active")
+			.help("Number of active threads in this pool.")
+			.labelNames(LBL_NAMES)
+			.register();
+	private static final Gauge threadsMax = Gauge.builder()
+			.name("tomcat_threads_max")
+			.help("Maximum number of threads allowed in this pool.")
+			.labelNames(LBL_NAMES)
+			.register();
+	private static final Gauge connsActive = Gauge.builder()
+			.name("tomcat_connections_active")
+			.help("Number of connections served by this pool.")
+			.labelNames(LBL_NAMES)
+			.register();
+	private static final Gauge connsActiveMax = Gauge.builder()
+			.name("tomcat_connections_active_max")
+			.help("Maximum number of concurrent connections served by this pool.")
+			.labelNames(LBL_NAMES)
+			.register();
+
+	private static final String[] SESSION_LBL_NAMES = new String[]{"host", "context"};
+	private static final Gauge sessionActive = Gauge.builder()
+			.name("tomcat_session_active")
+			.help("Number of active sessions")
+			.labelNames(SESSION_LBL_NAMES)
+			.register();
+	private static final Gauge sessionRejected = Gauge.builder()
+			.name("tomcat_session_rejected")
+			.help("Number of sessions rejected due to maxActive being reached")
+			.labelNames(SESSION_LBL_NAMES)
+			.register();
+	private static final Gauge sessionCreated = Gauge.builder()
+			.name("tomcat_session_constructed")
+			.help("Number of sessions created")
+			.labelNames(SESSION_LBL_NAMES)
+			.register();
+	private static final Gauge sessionExpired = Gauge.builder()
+			.name("tomcat_session_expired")
+			.help("Number of sessions that expired")
+			.labelNames(SESSION_LBL_NAMES)
+			.register();
+	private static final Gauge sessionAvgAlive = Gauge.builder()
+			.name("tomcat_session_alivetime_seconds_avg")
+			.help("Average time an expired session had been alive")
+			.labelNames(SESSION_LBL_NAMES)
+			.register();
+	private static final Gauge sessionMaxAlive = Gauge.builder()
+			.name("tomcat_session_alivetime_seconds_max")
+			.help("Maximum time an expired session had been alive")
+			.labelNames(SESSION_LBL_NAMES)
+			.register();
+	private static final Gauge ctxState = Gauge.builder()
+			.name("tomcat_context_state_started")
+			.help("Indication if the lifecycle state of this context is STARTED")
+			.labelNames(SESSION_LBL_NAMES)
+			.register();
+
+	private static final Gauge version = Gauge.builder()
+			.name("tomcat_details")
+			.help("tomcat version info")
+			.labelNames("version", "build")
+			.register();
+
+	private final String jmxDomain;
+
+	public TomcatStats(boolean embedded) {
+		jmxDomain = embedded ? "Tomcat" : "Catalina";
+	}
+
+	private double getAttr(Attribute attribute) {
+		return ((Number)attribute.getValue()).doubleValue();
+	}
+
+	private double getAttr(final MBeanServer server, final ObjectInstance mBean, String attr) throws InstanceNotFoundException, AttributeNotFoundException, ReflectionException, MBeanException {
+		return ((Number)server.getAttribute(mBean.getObjectName(), attr)).doubleValue();
+	}
+
+	private void updateRequestProcessorMetrics() {
+		try {
+			final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+			ObjectName filterName = new ObjectName(jmxDomain + ":type=GlobalRequestProcessor,name=*");
+			Set<ObjectInstance> mBeans = server.queryMBeans(filterName, null);
+
+			for (final ObjectInstance mBean : mBeans) {
+				String labels = mBean.getObjectName().getKeyProperty("name").replaceAll("[\"\\\\]", "");
+
+				rqBytesReceived.labelValues(labels)
+						.set(getAttr(server, mBean, "bytesReceived"));
+
+				rqBytesSent.labelValues(labels)
+						.set(getAttr(server, mBean, "bytesSent"));
+
+				rqTime.labelValues(labels)
+						.set(getAttr(server, mBean, "processingTime") / 1000.0);
+
+				rqErrors.labelValues(labels)
+						.set(getAttr(server, mBean, "errorCount"));
+
+				rqRequests.labelValues(labels)
+						.set(getAttr(server, mBean, "requestCount"));
+			}
+		} catch (Exception e) {
+			log.error("Error retrieving RequestProcessor metric.", e);
+		}
+	}
+
+	private void updateSessionMetrics() {
+		try {
+			final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+			ObjectName filterName = new ObjectName(jmxDomain + ":type=Manager,context=*,host=*");
+			Set<ObjectInstance> mBeans = server.queryMBeans(filterName, null);
+
+			for (final ObjectInstance mBean : mBeans) {
+				String[] labelValues = new String[] {
+						mBean.getObjectName().getKeyProperty("host")
+						, mBean.getObjectName().getKeyProperty("context")};
+
+				sessionActive.labelValues(labelValues)
+						.set(getAttr(server, mBean, "activeSessions"));
+
+				sessionRejected.labelValues(labelValues)
+						.set(getAttr(server, mBean, "rejectedSessions"));
+
+				sessionCreated.labelValues(labelValues)
+						.set(getAttr(server, mBean, "sessionCounter"));
+
+				sessionExpired.labelValues(labelValues)
+						.set(getAttr(server, mBean, "expiredSessions"));
+
+				sessionAvgAlive.labelValues(labelValues)
+						.set(getAttr(server, mBean, "sessionAverageAliveTime"));
+
+				sessionMaxAlive.labelValues(labelValues)
+						.set(getAttr(server, mBean, "sessionMaxAliveTime"));
+
+				ctxState.labelValues(labelValues)
+						.set("STARTED".equals(server.getAttribute(mBean.getObjectName(), "stateName")) ? 1. : 0.);
+			}
+		} catch (Exception e) {
+			log.error("Error retrieving Session metric.", e);
+		}
+	}
+
+	private void updateThreadPoolMetrics() {
+		try {
+			final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+			ObjectName filterName = new ObjectName(jmxDomain + ":type=ThreadPool,name=*");
+			Set<ObjectInstance> mBeans = server.queryMBeans(filterName, null);
+
+			if (!mBeans.isEmpty()) {
+				String[] genericAttributes = new String[] { "currentThreadCount", "currentThreadsBusy", "maxThreads",
+						"connectionCount", "maxConnections" };
+
+				for (final ObjectInstance mBean : mBeans) {
+					String label = mBean.getObjectName().getKeyProperty("name").replaceAll("[\"\\\\]", "");
+					AttributeList attributeList = server.getAttributes(mBean.getObjectName(), genericAttributes);
+					for (Attribute attribute : attributeList.asList()) {
+						switch (attribute.getName()) {
+							case "currentThreadCount":
+								threads.labelValues(label).set(getAttr(attribute));
+								break;
+							case "currentThreadsBusy":
+								threadsActive.labelValues(label).set(getAttr(attribute));
+								break;
+							case "maxThreads":
+								threadsMax.labelValues(label).set(getAttr(attribute));
+								break;
+							case "connectionCount":
+								connsActive.labelValues(label).set(getAttr(attribute));
+								break;
+							case "maxConnections":
+								connsActiveMax.labelValues(label).set(getAttr(attribute));
+								break;
+							default:
+								log.warn("Unexpected attribute {}", attribute);
+								break;
+						}
+					}
+				}
+			}
+		} catch (Exception e) {
+			log.error("Error retrieving ThreadPool metric: {}", e.getMessage());
+		}
+	}
+
+	private void updateVersionInfo() {
+		try (InputStream is = getClass().getResourceAsStream("/org/apache/catalina/util/ServerInfo.properties")) {
+			Properties props = new Properties();
+			props.load(is);
+			//server info can be get as props.getProperty("server.info");
+			version.labelValues(props.getProperty("server.number"), props.getProperty("server.built")).set(1.);
+		} catch (Exception t) {
+			log.warn("Unable to read Tomcat version: ", t);
+		}
+	}
+
+	public void refresh() {
+		updateRequestProcessorMetrics();
+		updateSessionMetrics();
+		updateThreadPoolMetrics();
+		updateVersionInfo();
+	}
+}
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
index a069c52cd..d3503511c 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
@@ -41,7 +41,7 @@
 	<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
 	<!-- Start annotation Prometheus metrics
 	<aop:aspectj-autoproxy/>
-	End annotation -->
+		End annotation -->
 	<context:annotation-config />
 	<context:component-scan base-package="org.apache.openmeetings" />
 
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/web.xml b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
index 7dbe3091b..769f299b4 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/web.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
@@ -57,34 +57,6 @@
 		</init-param>
 	</filter>
 
-	<!-- Start Prometheus Filter HTTP Servlet metrics
-	<filter>
-		<filter-name>prometheusFilter</filter-name>
-		<filter-class>io.prometheus.client.servlet.jakarta.filter.MetricsFilter</filter-class>
-		<init-param>
-			<param-name>metric-name</param-name>
-			<param-value>webapp_metrics_filter</param-value>
-		</init-param>
-		<init-param>
-			<param-name>help</param-name>
-			<param-value>This is the help for your metrics filter</param-value>
-		</init-param>
-		<init-param>
-			<param-name>buckets</param-name>
-			<param-value>0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10</param-value>
-		</init-param>
-		<init-param>
-			<param-name>path-components</param-name>
-			<param-value>0</param-value>
-		</init-param>
-	</filter>
-
-	<filter-mapping>
-		<filter-name>prometheusFilter</filter-name>
-		<url-pattern>/*</url-pattern>
-	</filter-mapping>
-	End Prometheus -->
-
 	<filter-mapping>
 		<filter-name>OpenmeetingsApplication</filter-name>
 		<url-pattern>/*</url-pattern>
@@ -94,6 +66,17 @@
 		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 	</listener>
 
+	<!-- Start Prometheus export metrics HTTP
+	<servlet>
+		<servlet-name>metrics</servlet-name>
+		<servlet-class>org.apache.openmeetings.web.util.logging.OpenMeetingsMetricsServlet</servlet-class>
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>metrics</servlet-name>
+		<url-pattern>/services/metrics/</url-pattern>
+	</servlet-mapping>
+		End Prometheus -->
+
 	<servlet>
 		<servlet-name>CXFServlet</servlet-name>
 		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
@@ -109,17 +92,6 @@
 		<url-pattern>/services/*</url-pattern>
 	</servlet-mapping>
 
-	<!-- Start Prometheus export metrics HTTP
-	<servlet>
-		<servlet-name>metrics</servlet-name>
-		<servlet-class>org.apache.openmeetings.web.util.logging.OpenMeetingsMetricsServlet</servlet-class>
-	</servlet>
-	<servlet-mapping>
-		<servlet-name>metrics</servlet-name>
-		<url-pattern>/services/metrics/</url-pattern>
-	</servlet-mapping>
-	End Prometheus -->
-
 	<mime-mapping>
 		<extension>inc</extension>
 		<mime-type>text/plain</mime-type>
diff --git a/openmeetings-web/src/test/java/module-info.test b/openmeetings-web/src/test/java/module-info.test
deleted file mode 100644
index 428ba6791..000000000
--- a/openmeetings-web/src/test/java/module-info.test
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-open module org.apache.openmeetings.web {
-	// This one should be in-sync with module-info.java
-	requires org.apache.openmeetings.core;
-	requires org.apache.openmeetings.db;
-	requires org.apache.openmeetings.install;
-	requires org.apache.openmeetings.mediaserver;
-	requires org.apache.openmeetings.service;
-	requires org.apache.openmeetings.util;
-	requires org.apache.openmeetings.webservice;
-
-	requires com.github.openjson;
-
-	requires totp;
-
-	requires org.apache.commons.io;
-	requires org.apache.commons.fileupload2.core;
-	requires org.apache.commons.fileupload2.jakarta;
-	requires org.apache.commons.lang3;
-
-	requires org.apache.openjpa;
-
-	requires org.apache.httpcomponents.httpclient;
-
-	requires org.apache.wicket.auth.roles;
-	requires org.apache.wicket.core;
-	requires org.apache.wicket.devutils;
-	requires org.apache.wicket.extensions;
-	requires org.apache.wicket.ioc;
-	requires org.apache.wicket.request;
-	requires org.apache.wicket.spring;
-	requires org.apache.wicket.util;
-	requires org.apache.wicket.websocket.core;
-
-	requires wicketstuff.dashboard.core;
-	requires wicketstuff.datastore.hazelcast;
-	requires wicketstuff.select2;
-	requires wicketstuff.urlfragment;
-	requires jqplot;
-	requires jqplot4java;
-	requires wicket.bootstrap.extensions;
-	requires wicket.bootstrap.core;
-	requires wicket.bootstrap.themes;
-	requires wicket.webjars;
-	requires wicket.jquery.ui;
-	requires wicket.jquery.ui.calendar;
-	requires wicket.jquery.ui.core;
-	requires wicket.jquery.ui.plugins;
-
-	requires jakarta.annotation;
-	requires jakarta.inject;
-	requires jakarta.servlet;
-	requires jakarta.websocket.client;
-	requires jakarta.ws.rs;
-
-	requires java.net.http;
-	requires java.management;
-	requires java.sql;
-
-	requires com.hazelcast.core;
-	requires org.danekja.jdk.serializable.functional;
-	requires simpleclient.servlet.jakarta;
-	requires xstream;
-
-	requires spring.beans;
-	requires spring.context;
-	requires spring.orm;
-	requires spring.web;
-
-	requires org.slf4j;
-
-	//tests
-	requires org.junit.jupiter.api;
-}
diff --git a/openmeetings-webservice/pom.xml b/openmeetings-webservice/pom.xml
index acb255775..34409e16d 100644
--- a/openmeetings-webservice/pom.xml
+++ b/openmeetings-webservice/pom.xml
@@ -34,7 +34,7 @@
 	</properties>
 	<build>
 		<plugins>
-			<!--plugin>
+			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
 				<executions>
@@ -51,10 +51,9 @@
 						<goals>
 							<goal>javadoc-no-fork</goal>
 						</goals>
-						<phase>generate-resources</phase>
 					</execution>
 				</executions>
-			</plugin-->
+			</plugin>
 			<plugin>
 				<groupId>io.openapitools.swagger</groupId>
 				<artifactId>swagger-maven-plugin</artifactId>
@@ -196,12 +195,5 @@
 			<groupId>io.swagger.core.v3</groupId>
 			<artifactId>swagger-annotations</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>org.apache.openmeetings</groupId>
-			<artifactId>openmeetings-util</artifactId>
-			<version>${project.version}</version>
-			<type>test-jar</type>
-			<scope>test</scope>
-		</dependency>
 	</dependencies>
 </project>
diff --git a/openmeetings-webservice/src/test/java/module-info.test b/openmeetings-webservice/src/test/java/module-info.test
deleted file mode 100644
index d1c1fe2b3..000000000
--- a/openmeetings-webservice/src/test/java/module-info.test
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-open module org.apache.openmeetings.webservice {
-	// This one should be in-sync with module-info.java
-	exports org.apache.openmeetings.webservice.util;
-
-	requires org.apache.openmeetings.core;
-	requires org.apache.openmeetings.db;
-	requires org.apache.openmeetings.service;
-	requires org.apache.openmeetings.util;
-
-	requires com.github.openjson;
-	requires org.apache.commons.lang3;
-
-	requires jakarta.annotation;
-	requires jakarta.inject;
-	requires jakarta.jws;
-	requires jakarta.servlet;
-	requires jakarta.xml.ws;
-	requires jakarta.ws.rs;
-
-	requires org.apache.cxf.core;
-	requires org.apache.cxf.frontend.jaxrs;
-
-	requires org.apache.pdfbox;
-
-	requires org.apache.wicket.core;
-	requires org.apache.wicket.extensions;
-	requires org.apache.wicket.util;
-
-	requires io.swagger.v3.oas.annotations;
-	requires java.desktop;
-
-	requires spring.beans;
-	requires spring.context;
-
-	requires org.slf4j;
-
-	//tests
-	requires org.junit.jupiter.api;
-}
diff --git a/pom.xml b/pom.xml
index af6076ff8..a9c2478d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,7 +91,7 @@
 		<tomcat.version>10.1.13</tomcat.version>
 		<ical4j.version>4.0.0-beta9</ical4j.version>
 		<cxf.version>4.0.3</cxf.version>
-		<io.prometheus.version>0.16.0</io.prometheus.version>
+		<io.prometheus.version>1.0.0</io.prometheus.version>
 		<aspectjtools.version>1.9.20.1</aspectjtools.version>
 		<simple-xml.version>2.7.1</simple-xml.version>
 		<jettison.version>1.5.4</jettison.version>
@@ -452,6 +452,12 @@
 				<artifactId>openmeetings-webservice</artifactId>
 				<version>${project.version}</version>
 			</dependency>
+			<dependency>
+				<groupId>org.apache.openmeetings</groupId>
+				<artifactId>openmeetings-tests</artifactId>
+				<version>${project.version}</version>
+				<scope>test</scope>
+			</dependency>
 			<dependency>
 				<groupId>org.apache.openmeetings</groupId>
 				<artifactId>openmeetings-util</artifactId>
@@ -570,7 +576,12 @@
 			</dependency>
 			<dependency>
 				<groupId>io.prometheus</groupId>
-				<artifactId>simpleclient_servlet_jakarta</artifactId>
+				<artifactId>prometheus-metrics-core</artifactId>
+				<version>${io.prometheus.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>io.prometheus</groupId>
+				<artifactId>prometheus-metrics-exporter-servlet-jakarta</artifactId>
 				<version>${io.prometheus.version}</version>
 			</dependency>
 			<dependency>
@@ -1159,6 +1170,36 @@
 					</execution>
 				</executions>
 			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-source-plugin</artifactId>
+				<configuration>
+					<skip>${om.quick.build}</skip>
+				</configuration>
+				<executions>
+					<execution>
+						<id>attach-sources</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<configuration>
+					<skip>${om.quick.build}</skip>
+				</configuration>
+				<executions>
+					<execution>
+						<id>attach-javadocs</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
 		</plugins>
 		<pluginManagement>
 			<plugins>
@@ -1169,7 +1210,6 @@
 						<doclint>none</doclint>
 						<additionalOptions>-html5</additionalOptions>
 						<source>${jdk.version}</source>
-						<javadocVersion>${jdk.version}</javadocVersion>
 						<notimestamp>true</notimestamp>
 						<links>
 							<link>https://openmeetings.apache.org/openmeetings-db/apidocs/</link>
@@ -1274,9 +1314,13 @@
 						<excludes>
 							<exclude/>
 						</excludes>
+						<argLine>@{argLine} --add-modules java.se --add-exports java.base/jdk.internal.ref=ALL-UNNAMED
+								--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED
+								--add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED
+								--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED
+								--add-opens java.base/java.util=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED
+								--add-opens=java.base/sun.security.x509=ALL-UNNAMED</argLine>
 						<useModulePath>false</useModulePath>
-						<!--argLine>-Xint ${argLine}</argLine-->
-						<argLine>@{argLine} --add-modules java.se --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED --add-opens=java.base/sun.security.x509=A [...]
 					</configuration>
 				</plugin>
 				<plugin>
@@ -1709,6 +1753,7 @@
 				<activeByDefault>true</activeByDefault>
 			</activation>
 			<modules>
+				<module>openmeetings-tests</module>
 				<module>openmeetings-util</module>
 				<module>openmeetings-db</module>
 				<module>openmeetings-core</module>
@@ -1740,33 +1785,6 @@
 			</properties>
 			<build>
 				<plugins>
-					<plugin>
-						<groupId>org.apache.maven.plugins</groupId>
-						<artifactId>maven-source-plugin</artifactId>
-						<executions>
-							<execution>
-								<id>attach-sources</id>
-								<goals>
-									<goal>jar</goal>
-								</goals>
-							</execution>
-						</executions>
-					</plugin>
-					<plugin>
-						<groupId>org.apache.maven.plugins</groupId>
-						<artifactId>maven-javadoc-plugin</artifactId>
-						<configuration>
-							<skip>false</skip>
-						</configuration>
-						<executions>
-							<execution>
-								<id>attach-javadocs</id>
-								<goals>
-									<goal>jar</goal>
-								</goals>
-							</execution>
-						</executions>
-					</plugin>
 					<plugin>
 						<groupId>net.nicoulaj.maven.plugins</groupId>
 						<artifactId>checksum-maven-plugin</artifactId>


[openmeetings] 13/27: [OPENMEETINGS-2756] spring, cxf, tomcat, wicket

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit ebf2f8247df6ba80865f2b9730afad67127cba98
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Dec 29 13:34:15 2022 +0700

    [OPENMEETINGS-2756] spring, cxf, tomcat, wicket
---
 .../java/org/apache/openmeetings/IApplication.java |  2 +-
 .../openmeetings/db/util/ApplicationHelper.java    |  6 ++---
 .../calendar/caldav/AppointmentManager.java        |  4 +--
 .../calendar/caldav/handler/CtagHandler.java       |  2 +-
 .../calendar/caldav/handler/EtagsHandler.java      |  6 ++---
 .../calendar/caldav/handler/MultigetHandler.java   |  2 +-
 .../calendar/caldav/handler/WebDAVSyncHandler.java |  8 +++---
 .../openmeetings/util/OMContextListener.java       |  4 +--
 .../web/common/upload/UploadResourceReference.java |  2 +-
 .../web/room/GroupCustomCssResourceReference.java  |  2 +-
 .../openmeetings/web/user/chat/ChatToolbar.java    |  2 +-
 .../web/util/FileItemResourceReference.java        |  2 +-
 .../web/util/GroupLogoResourceReference.java       |  2 +-
 .../web/util/ProfileImageResourceReference.java    |  2 +-
 .../org/apache/openmeetings/backup/TestExport.java |  4 +--
 .../web/app/TestOmAuthenticationStrategy.java      |  2 +-
 .../webservice/AbstractWebServiceTest.java         | 11 ++++----
 .../webservice/TestCalendarService.java            |  4 +--
 .../openmeetings/webservice/TestErrorService.java  |  2 +-
 .../openmeetings/webservice/TestGroupService.java  |  8 +++---
 .../openmeetings/webservice/TestUserService.java   |  6 ++---
 .../webservice/CalendarWebService.java             | 24 ++++++++---------
 .../openmeetings/webservice/ErrorWebService.java   | 20 +++++++-------
 .../openmeetings/webservice/FileWebService.java    | 24 ++++++++---------
 .../openmeetings/webservice/GroupWebService.java   | 22 +++++++--------
 .../openmeetings/webservice/InfoWebService.java    | 12 ++++-----
 .../openmeetings/webservice/NetTestWebService.java | 19 ++++++-------
 .../webservice/RecordingWebService.java            | 20 +++++++-------
 .../openmeetings/webservice/RoomWebService.java    | 24 ++++++++---------
 .../openmeetings/webservice/UserWebService.java    | 24 ++++++++---------
 .../openmeetings/webservice/WbWebService.java      | 23 ++++++++--------
 .../webservice/error/ServiceException.java         |  2 +-
 .../util/AppointmentListMessageBodyWriter.java     | 10 +++----
 .../util/AppointmentMessageBodyReader.java         | 10 +++----
 .../util/AppointmentMessageBodyWriter.java         | 10 +++----
 .../webservice/util/AppointmentParamConverter.java |  2 +-
 .../webservice/util/CalendarParamConverter.java    |  2 +-
 .../webservice/util/DateParamConverter.java        |  2 +-
 .../webservice/util/OmExceptionHandler.java        |  4 +--
 .../webservice/util/OmParamConverterProvider.java  |  4 +--
 .../webservice/util/RateLimitRequestFilter.java    | 15 ++++++-----
 .../openmeetings/webservice/util/RateLimited.java  |  2 +-
 .../webservice/util/UserMessageBodyWriter.java     | 10 +++----
 .../webservice/util/UserParamConverter.java        |  2 +-
 pom.xml                                            | 31 +++++++++++-----------
 45 files changed, 201 insertions(+), 200 deletions(-)

diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
index d078f2945..fb0695fa1 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
@@ -23,7 +23,7 @@ import java.util.Set;
 import java.util.function.Supplier;
 
 import javax.annotation.Nonnull;
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.util.ws.IClusterWsMessage;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
index 89f3bee09..8c3db65f8 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ApplicationHelper.java
@@ -29,9 +29,9 @@ import java.util.Enumeration;
 import java.util.Map;
 import java.util.UUID;
 
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletContextEvent;
 
 import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.IWebSession;
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java
index 5c858eade..573a79905 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openmeetings.service.calendar.caldav;
 
-import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
-import static javax.servlet.http.HttpServletResponse.SC_OK;
+import static jakarta.servlet.http.HttpServletResponse.SC_NO_CONTENT;
+import static jakarta.servlet.http.HttpServletResponse.SC_OK;
 
 import java.io.IOException;
 import java.net.URI;
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/CtagHandler.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/CtagHandler.java
index 3ed451db1..bf7c6525c 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/CtagHandler.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/CtagHandler.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.service.calendar.caldav.handler;
 
-import static javax.servlet.http.HttpServletResponse.SC_OK;
+import static jakarta.servlet.http.HttpServletResponse.SC_OK;
 
 import java.io.IOException;
 
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/EtagsHandler.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/EtagsHandler.java
index 262cd5051..a05b1f4ba 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/EtagsHandler.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/EtagsHandler.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openmeetings.service.calendar.caldav.handler;
 
-import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
-import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
-import static javax.servlet.http.HttpServletResponse.SC_OK;
+import static jakarta.servlet.http.HttpServletResponse.SC_NOT_FOUND;
+import static jakarta.servlet.http.HttpServletResponse.SC_NO_CONTENT;
+import static jakarta.servlet.http.HttpServletResponse.SC_OK;
 
 import java.io.IOException;
 import java.net.URI;
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/MultigetHandler.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/MultigetHandler.java
index c7483f195..7c7f66a19 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/MultigetHandler.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/MultigetHandler.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.service.calendar.caldav.handler;
 
-import static javax.servlet.http.HttpServletResponse.SC_OK;
+import static jakarta.servlet.http.HttpServletResponse.SC_OK;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/WebDAVSyncHandler.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/WebDAVSyncHandler.java
index 31d86739e..a041683eb 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/WebDAVSyncHandler.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler/WebDAVSyncHandler.java
@@ -19,10 +19,10 @@
 package org.apache.openmeetings.service.calendar.caldav.handler;
 
 
-import static javax.servlet.http.HttpServletResponse.SC_FORBIDDEN;
-import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
-import static javax.servlet.http.HttpServletResponse.SC_OK;
-import static javax.servlet.http.HttpServletResponse.SC_PRECONDITION_FAILED;
+import static jakarta.servlet.http.HttpServletResponse.SC_FORBIDDEN;
+import static jakarta.servlet.http.HttpServletResponse.SC_NOT_FOUND;
+import static jakarta.servlet.http.HttpServletResponse.SC_OK;
+import static jakarta.servlet.http.HttpServletResponse.SC_PRECONDITION_FAILED;
 import static org.apache.jackrabbit.webdav.DavServletResponse.SC_INSUFFICIENT_SPACE_ON_RESOURCE;
 
 import java.io.IOException;
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
index 409de1771..8d0f84eac 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OMContextListener.java
@@ -21,8 +21,8 @@ package org.apache.openmeetings.util;
 import java.io.IOException;
 import java.io.InputStream;
 
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
+import jakarta.servlet.ServletContextEvent;
+import jakarta.servlet.ServletContextListener;
 
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.LoggerFactory;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java
index ee93c650f..e27570510 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java
@@ -26,7 +26,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MediaType;
 
 import org.apache.commons.fileupload.FileItem;
 import org.apache.openmeetings.core.util.WebSocketHelper;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/GroupCustomCssResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/GroupCustomCssResourceReference.java
index bca95d732..951961fd7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/GroupCustomCssResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/GroupCustomCssResourceReference.java
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.util.OmFileHelper.getGroupCss;
 import java.io.File;
 import java.io.IOException;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.IResource;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
index 15501b539..868941abb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
@@ -31,7 +31,7 @@ import static org.apache.openmeetings.web.room.RoomPanel.isModerator;
 
 import java.util.List;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.basic.ChatDao;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
index 4b55126e9..8f83817d5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
@@ -24,7 +24,7 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Map.Entry;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.openmeetings.db.dto.room.Whiteboard;
 import org.apache.openmeetings.db.dto.room.Whiteboards;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java
index 23366bbc0..fca3b4805 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java
@@ -27,7 +27,7 @@ import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import java.io.File;
 import java.io.IOException;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
index ce7959542..0fe896f25 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
@@ -33,7 +33,7 @@ import org.apache.wicket.util.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
index 6325193a4..4264812bc 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
@@ -30,8 +30,8 @@ import java.io.StringWriter;
 import java.nio.file.Paths;
 import java.time.LocalDate;
 
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Marshaller;
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.Marshaller;
 
 import org.apache.openmeetings.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.file.FileItemDao;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java
index 8c0a7c1f4..66929f191 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java
@@ -23,7 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
-import javax.servlet.http.Cookie;
+import jakarta.servlet.http.Cookie;
 
 import org.apache.openmeetings.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.entity.user.User;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
index a9c15588d..3e40e1a2a 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.webservice;
 
 import static java.util.UUID.randomUUID;
-import static javax.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED;
 import static org.apache.openmeetings.AbstractOmServerTest.createPass;
 import static org.apache.openmeetings.AbstractOmServerTest.ensureSchema;
 import static org.apache.openmeetings.AbstractOmServerTest.soapUsername;
@@ -35,9 +34,6 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.ws.rs.core.Form;
-import javax.ws.rs.core.MediaType;
-
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
@@ -56,6 +52,9 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+import jakarta.ws.rs.core.Form;
+import jakarta.ws.rs.core.MediaType;
+
 @Tag("webservice")
 public abstract class AbstractWebServiceTest {
 	private static final String HOST = "localhost";
@@ -115,7 +114,7 @@ public abstract class AbstractWebServiceTest {
 	protected static RoomDTO create(String sid, RoomDTO r) {
 		return getClient(getRoomUrl())
 				.query("sid", sid)
-				.type(APPLICATION_FORM_URLENCODED)
+				.type(MediaType.APPLICATION_FORM_URLENCODED)
 				.post(new Form().param("room", r.toString()), RoomDTO.class);
 	}
 
@@ -146,7 +145,7 @@ public abstract class AbstractWebServiceTest {
 		UserDTO user = getClient(getUserUrl())
 				.path("/")
 				.query("sid", r.getMessage())
-				.type(APPLICATION_FORM_URLENCODED)
+				.type(MediaType.APPLICATION_FORM_URLENCODED)
 				.post(new Form().param("user", dto.toString()).param("confirm", "" + false), UserDTO.class);
 		assertNotNull(user.getId());
 		u.setId(user.getId());
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
index ff962b016..c4f6420f3 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
@@ -34,8 +34,8 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
-import javax.ws.rs.core.Form;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Form;
+import jakarta.ws.rs.core.Response;
 
 import org.apache.openmeetings.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java
index 42124d665..02e27cdbd 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java
@@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.util.Locale;
 
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response;
 
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestGroupService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestGroupService.java
index 89bfa7ea1..1c2ff2127 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestGroupService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestGroupService.java
@@ -23,18 +23,18 @@ import static org.apache.openmeetings.AbstractOmServerTest.userpass;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.util.Collection;
 
-import javax.ws.rs.BadRequestException;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.BadRequestException;
+import jakarta.ws.rs.core.Response;
 
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.room.RoomDTO;
 import org.apache.openmeetings.db.dto.user.GroupDTO;
 import org.apache.openmeetings.db.entity.room.Room;
-import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
 class TestGroupService extends AbstractWebServiceTest {
@@ -92,7 +92,7 @@ class TestGroupService extends AbstractWebServiceTest {
 		RoomDTO rdto = new RoomDTO();
 		rdto.setName("Group WS Room");
 		String msg = sr.getMessage();
-		Assertions.assertThrows(BadRequestException.class, () -> create(msg, rdto));
+		assertThrows(BadRequestException.class, () -> create(msg, rdto));
 	}
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java
index e3319ba6d..932eceb94 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java
@@ -19,7 +19,7 @@
 package org.apache.openmeetings.webservice;
 
 import static java.util.UUID.randomUUID;
-import static javax.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED;
+import static jakarta.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED;
 import static org.apache.openmeetings.AbstractOmServerTest.adminUsername;
 import static org.apache.openmeetings.AbstractOmServerTest.createPass;
 import static org.apache.openmeetings.AbstractOmServerTest.rnd;
@@ -35,8 +35,8 @@ import java.util.Collection;
 import java.util.Locale;
 import java.util.TimeZone;
 
-import javax.ws.rs.core.Form;
-import javax.ws.rs.core.Response;
+import jakarta.ws.rs.core.Form;
+import jakarta.ws.rs.core.Response;
 
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
index 38d29fa93..3de82dd94 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
@@ -25,18 +25,18 @@ import java.util.Date;
 import java.util.List;
 import java.util.Set;
 
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
+import jakarta.jws.WebMethod;
+import jakarta.jws.WebParam;
+import jakarta.jws.WebService;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.FormParam;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
index 3561036e9..a84ab1bcc 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
@@ -20,16 +20,16 @@ package org.apache.openmeetings.webservice;
 
 import static org.apache.openmeetings.webservice.Constants.TNS;
 
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
+import jakarta.jws.WebMethod;
+import jakarta.jws.WebParam;
+import jakarta.jws.WebService;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.label.LabelDao;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
index 5642c2f33..c1d587e99 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
@@ -25,18 +25,18 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
+import jakarta.jws.WebMethod;
+import jakarta.jws.WebParam;
+import jakarta.jws.WebService;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
index 4da907296..6901fb608 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
@@ -25,17 +25,17 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
+import jakarta.jws.WebMethod;
+import jakarta.jws.WebParam;
+import jakarta.jws.WebService;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.user.GroupDao;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
index 662ec883e..ae596c6d1 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
@@ -24,12 +24,12 @@ import static org.apache.openmeetings.webservice.Constants.TNS;
 
 import java.net.URI;
 
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import jakarta.jws.WebMethod;
+import jakarta.jws.WebService;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dto.basic.Health;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
index 7a5ca8db5..1db37f87c 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
@@ -24,16 +24,17 @@ import java.io.InputStream;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
+
 import javax.annotation.PostConstruct;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
 
 import org.apache.openmeetings.webservice.util.RateLimited;
 import org.slf4j.Logger;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
index 255412cfd..2a8d16741 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
@@ -22,16 +22,16 @@ import static org.apache.openmeetings.webservice.Constants.TNS;
 
 import java.util.List;
 
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
+import jakarta.jws.WebMethod;
+import jakarta.jws.WebParam;
+import jakarta.jws.WebService;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
index bfec25a41..7dfc20c9b 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
@@ -23,18 +23,18 @@ import static org.apache.openmeetings.webservice.Constants.TNS;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
+import jakarta.jws.WebMethod;
+import jakarta.jws.WebParam;
+import jakarta.jws.WebService;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.FormParam;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.core.util.WebSocketHelper;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
index 19acc7c6c..bb26ee6e9 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
@@ -30,18 +30,18 @@ import java.security.NoSuchAlgorithmException;
 import java.util.List;
 import java.util.Locale;
 
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
+import jakarta.jws.WebMethod;
+import jakarta.jws.WebParam;
+import jakarta.jws.WebService;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.FormParam;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.core.util.StrongPasswordValidator;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java
index 2c88b72fd..4be455b1f 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java
@@ -29,17 +29,18 @@ import java.io.OutputStream;
 import java.nio.file.Paths;
 
 import javax.imageio.ImageIO;
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebService;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
+
+import jakarta.jws.WebMethod;
+import jakarta.jws.WebParam;
+import jakarta.jws.WebService;
+import jakarta.ws.rs.FormParam;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.FileUtils;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/error/ServiceException.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/error/ServiceException.java
index 4b67a9b8c..447ec00dd 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/error/ServiceException.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/error/ServiceException.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.webservice.error;
 
-import javax.xml.ws.WebFault;
+import jakarta.xml.ws.WebFault;
 
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
index 087c1cb22..3765fcf3b 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
@@ -30,11 +30,11 @@ import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.List;
 
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
 
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
 
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyReader.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyReader.java
index 812fb0f35..68b931059 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyReader.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyReader.java
@@ -27,11 +27,11 @@ import java.io.InputStreamReader;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
-import javax.ws.rs.Consumes;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyReader;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyReader;
+import jakarta.ws.rs.ext.Provider;
 
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
 
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
index 736c2a926..42de63dc1 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
@@ -28,11 +28,11 @@ import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
 
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
 
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
index f3228015d..b557f1a8e 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
@@ -24,7 +24,7 @@ import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
 
 import java.util.Date;
 
-import javax.ws.rs.ext.ParamConverter;
+import jakarta.ws.rs.ext.ParamConverter;
 
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
 import org.apache.openmeetings.db.dto.calendar.MeetingMemberDTO;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java
index 7d4cf1990..31ee459be 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/CalendarParamConverter.java
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
 import java.util.Calendar;
 import java.util.TimeZone;
 
-import javax.ws.rs.ext.ParamConverter;
+import jakarta.ws.rs.ext.ParamConverter;
 
 import org.apache.wicket.util.string.Strings;
 
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java
index 0b454051b..3051c7d38 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/DateParamConverter.java
@@ -25,7 +25,7 @@ import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
 import java.text.ParseException;
 import java.util.Date;
 
-import javax.ws.rs.ext.ParamConverter;
+import jakarta.ws.rs.ext.ParamConverter;
 
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.wicket.util.string.Strings;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmExceptionHandler.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmExceptionHandler.java
index 56aac5d42..2747b252e 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmExceptionHandler.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmExceptionHandler.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openmeetings.webservice.util;
 
-import javax.ws.rs.core.Response;
-import javax.ws.rs.ext.ExceptionMapper;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.ext.ExceptionMapper;
 
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
index 52fafc7e4..ca5ae0c75 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/OmParamConverterProvider.java
@@ -23,8 +23,8 @@ import java.lang.reflect.Type;
 import java.util.Calendar;
 import java.util.Date;
 
-import javax.ws.rs.ext.ParamConverter;
-import javax.ws.rs.ext.ParamConverterProvider;
+import jakarta.ws.rs.ext.ParamConverter;
+import jakarta.ws.rs.ext.ParamConverterProvider;
 
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
 import org.apache.openmeetings.db.dto.user.UserDTO;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/RateLimitRequestFilter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/RateLimitRequestFilter.java
index 50352cb83..6542cbb17 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/RateLimitRequestFilter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/RateLimitRequestFilter.java
@@ -20,13 +20,14 @@ package org.apache.openmeetings.webservice.util;
 
 import java.util.List;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.ws.rs.container.ContainerRequestContext;
-import javax.ws.rs.container.ContainerRequestFilter;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerRequestFilter;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.openmeetings.webservice.NetTestWebService;
 import org.apache.openmeetings.webservice.NetTestWebService.TestType;
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/RateLimited.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/RateLimited.java
index 86834f863..3d5a55a62 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/RateLimited.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/RateLimited.java
@@ -25,7 +25,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
-import javax.ws.rs.NameBinding;
+import jakarta.ws.rs.NameBinding;
 
 @Retention(RUNTIME)
 @Target({TYPE, METHOD})
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserMessageBodyWriter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserMessageBodyWriter.java
index b97b173c4..0ed1f7edd 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserMessageBodyWriter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserMessageBodyWriter.java
@@ -28,11 +28,11 @@ import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.ext.MessageBodyWriter;
+import jakarta.ws.rs.ext.Provider;
 
 import org.apache.openmeetings.db.dto.user.UserDTO;
 
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserParamConverter.java
index 9ffde2ebc..ec4bc8d43 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/UserParamConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.webservice.util;
 
-import javax.ws.rs.ext.ParamConverter;
+import jakarta.ws.rs.ext.ParamConverter;
 
 import org.apache.openmeetings.db.dto.user.UserDTO;
 
diff --git a/pom.xml b/pom.xml
index bd27474e8..b1928da4f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,14 +83,14 @@
 
 		<!-- dependency versions -->
 		<junit.version>5.10.0</junit.version>
-		<wicket.version>9.15.0</wicket.version>
+		<wicket.version>10.0.0-M1</wicket.version>
 		<wicket-jquery-ui.version>9.12.0</wicket-jquery-ui.version>
-		<wicketstuff.version>9.15.0</wicketstuff.version>
-		<wicket-bootstrap.version>6.0.5</wicket-bootstrap.version>
-		<spring.version>5.3.30</spring.version>
-		<tomcat.version>9.0.80</tomcat.version>
+		<wicketstuff.version>10.0.0-M1</wicketstuff.version>
+		<wicket-bootstrap.version>7.0.0-SNAPSHOT</wicket-bootstrap.version>
+		<spring.version>6.0.11</spring.version>
+		<tomcat.version>10.1.11</tomcat.version>
 		<ical4j.version>4.0.0-beta9</ical4j.version>
-		<cxf.version>3.6.2</cxf.version>
+		<cxf.version>4.0.2</cxf.version>
 		<io.prometheus.version>0.16.0</io.prometheus.version>
 		<aspectjtools.version>1.9.20.1</aspectjtools.version>
 		<simple-xml.version>2.7.1</simple-xml.version>
@@ -121,7 +121,7 @@
 		<tika-parsers.version>2.9.0</tika-parsers.version>
 		<slf4j.version>2.0.9</slf4j.version>
 		<logback.version>1.4.11</logback.version>
-		<jetty.version>9.4.53.v20231009</jetty.version>
+		<jetty.version>11.0.15</jetty.version>
 		<license.excludedScopes>test</license.excludedScopes>
 		<bcprov.version>1.76</bcprov.version>
 		<mockito.version>5.2.0</mockito.version>
@@ -131,7 +131,7 @@
 		<jasny-bootstrap.version>3.1.3-2</jasny-bootstrap.version>
 		<jodconverter.version>4.4.6</jodconverter.version>
 		<jaxb-runtime.version>2.3.8</jaxb-runtime.version>
-		<javax.servlet-api.version>3.1.0</javax.servlet-api.version>
+		<jakarta.servlet-api.version>5.0.0</jakarta.servlet-api.version>
 		<jquery-ui-touch-punch.version>0.2.3-2</jquery-ui-touch-punch.version>
 		<apacheds-test-framework.version>2.0.0.AM26</apacheds-test-framework.version>
 		<swagger.version>2.2.16</swagger.version>
@@ -539,7 +539,7 @@
 						<artifactId>*</artifactId>
 					</exclusion>
 					<exclusion>
-						<groupId>javax.servlet</groupId>
+						<groupId>jakarta.servlet</groupId>
 						<artifactId>*</artifactId>
 					</exclusion>
 				</exclusions>
@@ -554,7 +554,7 @@
 						<artifactId>*</artifactId>
 					</exclusion>
 					<exclusion>
-						<groupId>javax.servlet</groupId>
+						<groupId>jakarta.servlet</groupId>
 						<artifactId>*</artifactId>
 					</exclusion>
 					<exclusion>
@@ -654,10 +654,9 @@
 				<artifactId>wicketstuff-datastore-hazelcast</artifactId>
 				<version>${wicketstuff.version}</version>
 			</dependency>
-			<dependency>
-				<groupId>javax.servlet</groupId>
-				<artifactId>javax.servlet-api</artifactId>
-				<version>${javax.servlet-api.version}</version>
+				<groupId>jakarta.servlet</groupId>
+				<artifactId>jakarta.servlet-api</artifactId>
+				<version>${jakarta.servlet-api.version}</version>
 				<scope>provided</scope>
 			</dependency>
 			<dependency>
@@ -1043,8 +1042,8 @@
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-			<groupId>javax.servlet</groupId>
-			<artifactId>javax.servlet-api</artifactId>
+			<groupId>jakarta.servlet</groupId>
+			<artifactId>jakarta.servlet-api</artifactId>
 		</dependency>
 	</dependencies>
 	<build>


[openmeetings] 21/27: [OPENMEETINGS-2756] spring, tomcat, cxf and jetty are updated

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit d5a7321f8b5eea46d1b49fec6aa312a6603034b8
Author: Maxim Solodovnik <so...@apache.org>
AuthorDate: Mon Sep 25 16:59:28 2023 +0700

    [OPENMEETINGS-2756] spring, tomcat, cxf and jetty are updated
---
 pom.xml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/pom.xml b/pom.xml
index 5061049eb..ac19ddee9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -87,10 +87,10 @@
 		<wicket-jquery-ui.version>10.0.0-M1</wicket-jquery-ui.version>
 		<wicketstuff.version>10.0.0-M1</wicketstuff.version>
 		<wicket-bootstrap.version>7.0.0-SNAPSHOT</wicket-bootstrap.version>
-		<spring.version>6.0.11</spring.version>
-		<tomcat.version>10.1.11</tomcat.version>
+		<spring.version>6.0.12</spring.version>
+		<tomcat.version>10.1.13</tomcat.version>
 		<ical4j.version>4.0.0-beta9</ical4j.version>
-		<cxf.version>4.0.2</cxf.version>
+		<cxf.version>4.0.3</cxf.version>
 		<io.prometheus.version>0.16.0</io.prometheus.version>
 		<aspectjtools.version>1.9.20.1</aspectjtools.version>
 		<simple-xml.version>2.7.1</simple-xml.version>
@@ -126,7 +126,7 @@
 		<tika-parsers.version>3.0.0-SNAPSHOT</tika-parsers.version>
 		<slf4j.version>2.0.9</slf4j.version>
 		<logback.version>1.4.11</logback.version>
-		<jetty.version>11.0.15</jetty.version>
+		<jetty.version>11.0.16</jetty.version>
 		<license.excludedScopes>test</license.excludedScopes>
 		<bcprov.version>1.76</bcprov.version>
 		<mockito.version>5.2.0</mockito.version>


[openmeetings] 08/27: Code clean-up

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit ba1002dc47fe3c564fd7bc2ab5cca19dbb72001c
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Apr 21 16:52:42 2022 +0700

    Code clean-up
---
 .../src/test/java/org/apache/openmeetings/backup/TestExport.java  | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
index 5e51cb8de..6325193a4 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
@@ -64,14 +64,6 @@ class TestExport extends AbstractOmServerTest {
 		JAXBContext jc = JAXBContext.newInstance(eClazz);
 		Marshaller marshaller = jc.createMarshaller();
 		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
-		/* FIXME TODO
-		marshaller.setProperty(CharacterEscapeHandler.class.getName(), new CharacterEscapeHandler() {
-			@Override
-			public void escape(char[] ac, int i, int j, boolean flag, Writer writer) throws IOException {
-				writer.write(ac, i, j);
-			}
-		});
-		*/
 		StringWriter writer = new StringWriter();
 		marshaller.marshal(u, writer);
 		Assertions.assertNotNull(writer.getBuffer());


[openmeetings] 27/27: [OPENMEETINGS-2756] javadocs are fixed

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 03101ec91e6dfbe12fadf7595a6ee34a5e3d44e7
Author: Maxim Solodovnik <so...@apache.org>
AuthorDate: Sun Oct 8 21:53:18 2023 +0700

    [OPENMEETINGS-2756] javadocs are fixed
---
 openmeetings-db/pom.xml | 4 ++--
 pom.xml                 | 4 ++++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index ed2df7a38..dc4227624 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -115,7 +115,7 @@
 	</dependencies>
 	<build>
 		<plugins>
-			<!--plugin>
+			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
 				<executions>
@@ -134,7 +134,7 @@
 						</goals>
 					</execution>
 				</executions>
-			</plugin-->
+			</plugin>
 			<plugin>
 				<groupId>org.apache.openjpa</groupId>
 				<artifactId>openjpa-maven-plugin</artifactId>
diff --git a/pom.xml b/pom.xml
index a9c2478d0..e131a5778 100644
--- a/pom.xml
+++ b/pom.xml
@@ -816,6 +816,10 @@
 						<groupId>org.apache.geronimo.specs</groupId>
 						<artifactId>geronimo-jta_1.1_spec</artifactId>
 					</exclusion>
+					<exclusion>
+						<groupId>org.apache.geronimo.specs</groupId>
+						<artifactId>geronimo-jms_1.1_spec</artifactId>
+					</exclusion>
 				</exclusions>
 			</dependency>
 			<dependency>


[openmeetings] 19/27: [OPENMEETINGS-2756] build is fixed; code clean-up some dependencies are updated

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 6626e08887e0f13e0809bdd9d22da395712c19a5
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Jul 27 19:03:39 2023 +0700

    [OPENMEETINGS-2756] build is fixed; code clean-up some dependencies are updated
---
 .../java/org/apache/openmeetings/db/dao/user/UserDao.java     |  1 -
 .../web/admin/backup/BackupUploadResourceReference.java       | 11 +++++++++--
 .../openmeetings/web/admin/connection/ConnectionsPanel.java   |  5 -----
 .../java/org/apache/openmeetings/web/common/MainPanel.java    |  2 --
 .../web/common/upload/UploadResourceReference.java            |  2 +-
 .../org/apache/openmeetings/web/pages/auth/SignInPage.java    |  2 --
 .../web/room/sidebar/RoomFileUploadResourceReference.java     |  9 +++++++--
 .../java/org/apache/openmeetings/web/user/MessageDialog.java  |  2 --
 pom.xml                                                       |  6 +++---
 9 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
index aff76369c..9b2a51cc8 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
@@ -46,7 +46,6 @@ import java.util.Set;
 
 import jakarta.persistence.EntityManager;
 import jakarta.persistence.PersistenceContext;
-import jakarta.persistence.TypedQuery;
 import jakarta.persistence.criteria.CriteriaBuilder;
 import jakarta.persistence.criteria.CriteriaQuery;
 import jakarta.persistence.criteria.JoinType;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupUploadResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupUploadResourceReference.java
index 12a579554..0c7f86973 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupUploadResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupUploadResourceReference.java
@@ -21,13 +21,14 @@ package org.apache.openmeetings.web.admin.backup;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getApplicationName;
 import static org.apache.openmeetings.web.util.ThreadHelper.startRunnable;
 
+import java.io.IOException;
 import java.util.List;
 import java.util.Optional;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.apache.commons.fileupload2.FileItem;
+import org.apache.commons.fileupload2.core.FileItem;
 import org.apache.openmeetings.backup.BackupImport;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.user.User;
@@ -88,7 +89,13 @@ public class BackupUploadResourceReference extends UploadResourceReference {
 				log.error("Exception on panel backup download ", e);
 				sendError(c, uuid, e.getMessage() == null ? "Unexpected error" : e.getMessage());
 			} finally {
-				fileItems.forEach(FileItem::delete);
+				fileItems.forEach(fi -> {
+					try {
+						fi.delete();
+					} catch (IOException e) {
+						log.error("IOException while deleting FileItem ", e);
+					}
+				});
 				timer.cancel();
 			}
 			sendProgress(c, uuid, lastProgress, 100);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
index a48306326..6c313514c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
@@ -44,7 +44,6 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.RepeatingView;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.openmeetings.mediaserver.KurentoHandler;
 import org.apache.openmeetings.mediaserver.StreamProcessor;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
@@ -58,11 +57,7 @@ public class ConnectionsPanel extends AdminBasePanel {
 	@Inject
 	private ClientManager cm;
 	@Inject
-	private KurentoHandler kHandler;
-	@Inject
 	private StreamProcessor streamProcessor;
-	@Inject
-	private IUserManager userManager;
 
 	public ConnectionsPanel(String id) {
 		super(id);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index f7b0a06ee..7e1e88fab 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -109,8 +109,6 @@ public class MainPanel extends Panel {
 	@Inject
 	private ClientManager cm;
 	@Inject
-	private ConfigurationDao cfgDao;
-	@Inject
 	private UserDao userDao;
 	@Inject
 	private RoomDao roomDao;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java
index a669b6212..0d03e4a5a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java
@@ -29,7 +29,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import jakarta.inject.Inject;
 import jakarta.ws.rs.core.MediaType;
 
-import org.apache.commons.fileupload2.FileItem;
+import org.apache.commons.fileupload2.core.FileItem;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.web.app.Application;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
index 90d958acf..14644728e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
@@ -109,8 +109,6 @@ public class SignInPage extends BaseInitedPage {
 	RegisterDialog r = new RegisterDialog("register");
 	private final OtpDialog otpDialog = new OtpDialog("otpDialog", Model.of());
 
-	@Inject
-	private ConfigurationDao cfgDao;
 	@Inject
 	private UserManager userManager;
 	@Inject
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
index 5fb346aaf..a77192847 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
@@ -21,12 +21,13 @@ package org.apache.openmeetings.web.room.sidebar;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.util.ThreadHelper.startRunnable;
 
+import java.io.IOException;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.DoubleConsumer;
 
-import org.apache.commons.fileupload2.FileItem;
+import org.apache.commons.fileupload2.core.FileItem;
 import org.apache.openmeetings.core.data.file.FileProcessor;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.file.FileItemDao;
@@ -149,7 +150,11 @@ public class RoomFileUploadResourceReference extends UploadResourceReference {
 				log.error("Unexpected error while processing uploaded file", e);
 				sendError(c, uuid, e.getMessage() == null ? "Unexpected error" : e.getMessage());
 			} finally {
-				curItem.delete();
+				try {
+					curItem.delete();
+				} catch (IOException e) {
+					log.error("IOException while deleting FileItem ", e);
+				}
 			}
 			currentSize += size;
 			sendProgress(c, uuid, progress, (int)(100 * currentSize / totalSize));
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
index 11a70d2db..750fc5a0f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
@@ -96,8 +96,6 @@ public class MessageDialog extends Modal<PrivateMessage> {
 	@Inject
 	private UserDao userDao;
 	@Inject
-	private ConfigurationDao cfgDao;
-	@Inject
 	private AppointmentDao apptDao;
 	@Inject
 	private PrivateMessageDao msgDao;
diff --git a/pom.xml b/pom.xml
index bdf6026a7..e4ca044f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,8 +83,8 @@
 
 		<!-- dependency versions -->
 		<junit.version>5.10.0</junit.version>
-		<wicket.version>10.0.0-M1</wicket.version>
-		<wicket-jquery-ui.version>9.12.0</wicket-jquery-ui.version>
+		<wicket.version>10.0.0-M2-SNAPSHOT</wicket.version>
+		<wicket-jquery-ui.version>10.0.0-M1</wicket-jquery-ui.version>
 		<wicketstuff.version>10.0.0-M1</wicketstuff.version>
 		<wicket-bootstrap.version>7.0.0-SNAPSHOT</wicket-bootstrap.version>
 		<spring.version>6.0.11</spring.version>
@@ -134,7 +134,7 @@
 		<jain-sip.version>1.2.307</jain-sip.version><!-- other versions are broken! -->
 		<jasny-bootstrap.version>3.1.3-2</jasny-bootstrap.version>
 		<jodconverter.version>4.4.6</jodconverter.version>
-		<jaxb-runtime.version>4.0.2</jaxb-runtime.version>
+		<jaxb-runtime.version>4.0.3</jaxb-runtime.version>
 		<jakarta.servlet-api.version>6.0.0</jakarta.servlet-api.version>
 		<jquery-ui-touch-punch.version>0.2.3-2</jquery-ui-touch-punch.version>
 		<apacheds-test-framework.version>2.0.0.AM26</apacheds-test-framework.version>


[openmeetings] 02/27: Simple-xml is dropped

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 7c6fba8c46ee2300e83afa0e32d83148631696dc
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sat Mar 14 11:03:03 2020 +0700

    Simple-xml is dropped
---
 openmeetings-db/src/main/java/module-info.java | 1 -
 1 file changed, 1 deletion(-)

diff --git a/openmeetings-db/src/main/java/module-info.java b/openmeetings-db/src/main/java/module-info.java
index 2d01a8c92..b42eb42a0 100644
--- a/openmeetings-db/src/main/java/module-info.java
+++ b/openmeetings-db/src/main/java/module-info.java
@@ -52,7 +52,6 @@ module apache.openmeetings.db {
 	requires transitive org.apache.wicket.request;
 	requires transitive org.apache.wicket.websocket.core;
 	requires transitive spring.beans;
-	requires transitive simple.xml;
 	requires transitive spring.web;
 	requires transitive spring.core;
 


[openmeetings] 03/27: OpenJpa modules were changed

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit b7df4d43b9ff78739bfc97c6262002258ea80acb
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Mar 15 15:24:33 2020 +0700

    OpenJpa modules were changed
---
 openmeetings-db/src/main/java/module-info.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/openmeetings-db/src/main/java/module-info.java b/openmeetings-db/src/main/java/module-info.java
index b42eb42a0..120187f78 100644
--- a/openmeetings-db/src/main/java/module-info.java
+++ b/openmeetings-db/src/main/java/module-info.java
@@ -57,7 +57,7 @@ module apache.openmeetings.db {
 
 	requires spring.tx;
 	requires spring.context;
-	requires java.persistence;
+	requires javax.persistence;
 	requires openjpa;
 	requires asterisk.java;
 	requires java.xml.bind;


[openmeetings] 10/27: More work on JPMS

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit d85aae974189e7b2250ac18c5c6f097920ccb430
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Jul 14 15:48:18 2022 +0700

    More work on JPMS
---
 openmeetings-core/pom.xml                          |  1 -
 openmeetings-core/src/main/java/module-info.java   | 28 ++++++------
 openmeetings-db/pom.xml                            |  1 -
 openmeetings-db/src/main/java/module-info.java     | 13 +++---
 openmeetings-install/pom.xml                       |  1 -
 .../src/main/java/module-info.java                 | 15 ++++---
 openmeetings-mediaserver/pom.xml                   |  1 -
 .../src/main/java/module-info.java                 | 16 ++++---
 openmeetings-screenshare/pom.xml                   |  1 -
 openmeetings-server/pom.xml                        |  1 -
 openmeetings-service/pom.xml                       |  1 -
 .../src/main/java/module-info.java                 | 20 +++++----
 openmeetings-util/pom.xml                          |  1 -
 openmeetings-util/src/main/java/module-info.java   | 36 ++++++++--------
 openmeetings-util/src/test/java/module-info.test   | 30 ++++++++++++-
 openmeetings-web/pom.xml                           |  1 -
 openmeetings-web/src/main/java/module-info.java    | 50 ++++++++++++++++++++++
 .../openmeetings/web/admin/extra/ExtraPanel.java   |  2 +-
 .../util/logging/OpenMeetingsMetricsServlet.java   |  3 +-
 openmeetings-webservice/pom.xml                    |  1 -
 .../src/main/java/module-info.java                 | 20 ++++-----
 pom.xml                                            | 12 ------
 22 files changed, 162 insertions(+), 93 deletions(-)

diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index ee4621d5a..4e7650dab 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -31,7 +31,6 @@
 	<description>Module for OpenMeetings core classes and services</description>
 	<properties>
 		<site.basedir>${project.parent.basedir}</site.basedir>
-		<autoModuleName>apache.openmeetings.core</autoModuleName>
 	</properties>
 	<build>
 		<plugins>
diff --git a/openmeetings-core/src/main/java/module-info.java b/openmeetings-core/src/main/java/module-info.java
index 6495df2b8..ec9973b40 100644
--- a/openmeetings-core/src/main/java/module-info.java
+++ b/openmeetings-core/src/main/java/module-info.java
@@ -17,28 +17,30 @@
  * under the License.
  */
 
-module apache.openmeetings.core {
-	requires transitive apache.openmeetings.db;
+module org.apache.openmeetings.core {
+	exports org.apache.openmeetings.core.converter;
+	exports org.apache.openmeetings.core.data.file;
+	exports org.apache.openmeetings.core.ldap;
+	exports org.apache.openmeetings.core.mail;
+	exports org.apache.openmeetings.core.notifier;
+	exports org.apache.openmeetings.core.rss;
+	exports org.apache.openmeetings.core.sip;
+	exports org.apache.openmeetings.core.util;
+
+	requires transitive org.apache.openmeetings.db;
 
 	requires transitive org.apache.commons.io;
+	requires transitive java.annotation;
+	requires transitive java.xml;
 
-	requires kurento.client;
-	requires kurento.commons;
-	requires kurento.jsonrpc.client;
-	requires java.activation;
-	requires com.google.gson;
-	requires java.mail;
-	requires java.xml;
 	requires xstream;
 
 	requires jodconverter.core;
 	requires jodconverter.local;
 	requires org.apache.directory.ldap.api.all;
-	requires tika.parsers;
 	requires javax.inject;
-	requires wicket.ioc;
-	requires java.annotation;
-	requires apache.openmeetings.util;
 	requires asterisk.java;
 	requires jain.sip.ri;
+	requires org.apache.tika.parsers;
+	requires jakarta.mail;
 }
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 5a6d49460..f037a424d 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -31,7 +31,6 @@
 	<description>OpenMeetings module for all Database/DTO related classes</description>
 	<properties>
 		<site.basedir>${project.parent.basedir}</site.basedir>
-		<autoModuleName>apache.openmeetings.db</autoModuleName>
 	</properties>
 	<dependencies>
 		<dependency>
diff --git a/openmeetings-db/src/main/java/module-info.java b/openmeetings-db/src/main/java/module-info.java
index aa1690d87..f65ad04b8 100644
--- a/openmeetings-db/src/main/java/module-info.java
+++ b/openmeetings-db/src/main/java/module-info.java
@@ -16,8 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-module apache.openmeetings.db {
+module org.apache.openmeetings.db {
 	exports org.apache.openmeetings;
+	exports org.apache.openmeetings.db.bind;
+	exports org.apache.openmeetings.db.bind.adapter;
 	exports org.apache.openmeetings.db.dao;
 	exports org.apache.openmeetings.db.dao.basic;
 	exports org.apache.openmeetings.db.dao.calendar;
@@ -45,19 +47,20 @@ module apache.openmeetings.db {
 	exports org.apache.openmeetings.db.entity.server;
 	exports org.apache.openmeetings.db.entity.user;
 	exports org.apache.openmeetings.db.manager;
+	exports org.apache.openmeetings.db.mapper;
 	exports org.apache.openmeetings.db.util;
 	exports org.apache.openmeetings.db.util.ws;
 
-	requires transitive apache.openmeetings.util;
+	requires transitive org.apache.openmeetings.util;
 	requires transitive org.apache.wicket.request;
 	requires transitive org.apache.wicket.websocket.core;
+	requires transitive org.apache.commons.text;
+	requires transitive java.xml.bind;
+	requires transitive org.apache.openjpa;
 	requires transitive spring.beans;
 	requires transitive spring.web;
 	requires transitive spring.core;
 
 	requires spring.tx;
 	requires javax.persistence;
-	requires openjpa;
-	requires java.xml.bind;
-	requires org.apache.commons.text;
 }
diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index fd53d4ad0..963bf8cd4 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -31,7 +31,6 @@
 	<description>Module for OpenMeetings command line admin and classes necessary for installer.</description>
 	<properties>
 		<site.basedir>${project.parent.basedir}</site.basedir>
-		<autoModuleName>apache.openmeetings.install</autoModuleName>
 	</properties>
 	<dependencies>
 		<dependency>
diff --git a/openmeetings-util/src/test/java/module-info.test b/openmeetings-install/src/main/java/module-info.java
similarity index 71%
copy from openmeetings-util/src/test/java/module-info.test
copy to openmeetings-install/src/main/java/module-info.java
index 5987c837c..cb5c126f9 100644
--- a/openmeetings-util/src/test/java/module-info.test
+++ b/openmeetings-install/src/main/java/module-info.java
@@ -16,10 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-module org.apache.openmeetings.util.test {
-	requires transitive org.apache.openmeetings.util;
 
-	//tests
-	requires org.junit.jupiter.engine;
-	requires org.junit.jupiter.api;
+module org.apache.openmeetings.install {
+	exports org.apache.openmeetings.backup;
+	exports org.apache.openmeetings.cli;
+	exports org.apache.openmeetings.installation;
+
+	requires transitive org.apache.openmeetings.core;
+	requires java.desktop;
+	requires commons.cli;
+	requires spring.context.support;
+	requires quartz;
 }
diff --git a/openmeetings-mediaserver/pom.xml b/openmeetings-mediaserver/pom.xml
index aeebd7592..dfe2c22fd 100644
--- a/openmeetings-mediaserver/pom.xml
+++ b/openmeetings-mediaserver/pom.xml
@@ -31,7 +31,6 @@
 	<description>Module for OpenMeetings MediaServer classes and services</description>
 	<properties>
 		<site.basedir>${project.parent.basedir}</site.basedir>
-		<autoModuleName>apache.openmeetings.mediaserver</autoModuleName>
 	</properties>
 	<dependencies>
 		<dependency>
diff --git a/openmeetings-util/src/test/java/module-info.test b/openmeetings-mediaserver/src/main/java/module-info.java
similarity index 71%
copy from openmeetings-util/src/test/java/module-info.test
copy to openmeetings-mediaserver/src/main/java/module-info.java
index 5987c837c..47ee94e67 100644
--- a/openmeetings-util/src/test/java/module-info.test
+++ b/openmeetings-mediaserver/src/main/java/module-info.java
@@ -16,10 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-module org.apache.openmeetings.util.test {
-	requires transitive org.apache.openmeetings.util;
 
-	//tests
-	requires org.junit.jupiter.engine;
-	requires org.junit.jupiter.api;
+module org.apache.openmeetings.mediaserver {
+	exports org.apache.openmeetings.mediaserver;
+
+	requires transitive org.apache.openmeetings.core;
+	requires transitive org.apache.wicket.ioc;
+
+	requires kurento.client;
+	requires kurento.jsonrpc.client;
+	requires kurento.commons;
+	requires javax.inject;
+	requires com.google.gson;
 }
diff --git a/openmeetings-screenshare/pom.xml b/openmeetings-screenshare/pom.xml
index 31589b853..c7c819935 100644
--- a/openmeetings-screenshare/pom.xml
+++ b/openmeetings-screenshare/pom.xml
@@ -37,7 +37,6 @@
 		<key.alias>screen</key.alias>
 		<site.basedir>${project.parent.basedir}</site.basedir>
 		<jnlp.out.dir>${project.build.directory}/jnlp</jnlp.out.dir>
-		<autoModuleName>apache.openmeetings.screenshare</autoModuleName>
 	</properties>
 	<dependencies>
 		<dependency>
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index 6308dc322..e51a40415 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -40,7 +40,6 @@
 		<om.webapp>webapps/openmeetings</om.webapp>
 		<root.webapp>webapps/ROOT</root.webapp>
 		<server-file.dir>web-server</server-file.dir>
-		<autoModuleName>apache.openmeetings.server</autoModuleName>
 	</properties>
 	<url>https://openmeetings.apache.org</url>
 	<scm>
diff --git a/openmeetings-service/pom.xml b/openmeetings-service/pom.xml
index 9484861b8..f168b59d2 100644
--- a/openmeetings-service/pom.xml
+++ b/openmeetings-service/pom.xml
@@ -31,7 +31,6 @@
 	<description>Module for OpenMeetings schedulers, mail templates and managers.</description>
 	<properties>
 		<site.basedir>${project.parent.basedir}</site.basedir>
-		<autoModuleName>apache.openmeetings.service</autoModuleName>
 	</properties>
 	<dependencies>
 		<dependency>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java b/openmeetings-service/src/main/java/module-info.java
similarity index 62%
copy from openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
copy to openmeetings-service/src/main/java/module-info.java
index 05c1555a6..2969affec 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
+++ b/openmeetings-service/src/main/java/module-info.java
@@ -16,17 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.util.logging;
 
-import io.prometheus.client.exporter.MetricsServlet;
+module org.apache.openmeetings.service {
+	exports org.apache.openmeetings.service.calendar.caldav;
+	exports org.apache.openmeetings.service.mail;
+	exports org.apache.openmeetings.service.mail.template;
+	exports org.apache.openmeetings.service.room;
 
-public class OpenMeetingsMetricsServlet extends MetricsServlet {
+	requires transitive org.apache.openmeetings.core;
 
-	private static final long serialVersionUID = -2488393857088858502L;
-
-	public OpenMeetingsMetricsServlet() {
-		super();
-		new TomcatGenericExports(false).register();
-	}
+	requires transitive org.apache.wicket.spring;
 
+	requires org.apache.httpcomponents.httpcore;
+	requires org.apache.httpcomponents.httpclient;
+	requires jackrabbit.webdav;
+	requires caldav4j;
 }
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index dd5f0ea14..98ba695de 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -31,7 +31,6 @@
 	<description>Module for utility classes being used by all OpenMeetings modules</description>
 	<properties>
 		<site.basedir>${project.parent.basedir}</site.basedir>
-		<autoModuleName>apache.openmeetings.util</autoModuleName>
 	</properties>
 	<build>
 		<plugins>
diff --git a/openmeetings-util/src/main/java/module-info.java b/openmeetings-util/src/main/java/module-info.java
index ecd52506e..fdb492512 100644
--- a/openmeetings-util/src/main/java/module-info.java
+++ b/openmeetings-util/src/main/java/module-info.java
@@ -17,32 +17,30 @@
  * under the License.
  */
 module org.apache.openmeetings.util {
+	exports org.apache.openmeetings.util;
+	exports org.apache.openmeetings.util.crypt;
+	exports org.apache.openmeetings.util.mail;
+	exports org.apache.openmeetings.util.process;
+	exports org.apache.openmeetings.util.ws;
+	exports org.apache.openmeetings.util.logging;
+
 	requires transitive org.apache.wicket.util;
 	requires transitive org.apache.wicket.core;
 	requires transitive org.apache.wicket.extensions;
-
-	requires transitive org.apache.commons.codec;
 	requires transitive org.apache.commons.lang3;
-
 	requires transitive com.github.openjson;
 	requires transitive org.slf4j;
-	requires transitive org.bouncycastle.provider;
-	requires transitive jakarta.activation;
-	requires transitive org.mnode.ical4j.core;
-	requires org.aspectj.tools;
 	requires transitive javax.servlet.api;
-	requires transitive tika.core;
+	requires transitive org.apache.tika.core;
 	requires transitive spring.context;
-	requires transitive logback.classic;
-	requires transitive logback.core;
-	requires transitive dom4j;
-	requires transitive jcip.annotations;
-	requires simpleclient;
+	requires transitive org.apache.commons.codec;
 
-	exports org.apache.openmeetings.util;
-	exports org.apache.openmeetings.util.crypt;
-	exports org.apache.openmeetings.util.mail;
-	exports org.apache.openmeetings.util.process;
-	exports org.apache.openmeetings.util.ws;
-	exports org.apache.openmeetings.util.logging;
+	requires org.bouncycastle.provider;
+	requires jakarta.activation;
+	requires org.mnode.ical4j.core;
+	requires org.aspectj.tools;
+	requires dom4j;
+	requires simpleclient;
+	requires ch.qos.logback.classic;
+	requires ch.qos.logback.core;
 }
diff --git a/openmeetings-util/src/test/java/module-info.test b/openmeetings-util/src/test/java/module-info.test
index 5987c837c..b65dab769 100644
--- a/openmeetings-util/src/test/java/module-info.test
+++ b/openmeetings-util/src/test/java/module-info.test
@@ -16,8 +16,34 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-module org.apache.openmeetings.util.test {
-	requires transitive org.apache.openmeetings.util;
+open module org.apache.openmeetings.util {
+	// This one should be in-sync with module-info.java
+	exports org.apache.openmeetings.util;
+	exports org.apache.openmeetings.util.crypt;
+	exports org.apache.openmeetings.util.mail;
+	exports org.apache.openmeetings.util.process;
+	exports org.apache.openmeetings.util.ws;
+	exports org.apache.openmeetings.util.logging;
+
+	requires transitive org.apache.wicket.util;
+	requires transitive org.apache.wicket.core;
+	requires transitive org.apache.wicket.extensions;
+	requires transitive org.apache.commons.lang3;
+	requires transitive com.github.openjson;
+	requires transitive org.slf4j;
+	requires transitive javax.servlet.api;
+	requires transitive org.apache.tika.core;
+	requires transitive spring.context;
+	requires transitive org.apache.commons.codec;
+
+	requires org.bouncycastle.provider;
+	requires jakarta.activation;
+	requires org.mnode.ical4j.core;
+	requires org.aspectj.tools;
+	requires dom4j;
+	requires simpleclient;
+	requires ch.qos.logback.classic;
+	requires ch.qos.logback.core;
 
 	//tests
 	requires org.junit.jupiter.engine;
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 2934a0201..74a95744c 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -32,7 +32,6 @@
 	<properties>
 		<old-backups.dir>${project.build.directory}/test-data</old-backups.dir>
 		<site.basedir>${project.parent.basedir}</site.basedir>
-		<autoModuleName>apache.openmeetings.web</autoModuleName>
 	</properties>
 	<profiles>
 		<profile>
diff --git a/openmeetings-web/src/main/java/module-info.java b/openmeetings-web/src/main/java/module-info.java
new file mode 100644
index 000000000..346ccc2c1
--- /dev/null
+++ b/openmeetings-web/src/main/java/module-info.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+module org.apache.openmeetings.web {
+	requires org.apache.openmeetings.install;
+	requires org.apache.openmeetings.mediaserver;
+	requires org.apache.openmeetings.webservice;
+
+	requires org.apache.wicket.auth.roles;
+	requires org.apache.wicket.devutils;
+	requires wicketstuff.dashboard.core;
+	requires wicketstuff.datastore.hazelcast;
+	requires wicketstuff.select2;
+	requires wicketstuff.urlfragment;
+	requires jqplot;
+	requires jqplot4java;
+	requires wicket.bootstrap.extensions;
+	requires wicket.bootstrap.core;
+	requires wicket.bootstrap.themes;
+	requires wicket.webjars;
+	requires wicket.jquery.ui;
+	requires wicket.jquery.ui.calendar;
+	requires wicket.jquery.ui.core;
+	requires wicket.jquery.ui.plugins;
+
+	requires java.net.http;
+	requires java.sql;
+	requires javax.websocket.api;
+	requires com.hazelcast.core;
+	requires org.danekja.jdk.serializable.functional;
+	requires spring.orm;
+	requires java.management;
+	requires simpleclient.servlet;
+}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.java
index 4d0b215e1..0152a6429 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.java
@@ -68,7 +68,7 @@ public class ExtraPanel extends AdminBasePanel {
 		};
 		add(list.add(dataView).setOutputMarkupId(true));
 		final PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
-			private static final long serialVersionUID = -1L;
+			private static final long serialVersionUID = 1L;
 
 			@Override
 			protected void onEvent(AjaxRequestTarget target) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
index 05c1555a6..1b9bdd531 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
@@ -21,8 +21,7 @@ package org.apache.openmeetings.web.util.logging;
 import io.prometheus.client.exporter.MetricsServlet;
 
 public class OpenMeetingsMetricsServlet extends MetricsServlet {
-
-	private static final long serialVersionUID = -2488393857088858502L;
+	private static final long serialVersionUID = 1L;
 
 	public OpenMeetingsMetricsServlet() {
 		super();
diff --git a/openmeetings-webservice/pom.xml b/openmeetings-webservice/pom.xml
index d381c388d..cc357571b 100644
--- a/openmeetings-webservice/pom.xml
+++ b/openmeetings-webservice/pom.xml
@@ -31,7 +31,6 @@
 	<description>Module for OpenMeetings CXF based web services.</description>
 	<properties>
 		<site.basedir>${project.parent.basedir}</site.basedir>
-		<autoModuleName>apache.openmeetings.webservice</autoModuleName>
 	</properties>
 	<build>
 		<plugins>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java b/openmeetings-webservice/src/main/java/module-info.java
similarity index 70%
copy from openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
copy to openmeetings-webservice/src/main/java/module-info.java
index 05c1555a6..9fa9d844d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
+++ b/openmeetings-webservice/src/main/java/module-info.java
@@ -16,17 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.util.logging;
 
-import io.prometheus.client.exporter.MetricsServlet;
+module org.apache.openmeetings.webservice {
+	requires transitive org.apache.openmeetings.service;
 
-public class OpenMeetingsMetricsServlet extends MetricsServlet {
-
-	private static final long serialVersionUID = -2488393857088858502L;
-
-	public OpenMeetingsMetricsServlet() {
-		super();
-		new TomcatGenericExports(false).register();
-	}
+	requires transitive java.ws.rs;
 
+	requires java.jws;
+	requires org.apache.cxf.core;
+	requires io.swagger.v3.oas.annotations;
+	requires org.apache.cxf.frontend.jaxrs;
+	requires org.apache.pdfbox;
+	requires java.desktop;
+	requires java.xml.ws;
 }
diff --git a/pom.xml b/pom.xml
index d7e08cad8..bd27474e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,6 @@
 		<om.notquick.build>true</om.notquick.build>
 		<logback.console></logback.console>
 		<db>h2</db>
-		<autoModuleName>apache.openmeetings.parent</autoModuleName>
 		<jdk.version>17</jdk.version>
 		<minimalMavenBuildVersion>3.8.7</minimalMavenBuildVersion>
 		<minimalJavaBuildVersion>${jdk.version}</minimalJavaBuildVersion>
@@ -655,11 +654,6 @@
 				<artifactId>wicketstuff-datastore-hazelcast</artifactId>
 				<version>${wicketstuff.version}</version>
 			</dependency>
-			<dependency>
-				<groupId>com.googlecode.wicket-jquery-ui</groupId>
-				<artifactId>wicket-jquery-ui-calendar</artifactId>
-				<version>${wicket-jquery-ui.version}</version>
-			</dependency>
 			<dependency>
 				<groupId>javax.servlet</groupId>
 				<artifactId>javax.servlet-api</artifactId>
@@ -812,11 +806,6 @@
 				<artifactId>commons-io</artifactId>
 				<version>${commons-io.version}</version>
 			</dependency>
-			<dependency>
-				<groupId>org.wicketstuff</groupId>
-				<artifactId>wicketstuff-datastore-hazelcast</artifactId>
-				<version>${wicketstuff.version}</version>
-			</dependency>
 			<dependency>
 				<groupId>org.apache.openjpa</groupId>
 				<artifactId>openjpa</artifactId>
@@ -1202,7 +1191,6 @@
 								<Built-On>${maven.build.timestamp}</Built-On>
 								<Git-Revision>${buildNumber}</Git-Revision>
 								<Product-Version>${project.version}</Product-Version>
-								<Automatic-Module-Name>${autoModuleName}</Automatic-Module-Name>
 							</manifestEntries>
 						</archive>
 					</configuration>


[openmeetings] 15/27: javax.annotation -> jakarta.annotation

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 2785317acbd87fe4874549e26238f285d549cd88
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Jan 13 23:08:00 2023 +0700

    javax.annotation -> jakarta.annotation
---
 openmeetings-core/pom.xml                                           | 4 ++++
 .../src/main/java/org/apache/openmeetings/core/sip/SipManager.java  | 4 ++--
 .../java/org/apache/openmeetings/mediaserver/KurentoHandler.java    | 4 ++--
 .../openmeetings/service/calendar/caldav/AppointmentManager.java    | 2 +-
 .../java/org/apache/openmeetings/service/notifier/MailNotifier.java | 2 +-
 .../java/org/apache/openmeetings/service/notifier/TextNotifier.java | 2 +-
 .../src/main/java/org/apache/openmeetings/web/app/OtpManager.java   | 2 +-
 .../src/main/java/org/apache/openmeetings/web/app/TimerService.java | 2 +-
 .../java/org/apache/openmeetings/web/pages/auth/SignInPage.java     | 1 +
 .../src/main/webapp/WEB-INF/classes/applicationContext.xml          | 2 +-
 .../java/org/apache/openmeetings/webservice/NetTestWebService.java  | 2 +-
 pom.xml                                                             | 6 ++++++
 12 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 95ab8775b..5c3f80689 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -69,6 +69,10 @@
 		</plugins>
 	</build>
 	<dependencies>
+		<dependency>
+			<groupId>jakarta.annotation</groupId>
+			<artifactId>jakarta.annotation-api</artifactId>
+		</dependency>
 		<dependency>
 			<groupId>org.apache.openmeetings</groupId>
 			<artifactId>openmeetings-db</artifactId>
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipManager.java
index 68358aa16..ef1a61d27 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipManager.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipManager.java
@@ -25,8 +25,8 @@ import java.util.BitSet;
 import java.util.Optional;
 import java.util.function.Function;
 
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.PreDestroy;
 
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.User;
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
index 33fd09c0f..957d33abe 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
@@ -36,8 +36,8 @@ import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.PreDestroy;
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
 
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java
index c425eb90f..f90eb26b9 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java
@@ -27,7 +27,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
-import javax.annotation.PreDestroy;
+import jakarta.annotation.PreDestroy;
 
 import org.apache.http.HttpResponse;
 import org.apache.http.auth.AuthScope;
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java
index 131e786f5..9649e2042 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java
@@ -22,7 +22,7 @@ import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
 
 import java.util.TimeZone;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 
 import org.apache.openmeetings.core.notifier.INotifier;
 import org.apache.openmeetings.core.notifier.NotifierService;
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java
index 0dded20c0..9eea5728e 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.service.notifier;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REMINDER_MESSAGE;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 
 import org.apache.openmeetings.core.notifier.INotifier;
 import org.apache.openmeetings.core.notifier.NotifierService;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OtpManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OtpManager.java
index 0c6abfe50..c8f1d07c2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OtpManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OtpManager.java
@@ -24,7 +24,7 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.getApplicationN
 
 import java.net.UnknownHostException;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 
 import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java
index 6b460fe3f..7e6f9bfca 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java
@@ -27,7 +27,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Predicate;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 
 import org.apache.openmeetings.core.sip.SipManager;
 import org.apache.openmeetings.core.util.WebSocketHelper;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
index e3808b841..90d958acf 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
@@ -108,6 +108,7 @@ public class SignInPage extends BaseInitedPage {
 	};
 	RegisterDialog r = new RegisterDialog("register");
 	private final OtpDialog otpDialog = new OtpDialog("otpDialog", Model.of());
+
 	@Inject
 	private ConfigurationDao cfgDao;
 	@Inject
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
index 1c50a99e0..a069c52cd 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
@@ -39,10 +39,10 @@
 	<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
 
 	<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
-	<context:annotation-config />
 	<!-- Start annotation Prometheus metrics
 	<aop:aspectj-autoproxy/>
 	End annotation -->
+	<context:annotation-config />
 	<context:component-scan base-package="org.apache.openmeetings" />
 
 	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
index 1db37f87c..f7a4cfb0f 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/NetTestWebService.java
@@ -34,7 +34,7 @@ import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.core.Response.Status;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 
 import org.apache.openmeetings.webservice.util.RateLimited;
 import org.slf4j.Logger;
diff --git a/pom.xml b/pom.xml
index 4d8ef41e6..930c107f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -102,6 +102,7 @@
 		<openjpa.version>3.2.2</openjpa.version>
 		<jakarta.persistence.version>3.1.0</jakarta.persistence.version>
 		<jakarta.transaction.version>2.0.1</jakarta.transaction.version>
+		<jakarta.annotation.version>2.1.1</jakarta.annotation.version>
 		<asterisk-java.version>3.39.0</asterisk-java.version>
 		<commons-lang3.version>3.13.0</commons-lang3.version>
 		<commons-dbcp.version>2.10.0</commons-dbcp.version>
@@ -833,6 +834,11 @@
 				<artifactId>jakarta.transaction-api</artifactId>
 				<version>${jakarta.transaction.version}</version>
 			</dependency>
+			<dependency>
+				<groupId>jakarta.annotation</groupId>
+				<artifactId>jakarta.annotation-api</artifactId>
+				<version>${jakarta.annotation.version}</version>
+			</dependency>
 			<dependency>
 				<groupId>org.apache.commons</groupId>
 				<artifactId>commons-dbcp2</artifactId>


[openmeetings] 14/27: Project is compilable, tests are RED

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 254b4abc5c002cd5e561410a7a7f9bb5165005c3
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Jan 12 23:47:56 2023 +0700

    Project is compilable, tests are RED
---
 openmeetings-core/pom.xml                          |  4 --
 .../openmeetings/core/converter/BaseConverter.java | 12 +++--
 .../core/converter/DocumentConverter.java          |  8 +--
 .../core/converter/ImageConverter.java             |  6 ++-
 .../openmeetings/core/data/file/FileProcessor.java | 12 +++--
 .../openmeetings/core/ldap/LdapLoginManager.java   | 13 +++--
 .../apache/openmeetings/core/mail/MailHandler.java |  7 +--
 openmeetings-db/pom.xml                            | 15 +++++-
 .../bind/adapter/AppointmentReminderAdapter.java   |  2 +-
 .../db/bind/adapter/BooleanAdapter.java            |  2 +-
 .../db/bind/adapter/ConfigTypeAdapter.java         |  2 +-
 .../openmeetings/db/bind/adapter/DateAdapter.java  |  2 +-
 .../db/bind/adapter/EntityAdapter.java             |  2 +-
 .../db/bind/adapter/FileTypeAdapter.java           |  2 +-
 .../openmeetings/db/bind/adapter/IntAdapter.java   |  2 +-
 .../db/bind/adapter/LocalDateAdapter.java          |  2 +-
 .../openmeetings/db/bind/adapter/LongAdapter.java  |  2 +-
 .../db/bind/adapter/OauthMapAdapter.java           |  2 +-
 .../db/bind/adapter/PollTypeAdapter.java           |  2 +-
 .../db/bind/adapter/RecordingStatusAdapter.java    |  2 +-
 .../db/bind/adapter/RoomElementAdapter.java        |  2 +-
 .../db/bind/adapter/RoomTypeAdapter.java           |  2 +-
 .../db/bind/adapter/SalutationAdapter.java         |  2 +-
 .../db/bind/adapter/UserRightAdapter.java          |  2 +-
 .../db/bind/adapter/UserTypeAdapter.java           |  2 +-
 .../apache/openmeetings/db/dao/basic/ChatDao.java  |  4 +-
 .../db/dao/basic/ConfigurationDao.java             | 13 ++---
 .../openmeetings/db/dao/basic/MailMessageDao.java  |  4 +-
 .../db/dao/calendar/AppointmentDao.java            | 21 ++++----
 .../db/dao/calendar/MeetingMemberDao.java          |  4 +-
 .../db/dao/calendar/OmCalendarDao.java             | 10 ++--
 .../openmeetings/db/dao/file/BaseFileItemDao.java  | 14 ++---
 .../openmeetings/db/dao/file/FileItemDao.java      |  2 +-
 .../openmeetings/db/dao/file/FileItemLogDao.java   |  4 +-
 .../openmeetings/db/dao/log/ConferenceLogDao.java  |  4 +-
 .../db/dao/record/RecordingChunkDao.java           | 10 ++--
 .../openmeetings/db/dao/record/RecordingDao.java   |  7 +--
 .../openmeetings/db/dao/room/ExtraMenuDao.java     | 12 ++---
 .../openmeetings/db/dao/room/InvitationDao.java    | 14 ++---
 .../apache/openmeetings/db/dao/room/PollDao.java   |  6 +--
 .../apache/openmeetings/db/dao/room/RoomDao.java   | 23 ++++----
 .../openmeetings/db/dao/server/LdapConfigDao.java  | 13 ++---
 .../openmeetings/db/dao/server/OAuth2Dao.java      | 10 ++--
 .../openmeetings/db/dao/server/SOAPLoginDao.java   |  4 +-
 .../openmeetings/db/dao/server/SessiondataDao.java |  4 +-
 .../apache/openmeetings/db/dao/user/GroupDao.java  | 12 ++---
 .../openmeetings/db/dao/user/GroupUserDao.java     | 12 ++---
 .../db/dao/user/PrivateMessageDao.java             |  8 +--
 .../db/dao/user/PrivateMessageFolderDao.java       |  4 +-
 .../openmeetings/db/dao/user/UserContactDao.java   | 12 +++--
 .../apache/openmeetings/db/dao/user/UserDao.java   | 17 +++---
 .../apache/openmeetings/db/dto/basic/Health.java   |  6 +--
 .../org/apache/openmeetings/db/dto/basic/Info.java |  6 +--
 .../openmeetings/db/dto/basic/ServiceResult.java   |  8 +--
 .../db/dto/calendar/AppointmentDTO.java            |  6 +--
 .../db/dto/calendar/MeetingMemberDTO.java          |  6 +--
 .../db/dto/file/FileExplorerObject.java            |  6 +--
 .../openmeetings/db/dto/file/FileItemDTO.java      |  6 +--
 .../openmeetings/db/dto/record/RecordingDTO.java   |  6 +--
 .../openmeetings/db/dto/room/InvitationDTO.java    |  6 +--
 .../apache/openmeetings/db/dto/room/RoomDTO.java   |  6 +--
 .../openmeetings/db/dto/room/RoomFileDTO.java      |  6 +--
 .../openmeetings/db/dto/room/RoomOptionsDTO.java   |  6 +--
 .../openmeetings/db/dto/user/ExternalUserDTO.java  |  6 +--
 .../apache/openmeetings/db/dto/user/GroupDTO.java  |  2 +-
 .../apache/openmeetings/db/dto/user/UserDTO.java   |  2 +-
 .../openmeetings/db/dto/user/UserSearchResult.java |  2 +-
 .../openmeetings/db/entity/HistoricalEntity.java   | 16 +++---
 .../openmeetings/db/entity/basic/ChatMessage.java  | 34 ++++++------
 .../db/entity/basic/Configuration.java             | 38 +++++++-------
 .../openmeetings/db/entity/basic/MailMessage.java  | 20 +++----
 .../db/entity/calendar/Appointment.java            | 44 ++++++++--------
 .../db/entity/calendar/MeetingMember.java          | 36 ++++++-------
 .../db/entity/calendar/OmCalendar.java             | 34 ++++++------
 .../openmeetings/db/entity/file/BaseFileItem.java  | 34 ++++++------
 .../openmeetings/db/entity/file/FileItem.java      | 16 +++---
 .../openmeetings/db/entity/file/FileItemLog.java   | 16 +++---
 .../openmeetings/db/entity/log/ConferenceLog.java  | 18 +++----
 .../openmeetings/db/entity/record/Recording.java   | 32 ++++++------
 .../db/entity/record/RecordingChunk.java           | 38 +++++++-------
 .../openmeetings/db/entity/room/ExtraMenu.java     | 34 ++++++------
 .../openmeetings/db/entity/room/Invitation.java    | 30 +++++------
 .../apache/openmeetings/db/entity/room/Room.java   | 50 +++++++++---------
 .../openmeetings/db/entity/room/RoomFile.java      | 28 +++++-----
 .../openmeetings/db/entity/room/RoomGroup.java     | 30 +++++------
 .../openmeetings/db/entity/room/RoomModerator.java | 32 ++++++------
 .../openmeetings/db/entity/room/RoomPoll.java      | 44 ++++++++--------
 .../db/entity/room/RoomPollAnswer.java             | 32 ++++++------
 .../openmeetings/db/entity/server/LdapConfig.java  | 34 ++++++------
 .../openmeetings/db/entity/server/OAuthServer.java | 42 +++++++--------
 .../openmeetings/db/entity/server/SOAPLogin.java   | 16 +++---
 .../openmeetings/db/entity/server/Sessiondata.java | 24 ++++-----
 .../openmeetings/db/entity/user/Address.java       | 26 ++++-----
 .../db/entity/user/AsteriskSipUser.java            | 28 +++++-----
 .../apache/openmeetings/db/entity/user/Group.java  | 28 +++++-----
 .../openmeetings/db/entity/user/GroupUser.java     | 32 ++++++------
 .../db/entity/user/PrivateMessage.java             | 34 ++++++------
 .../db/entity/user/PrivateMessageFolder.java       | 25 +++++----
 .../apache/openmeetings/db/entity/user/User.java   | 56 ++++++++++----------
 .../openmeetings/db/entity/user/UserContact.java   | 32 ++++++------
 .../openmeetings/db/mapper/CalendarMapper.java     | 12 +++--
 .../apache/openmeetings/db/mapper/RoomMapper.java  | 12 +++--
 .../apache/openmeetings/db/mapper/UserMapper.java  |  8 +--
 .../org/apache/openmeetings/db/util/DaoHelper.java | 20 +++----
 .../apache/openmeetings/backup/BackupExport.java   | 41 ++++++++-------
 .../apache/openmeetings/backup/BackupImport.java   | 43 +++++++--------
 .../apache/openmeetings/backup/BackupVersion.java  | 10 ++--
 .../installation/ImportInitvalues.java             | 16 +++---
 .../org/apache/openmeetings/mediaserver/KRoom.java |  2 +-
 .../apache/openmeetings/mediaserver/KStream.java   |  2 +-
 .../openmeetings/mediaserver/KTestStream.java      |  2 +-
 .../openmeetings/mediaserver/KurentoHandler.java   | 12 +++--
 .../openmeetings/mediaserver/StreamProcessor.java  | 18 ++++---
 .../mediaserver/StreamProcessorActions.java        | 10 ++--
 .../mediaserver/TestStreamProcessor.java           |  6 ++-
 .../openmeetings/mediaserver/BaseMockedTest.java   |  2 +-
 .../src/main/assembly/conf/context.xml             |  5 +-
 .../src/main/assembly/conf/server.xml              | 50 ++++++++++++------
 openmeetings-server/src/main/assembly/conf/web.xml | 27 +++++-----
 openmeetings-service/pom.xml                       |  7 ++-
 .../service/calendar/AppointmentLogic.java         | 10 ++--
 .../calendar/caldav/AppointmentManager.java        | 10 ++--
 .../service/calendar/caldav/IcalUtils.java         |  4 +-
 .../openmeetings/service/mail/EmailManager.java    |  6 ++-
 .../mail/template/AbstractTemplatePage.java        |  5 +-
 .../subject/RecordingExpiringTemplate.java         |  5 +-
 .../service/notifier/MailNotifier.java             |  8 +--
 .../service/notifier/TextNotifier.java             | 10 ++--
 .../service/room/InvitationManager.java            |  8 +--
 .../service/scheduler/AbstractJob.java             |  8 +--
 .../openmeetings/service/scheduler/CleanupJob.java | 10 ++--
 .../service/scheduler/ReminderJob.java             | 14 ++---
 .../web/admin/AdminUserChoiceProvider.java         |  6 ++-
 .../openmeetings/web/admin/backup/BackupPanel.java |  4 +-
 .../backup/BackupUploadResourceReference.java      |  7 +--
 .../web/admin/configurations/ConfigForm.java       |  6 ++-
 .../web/admin/configurations/ConfigsPanel.java     |  5 +-
 .../web/admin/connection/ConnectionsPanel.java     | 12 +++--
 .../openmeetings/web/admin/email/EmailForm.java    |  5 +-
 .../openmeetings/web/admin/extra/ExtraForm.java    |  7 +--
 .../openmeetings/web/admin/groups/GroupForm.java   | 10 ++--
 .../web/admin/groups/GroupUsersPanel.java          |  5 +-
 .../openmeetings/web/admin/ldaps/LdapForm.java     |  6 ++-
 .../openmeetings/web/admin/oauth/OAuthForm.java    |  4 +-
 .../openmeetings/web/admin/rooms/RoomForm.java     | 13 ++---
 .../openmeetings/web/admin/rooms/RoomsPanel.java   |  6 ++-
 .../web/admin/users/PasswordDialog.java            |  5 +-
 .../openmeetings/web/admin/users/UserForm.java     | 11 ++--
 .../openmeetings/web/admin/users/UsersPanel.java   |  5 +-
 .../apache/openmeetings/web/app/Application.java   | 20 +++----
 .../apache/openmeetings/web/app/ClientManager.java | 11 ++--
 .../apache/openmeetings/web/app/TimerService.java  | 12 +++--
 .../apache/openmeetings/web/app/UserManager.java   | 14 ++---
 .../apache/openmeetings/web/app/WebSession.java    | 21 ++++----
 .../openmeetings/web/app/WhiteboardManager.java    |  6 ++-
 .../openmeetings/web/common/GeneralUserForm.java   |  8 +--
 .../web/common/GroupChoiceProvider.java            |  8 +--
 .../openmeetings/web/common/InvitationForm.java    |  8 +--
 .../apache/openmeetings/web/common/MainPanel.java  | 10 ++--
 .../openmeetings/web/common/OmWebSocketPanel.java  |  6 ++-
 .../openmeetings/web/common/ProfileImagePanel.java |  6 ++-
 .../web/common/UploadableProfileImagePanel.java    |  8 +--
 .../web/common/tree/ConvertingErrorsDialog.java    |  4 +-
 .../web/common/tree/FileItemPanel.java             |  6 ++-
 .../web/common/tree/FileTreePanel.java             |  6 +--
 .../openmeetings/web/common/tree/FolderPanel.java  |  8 +--
 .../web/common/tree/OmTreeProvider.java            | 10 ++--
 .../web/common/upload/UploadResourceReference.java |  6 +--
 .../openmeetings/web/pages/ActivatePage.java       |  6 ++-
 .../apache/openmeetings/web/pages/HashPage.java    |  7 +--
 .../apache/openmeetings/web/pages/ResetPage.java   |  5 +-
 .../web/pages/auth/ForgetPasswordDialog.java       |  7 +--
 .../openmeetings/web/pages/auth/OtpDialog.java     |  8 +--
 .../web/pages/auth/RegisterDialog.java             |  7 +--
 .../web/pages/auth/ResetPasswordDialog.java        |  5 +-
 .../openmeetings/web/pages/auth/SignInDialog.java  | 12 +++--
 .../openmeetings/web/pages/auth/SignInPage.java    |  9 ++--
 .../web/pages/install/InstallWizard.java           |  5 +-
 .../openmeetings/web/room/NicknameDialog.java      |  6 ++-
 .../apache/openmeetings/web/room/RoomPanel.java    | 19 +++----
 .../web/room/RoomResourceReference.java            | 11 ++--
 .../web/room/activities/ActivitiesPanel.java       |  7 ++-
 .../openmeetings/web/room/menu/ActionsSubMenu.java |  7 ++-
 .../openmeetings/web/room/menu/ExtrasSubMenu.java  |  8 +--
 .../openmeetings/web/room/menu/PollsSubMenu.java   |  9 ++--
 .../web/room/menu/RoomInvitationForm.java          | 11 ++--
 .../openmeetings/web/room/menu/RoomMenuPanel.java  | 14 ++---
 .../web/room/menu/SipDialerDialog.java             |  6 ++-
 .../web/room/poll/CreatePollDialog.java            | 10 ++--
 .../web/room/poll/PollResultsDialog.java           |  8 +--
 .../openmeetings/web/room/poll/VoteDialog.java     |  8 +--
 .../web/room/sidebar/RoomFilePanel.java            |  9 ++--
 .../sidebar/RoomFileUploadResourceReference.java   | 12 +++--
 .../openmeetings/web/room/sidebar/RoomSidebar.java |  6 ++-
 .../openmeetings/web/room/wb/InterviewWbPanel.java |  7 ++-
 .../apache/openmeetings/web/room/wb/WbPanel.java   | 11 ++--
 .../web/user/InviteUserMessageDialog.java          |  8 +--
 .../web/user/InviteUserToRoomDialog.java           |  8 +--
 .../openmeetings/web/user/MessageDialog.java       | 18 ++++---
 .../openmeetings/web/user/UserInfoDialog.java      |  8 +--
 .../web/user/calendar/AppointmentDialog.java       | 14 ++---
 .../web/user/calendar/CalendarDialog.java          |  8 +--
 .../web/user/calendar/CalendarPanel.java           |  9 ++--
 .../apache/openmeetings/web/user/chat/Chat.java    | 13 +++--
 .../openmeetings/web/user/chat/ChatForm.java       | 12 +++--
 .../openmeetings/web/user/chat/ChatToolbar.java    |  7 +--
 .../web/user/dashboard/MyRoomsWidgetView.java      |  7 ++-
 .../web/user/dashboard/RecentRoomsWidgetView.java  |  7 ++-
 .../web/user/dashboard/WelcomeWidgetView.java      |  9 ++--
 .../dashboard/admin/AdminCleanupInfoDialog.java    | 10 ++--
 .../web/user/profile/ChangePasswordDialog.java     |  6 ++-
 .../web/user/profile/EditProfileForm.java          |  5 +-
 .../web/user/profile/InvitationDetails.java        |  6 ++-
 .../web/user/profile/MessagesContactsPanel.java    | 12 +++--
 .../web/user/profile/ToggleOtpDialog.java          |  7 +--
 .../web/user/profile/UserProfilePanel.java         |  9 ++--
 .../web/user/profile/UserSearchPanel.java          | 10 ++--
 .../web/user/profile/WidgetsPanel.java             |  7 ++-
 .../web/user/record/RecordingInvitationForm.java   |  7 ++-
 .../user/record/RecordingResourceReference.java    | 11 ++--
 .../web/user/record/RecordingsPanel.java           | 11 ++--
 .../openmeetings/web/user/record/VideoInfo.java    |  7 ++-
 .../openmeetings/web/user/rooms/RoomListPanel.java |  6 ++-
 .../openmeetings/web/user/rooms/RoomsPanel.java    | 11 ++--
 .../web/user/rooms/RoomsSelectorPanel.java         |  7 ++-
 .../web/user/rooms/RoomsTabbedPanel.java           |  8 +--
 .../web/util/FileItemResourceReference.java        |  6 ++-
 .../web/util/GroupLogoResourceReference.java       |  8 +--
 .../web/util/ProfileImageResourceReference.java    |  5 +-
 .../openmeetings/web/util/UserChoiceProvider.java  |  7 ++-
 .../util/logging/OpenMeetingsMetricsServlet.java   |  4 +-
 .../WEB-INF/classes/META-INF/h2_persistence.xml    |  4 +-
 openmeetings-web/src/main/webapp/WEB-INF/web.xml   |  6 ++-
 .../apache/openmeetings/AbstractOmServerTest.java  | 16 +++---
 .../openmeetings/backup/AbstractTestImport.java    |  6 ++-
 .../org/apache/openmeetings/backup/TestExport.java |  4 +-
 .../org/apache/openmeetings/backup/TestImport.java | 16 +++---
 .../openmeetings/backup/TestImportCalendar.java    |  8 +--
 .../apache/openmeetings/backup/TestImportOld.java  | 10 ++--
 .../apache/openmeetings/backup/TestImportRoom.java |  6 ++-
 .../apache/openmeetings/backup/TestImportUser.java |  6 ++-
 .../calendar/TestAppointmentAddAppointment.java    |  8 +--
 .../calendar/TestAppointmentSchedulerTask.java     |  6 ++-
 .../openmeetings/calendar/TestGetAppointment.java  |  6 ++-
 .../openmeetings/calendar/TestOmCalendar.java      |  6 ++-
 .../openmeetings/calendar/TestSendIcalMessage.java |  5 +-
 .../openmeetings/core/file/TestFileProcessor.java  |  6 ++-
 .../apache/openmeetings/db/dao/TestFileDao.java    |  8 +--
 .../apache/openmeetings/db/dao/TestRoomDao.java    |  6 ++-
 .../openmeetings/invitiation/TestInvitation.java   | 10 ++--
 .../org/apache/openmeetings/ldap/TestLdap.java     |  6 ++-
 .../openmeetings/service/scheduler/TestJob.java    |  8 +--
 .../apache/openmeetings/user/TestUserGroup.java    |  6 ++-
 .../org/apache/openmeetings/userdata/TestAuth.java |  6 ++-
 .../openmeetings/web/pages/TestHashPage.java       |  9 ++--
 openmeetings-web/src/test/jetty/web.xml            |  6 ++-
 openmeetings-webservice/pom.xml                    |  5 +-
 .../openmeetings/webservice/BaseWebService.java    | 12 +++--
 .../webservice/CalendarWebService.java             |  7 +--
 .../openmeetings/webservice/FileWebService.java    |  5 +-
 .../openmeetings/webservice/GroupWebService.java   |  7 +--
 .../webservice/RecordingWebService.java            |  5 +-
 .../openmeetings/webservice/RoomWebService.java    | 13 ++---
 .../openmeetings/webservice/UserWebService.java    | 11 ++--
 .../openmeetings/webservice/WbWebService.java      |  7 +--
 pom.xml                                            | 61 ++++++++++++++++++++--
 266 files changed, 1713 insertions(+), 1318 deletions(-)

diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 4e7650dab..95ab8775b 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -89,10 +89,6 @@
 			<groupId>org.apache.wicket</groupId>
 			<artifactId>wicket-core</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>org.apache.wicket</groupId>
-			<artifactId>wicket-ioc</artifactId>
-		</dependency>
 		<dependency>
 			<groupId>org.apache.directory.api</groupId>
 			<artifactId>api-all</artifactId>
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
index dd4770170..58fc910a0 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
@@ -56,7 +56,9 @@ import org.apache.openmeetings.util.process.ProcessResultList;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 public abstract class BaseConverter {
 	private static final Logger log = LoggerFactory.getLogger(BaseConverter.class);
@@ -66,13 +68,13 @@ public abstract class BaseConverter {
 	public static final int TIME_TO_WAIT_FOR_FRAME = 5 * MINUTE_MULTIPLIER;
 	public static final double HALF_STEP = 1. / 2;
 
-	@Autowired
+	@Inject
 	protected ConfigurationDao cfgDao;
-	@Autowired
+	@Inject
 	protected RecordingChunkDao chunkDao;
-	@Autowired
+	@Inject
 	protected FileItemLogDao logDao;
-	@Autowired
+	@Inject
 	protected RecordingDao recordingDao;
 
 	protected record Dimension(int width, int height) {}
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
index 379f09c19..39bbb873e 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
@@ -41,17 +41,19 @@ import org.jodconverter.local.LocalConverter;
 import org.jodconverter.local.office.LocalOfficeManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 @Component
 public class DocumentConverter {
 	private static final Logger log = LoggerFactory.getLogger(DocumentConverter.class);
 	private static final String JOD_JOD_NAME = "doJodConvert";
 
-	@Autowired
+	@Inject
 	protected ConfigurationDao cfgDao;
-	@Autowired
+	@Inject
 	private ImageConverter imageConverter;
 
 	public ProcessResultList convertPDF(FileItem f, StoredFile sf) throws Exception {
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
index 36af1c820..ce92aad1d 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
@@ -55,16 +55,18 @@ import org.apache.tika.parser.Parser;
 import org.apache.tika.parser.image.ImageParser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 import org.xml.sax.helpers.DefaultHandler;
 
+import jakarta.inject.Inject;
+
 @Component
 public class ImageConverter extends BaseConverter {
 	private static final Logger log = LoggerFactory.getLogger(ImageConverter.class);
 	private static final String PAGE_TMPLT = DOC_PAGE_PREFIX + "-%04d." + EXTENSION_PNG;
 
-	@Autowired
+	@Inject
 	private UserDao userDao;
 
 	public ProcessResultList convertImage(BaseFileItem f, StoredFile sf, Optional<DoubleConsumer> progress) throws IOException {
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
index e4ac79b52..8358993d6 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
@@ -41,21 +41,23 @@ import org.apache.openmeetings.util.process.ProcessResultList;
 import org.apache.tika.exception.UnsupportedFormatException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 @Component
 public class FileProcessor {
 	private static final Logger log = LoggerFactory.getLogger(FileProcessor.class);
 
 	//Spring loaded Beans
-	@Autowired
+	@Inject
 	private VideoConverter videoConverter;
-	@Autowired
+	@Inject
 	private FileItemDao fileDao;
-	@Autowired
+	@Inject
 	private ImageConverter imageConverter;
-	@Autowired
+	@Inject
 	private DocumentConverter docConverter;
 
 	public ProcessResultList processFile(FileItem f, InputStream is, Optional<DoubleConsumer> progress) throws Exception {
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
index bdce1e700..5baa5f2d7 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
@@ -74,9 +74,11 @@ import org.apache.openmeetings.util.StoredFile;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 /**
  * Management of optional LDAP Login
  *
@@ -134,13 +136,14 @@ public class LdapLoginManager {
 		, ATTRIBUTE
 		, QUERY
 	}
-	@Autowired
+
+	@Inject
 	private LdapConfigDao ldapConfigDao;
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private GroupDao groupDao;
-	@Autowired
+	@Inject
 	private ImageConverter imageConverter;
 
 	private static void bindAdmin(LdapConnection conn, LdapOptions options) throws LdapException {
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
index d673220d2..027e203b4 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
@@ -47,11 +47,12 @@ import org.apache.openmeetings.util.mail.MailUtil;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.core.task.TaskExecutor;
 import org.springframework.stereotype.Component;
 
 import jakarta.activation.DataHandler;
+import jakarta.inject.Inject;
 import jakarta.mail.Authenticator;
 import jakarta.mail.BodyPart;
 import jakarta.mail.Message;
@@ -79,9 +80,9 @@ public class MailHandler {
 	private static final int MAIL_SEND_TIMEOUT = 60 * 60 * 1000; // 1 hour
 	private static final int MAXIMUM_ERROR_COUNT = 5;
 
-	@Autowired
+	@Inject
 	private TaskExecutor taskExecutor;
-	@Autowired
+	@Inject
 	private MailMessageDao mailMessageDao;
 
 	protected MimeMessage appendIcsBody(MimeMessage msg, MailMessage m) throws Exception {
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index f037a424d..e82e7264b 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -42,13 +42,26 @@
 			<groupId>org.glassfish.jaxb</groupId>
 			<artifactId>jaxb-runtime</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.wicket</groupId>
+			<artifactId>wicket-ioc</artifactId>
+		</dependency>
 		<dependency>
 			<groupId>org.wicketstuff</groupId>
 			<artifactId>wicketstuff-datastore-hazelcast</artifactId>
 		</dependency>
 		<dependency>
-		<groupId>org.apache.openjpa</groupId>
+			<groupId>org.apache.openjpa</groupId>
 			<artifactId>openjpa</artifactId>
+			<classifier>jakarta</classifier>
+		</dependency>
+		<dependency>
+			<groupId>jakarta.persistence</groupId>
+			<artifactId>jakarta.persistence-api</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>jakarta.transaction</groupId>
+			<artifactId>jakarta.transaction-api</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/AppointmentReminderAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/AppointmentReminderAdapter.java
index c6af037fb..93d145d99 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/AppointmentReminderAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/AppointmentReminderAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import static org.apache.commons.lang3.math.NumberUtils.toInt;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.wicket.util.string.Strings;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/BooleanAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/BooleanAdapter.java
index 8b12587c0..fd61652eb 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/BooleanAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/BooleanAdapter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.db.bind.adapter;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 public class BooleanAdapter extends XmlAdapter<String, Boolean> {
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/ConfigTypeAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/ConfigTypeAdapter.java
index f85379aac..d06594d9c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/ConfigTypeAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/ConfigTypeAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import java.util.Locale;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.apache.wicket.util.string.Strings;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/DateAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/DateAdapter.java
index c681c9229..27d163ece 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/DateAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/DateAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import java.util.Date;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 public class DateAdapter extends XmlAdapter<String, Date> {
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/EntityAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/EntityAdapter.java
index b9dad2936..bf2bb5608 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/EntityAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/EntityAdapter.java
@@ -22,7 +22,7 @@ import static org.apache.commons.lang3.math.NumberUtils.toLong;
 
 import java.util.Map;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.entity.IDataProviderEntity;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/FileTypeAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/FileTypeAdapter.java
index 7f3c59afe..bf3cb55b6 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/FileTypeAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/FileTypeAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import java.util.Locale;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.wicket.util.string.Strings;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/IntAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/IntAdapter.java
index ae3b5052a..928aa56d8 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/IntAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/IntAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import static org.apache.commons.lang3.math.NumberUtils.toInt;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 public class IntAdapter extends XmlAdapter<String, Integer> {
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/LocalDateAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/LocalDateAdapter.java
index 0d3a3a8e6..d35a4b14c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/LocalDateAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/LocalDateAdapter.java
@@ -23,7 +23,7 @@ import java.time.LocalDate;
 import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.util.CalendarPatterns;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/LongAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/LongAdapter.java
index 77c3a4fea..50e1a043d 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/LongAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/LongAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import static org.apache.commons.lang3.math.NumberUtils.toLong;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 public class LongAdapter extends XmlAdapter<String, Long> {
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/OauthMapAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/OauthMapAdapter.java
index 9807541ed..9ba090398 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/OauthMapAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/OauthMapAdapter.java
@@ -22,7 +22,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.dto.user.OAuthUser;
 import org.apache.openmeetings.db.util.XmlHelper;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/PollTypeAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/PollTypeAdapter.java
index 91bffabd9..7f5205eae 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/PollTypeAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/PollTypeAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import static org.apache.commons.lang3.math.NumberUtils.toInt;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.entity.room.RoomPoll;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RecordingStatusAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RecordingStatusAdapter.java
index 0934dea9a..dbc3c8ed0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RecordingStatusAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RecordingStatusAdapter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.db.bind.adapter;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.record.Recording.Status;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomElementAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomElementAdapter.java
index 21cb13f1d..f5453cd82 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomElementAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomElementAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import java.util.Locale;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.wicket.util.string.Strings;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomTypeAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomTypeAdapter.java
index 8bb266fd8..3387e7469 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomTypeAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/RoomTypeAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import static org.apache.commons.lang3.math.NumberUtils.toInt;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.wicket.util.string.Strings;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/SalutationAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/SalutationAdapter.java
index 1d5ab519f..f5e2f80e0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/SalutationAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/SalutationAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import static org.apache.commons.lang3.math.NumberUtils.toInt;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.entity.user.User.Salutation;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserRightAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserRightAdapter.java
index fdaf3dd53..ad7655f8c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserRightAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserRightAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import java.util.Locale;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.wicket.util.string.Strings;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserTypeAdapter.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserTypeAdapter.java
index bbb0256f0..be14a2046 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserTypeAdapter.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/UserTypeAdapter.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.bind.adapter;
 
 import java.util.Locale;
 
-import javax.xml.bind.annotation.adapters.XmlAdapter;
+import jakarta.xml.bind.annotation.adapters.XmlAdapter;
 
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.wicket.util.string.Strings;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ChatDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ChatDao.java
index 2624887f3..e8a6f2c17 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ChatDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ChatDao.java
@@ -24,8 +24,8 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.entity.basic.ChatMessage;
 import org.springframework.stereotype.Repository;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
index dfff60d21..143eadb39 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
@@ -32,8 +32,9 @@ import java.util.List;
 import java.util.Set;
 import java.util.TimeZone;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.event.RemoteCommitProvider;
@@ -55,7 +56,7 @@ import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -84,11 +85,11 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
 	@PersistenceContext
 	private EntityManager em;
 
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private OAuth2Dao oauthDao;
-	@Autowired
+	@Inject
 	private IApplication app;
 
 	public void updateClusterAddresses(String addresses) throws UnknownHostException {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
index b954828ab..0269dde33 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/MailMessageDao.java
@@ -24,8 +24,8 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_STATUS;
 import java.util.Calendar;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.entity.basic.MailMessage;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
index 209860fb7..fa67ae42b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
@@ -30,10 +30,11 @@ import java.util.Date;
 import java.util.List;
 import java.util.Set;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.Query;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.openmeetings.db.dao.IDataProviderDao;
@@ -49,7 +50,7 @@ import org.apache.openmeetings.db.manager.IInvitationManager;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -59,15 +60,17 @@ public class AppointmentDao implements IDataProviderDao<Appointment>{
 	private static final Logger log = LoggerFactory.getLogger(AppointmentDao.class);
 	private static final String PARAM_START = "start";
 	private static final String PARAM_CALID = "calId";
+
 	@PersistenceContext
 	private EntityManager em;
-	@Autowired
+
+	@Inject
 	private MeetingMemberDao meetingMemberDao;
-	@Autowired
+	@Inject
 	private RoomDao roomDao;
-	@Autowired
+	@Inject
 	private ConfigurationDao cfgDao;
-	@Autowired
+	@Inject
 	private IInvitationManager invitationManager;
 
 	/*
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java
index a45c24663..e20d8c572 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java
@@ -24,8 +24,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.slf4j.Logger;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java
index 21f9c834c..aca8fafd5 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java
@@ -24,13 +24,14 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
 
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.entity.calendar.OmCalendar;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -39,7 +40,8 @@ import org.springframework.transaction.annotation.Transactional;
 public class OmCalendarDao implements IDataProviderDao<OmCalendar> {
 	@PersistenceContext
 	private EntityManager em;
-	@Autowired
+
+	@Inject
 	private AppointmentDao appointmentDao;
 
 	public List<OmCalendar> get() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
index 9ef4ce279..8a4320a6b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
@@ -23,8 +23,9 @@ import static org.apache.openmeetings.db.util.DaoHelper.single;
 
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
@@ -38,7 +39,7 @@ import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -48,11 +49,12 @@ public class BaseFileItemDao implements IDataProviderDao<BaseFileItem> {
 	private static final Logger log = LoggerFactory.getLogger(BaseFileItemDao.class);
 	@PersistenceContext
 	protected EntityManager em;
-	@Autowired
+
+	@Inject
 	private RoomDao roomDao;
-	@Autowired
+	@Inject
 	private GroupDao groupDao;
-	@Autowired
+	@Inject
 	private UserDao userDao;
 
 	public <T extends BaseFileItem> T get(String hash, Class<T> clazz) {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
index e3e5d3485..6c6f98145 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
@@ -25,7 +25,7 @@ import java.io.File;
 import java.util.Collection;
 import java.util.List;
 
-import javax.persistence.TypedQuery;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
index 1bccb9c46..0bc68bb22 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
@@ -21,8 +21,8 @@ package org.apache.openmeetings.db.dao.file;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.file.FileItemLog;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/log/ConferenceLogDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/log/ConferenceLogDao.java
index 8c25f8504..107597fa0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/log/ConferenceLogDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/log/ConferenceLogDao.java
@@ -20,8 +20,8 @@ package org.apache.openmeetings.db.dao.log;
 
 import java.util.Date;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.entity.log.ConferenceLog;
 import org.apache.openmeetings.db.entity.log.ConferenceLog.Type;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingChunkDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingChunkDao.java
index bc09bb106..bb5ef7e83 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingChunkDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingChunkDao.java
@@ -23,15 +23,16 @@ import static org.apache.openmeetings.db.util.DaoHelper.only;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.entity.record.RecordingChunk;
 import org.apache.openmeetings.db.entity.record.RecordingChunk.Status;
 import org.apache.openmeetings.db.entity.record.RecordingChunk.Type;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -42,7 +43,8 @@ public class RecordingChunkDao {
 	private static final String PARAM_RECID = "recordingId";
 	@PersistenceContext
 	private EntityManager em;
-	@Autowired
+
+	@Inject
 	private RecordingDao recordingDao;
 
 	public RecordingChunk get(Long id) {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
index b45278781..9a053bc92 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
@@ -28,7 +28,8 @@ import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.TypedQuery;
+import jakarta.inject.Inject;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.openmeetings.db.dao.file.BaseFileItemDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -39,7 +40,7 @@ import org.apache.openmeetings.db.entity.record.Recording.Status;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -52,7 +53,7 @@ import org.springframework.transaction.annotation.Transactional;
 public class RecordingDao extends BaseFileItemDao {
 	private static final Logger log = LoggerFactory.getLogger(RecordingDao.class);
 
-	@Autowired
+	@Inject
 	private UserDao userDao;
 
 	@Override
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/ExtraMenuDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/ExtraMenuDao.java
index 814c2d2c1..1a975f490 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/ExtraMenuDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/ExtraMenuDao.java
@@ -24,12 +24,12 @@ import static org.apache.openmeetings.db.util.DaoHelper.single;
 
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
 
 import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao;
 import org.apache.openmeetings.db.entity.room.ExtraMenu;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
index 54c7b015c..3c1a2eaea 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
@@ -27,13 +27,13 @@ import java.time.ZonedDateTime;
 import java.util.List;
 import java.util.TimeZone;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.persistence.criteria.Subquery;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
+import jakarta.persistence.criteria.Subquery;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.entity.record.Recording;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
index c2d42b649..4707a3af6 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
@@ -24,9 +24,9 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.Query;
 
 import org.apache.openmeetings.db.entity.room.RoomPoll;
 import org.apache.openmeetings.db.entity.room.RoomPollAnswer;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
index 9eed7c2fb..76c820fc0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
@@ -35,13 +35,14 @@ import java.util.List;
 import java.util.Set;
 import java.util.TimeZone;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.TypedQuery;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
 
 import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
@@ -58,7 +59,7 @@ import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -73,11 +74,11 @@ public class RoomDao implements IGroupAdminDataProviderDao<Room> {
 
 	@PersistenceContext
 	private EntityManager em;
-	@Autowired
+	@Inject
 	private ConfigurationDao cfgDao;
-	@Autowired
+	@Inject
 	private ISipManager sipManager;
-	@Autowired
+	@Inject
 	private UserDao userDao;
 
 	@Override
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java
index d2a6a5ea0..9e9520d2c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java
@@ -24,10 +24,11 @@ import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.PersistenceException;
-import javax.persistence.TypedQuery;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.PersistenceException;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -36,7 +37,7 @@ import org.apache.openmeetings.db.util.DaoHelper;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -56,7 +57,7 @@ public class LdapConfigDao implements IDataProviderDao<LdapConfig> {
 	@PersistenceContext
 	private EntityManager em;
 
-	@Autowired
+	@Inject
 	private UserDao userDao;
 
 	@Override
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
index c626c510c..3dc7872e8 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
@@ -24,8 +24,9 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.isAllowRegister
 
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
@@ -33,7 +34,7 @@ import org.apache.openmeetings.db.entity.server.LdapConfig;
 import org.apache.openmeetings.db.entity.server.OAuthServer;
 import org.apache.openmeetings.db.util.DaoHelper;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -43,7 +44,8 @@ public class OAuth2Dao implements IDataProviderDao<OAuthServer> {
 	private static final List<String> searchFields = List.of("name");
 	@PersistenceContext
 	private EntityManager em;
-	@Autowired
+
+	@Inject
 	private ConfigurationDao cfgDao;
 
 	public List<OAuthServer> getActive() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java
index 5dbeab254..da55f07c2 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java
@@ -23,8 +23,8 @@ import static org.apache.openmeetings.db.util.DaoHelper.only;
 
 import java.util.Date;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.dto.room.RoomOptionsDTO;
 import org.apache.openmeetings.db.entity.server.SOAPLogin;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
index fd67e9b05..d8da2e383 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
@@ -23,8 +23,8 @@ import static java.util.UUID.randomUUID;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.slf4j.Logger;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
index 7c0303479..22effd4fe 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
@@ -25,12 +25,12 @@ import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 import java.util.Collection;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
 
 import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao;
 import org.apache.openmeetings.db.entity.user.Group;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java
index d72e4fc4e..3d10ba07c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java
@@ -27,12 +27,12 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.entity.user.GroupUser;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
index b6ad0bd7d..3e14a9de7 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
@@ -28,10 +28,10 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.Query;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.entity.user.PrivateMessage;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java
index 9fd437aa0..165d2a130 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java
@@ -25,8 +25,8 @@ import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.entity.user.PrivateMessageFolder;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserContactDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserContactDao.java
index f6576d09e..332325f25 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserContactDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserContactDao.java
@@ -25,14 +25,15 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.openmeetings.db.entity.user.UserContact;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -43,7 +44,8 @@ public class UserContactDao {
 	private static final String PARAM_OWNERID = "ownerId";
 	@PersistenceContext
 	private EntityManager em;
-	@Autowired
+
+	@Inject
 	private UserDao userDao;
 
 	public UserContact add(Long userId, Long ownerId, boolean pending) {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
index 41ecfd549..aff76369c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
@@ -44,14 +44,15 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Set;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.JoinType;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.persistence.criteria.Subquery;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.TypedQuery;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.JoinType;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
+import jakarta.persistence.criteria.Subquery;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Health.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Health.java
index 718802dfd..6b6310d24 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Health.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Health.java
@@ -22,9 +22,9 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.isInitComplete;
 
 import java.io.Serializable;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
index cd31c4a24..c8f0fdd8c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
@@ -20,9 +20,9 @@ package org.apache.openmeetings.db.dto.basic;
 
 import java.io.Serializable;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.util.OmVersion;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java
index de3ed5ddc..a26e8f95f 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java
@@ -20,10 +20,10 @@ package org.apache.openmeetings.db.dto.basic;
 
 import java.io.Serializable;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlType;
 
 import org.apache.openmeetings.util.OmException;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
index 2a904e002..f197924a2 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
@@ -25,9 +25,9 @@ import java.util.Date;
 import java.util.List;
 import java.util.TimeZone;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.dto.room.RoomDTO;
 import org.apache.openmeetings.db.dto.user.UserDTO;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
index 4fa265da7..0a5875132 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
@@ -22,9 +22,9 @@ import static org.apache.openmeetings.db.util.DtoHelper.optLong;
 
 import java.io.Serializable;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
index e1c77eaca..67965760e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
@@ -21,9 +21,9 @@ package org.apache.openmeetings.db.dto.file;
 import java.io.Serializable;
 import java.util.List;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.entity.file.FileItem;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileItemDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileItemDTO.java
index d92977504..3e8b6fdd5 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileItemDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileItemDTO.java
@@ -22,9 +22,9 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
 import org.apache.openmeetings.db.entity.file.FileItem;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java
index 4ccaf5ced..36351c5d6 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/record/RecordingDTO.java
@@ -23,9 +23,9 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.entity.record.Recording;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/InvitationDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/InvitationDTO.java
index d9741506d..c531d4fa1 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/InvitationDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/InvitationDTO.java
@@ -20,9 +20,9 @@ package org.apache.openmeetings.db.dto.room;
 
 import java.io.Serializable;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.entity.room.Invitation.Valid;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
index f774f1bb8..76c950d87 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
@@ -29,9 +29,9 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomFileDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomFileDTO.java
index 053f7f9c4..1adb40567 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomFileDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomFileDTO.java
@@ -24,9 +24,9 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.entity.room.RoomFile;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
index 000762a24..1509e5248 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
@@ -22,9 +22,9 @@ import static org.apache.openmeetings.db.util.DtoHelper.optLong;
 
 import java.io.Serializable;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import com.github.openjson.JSONObject;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/ExternalUserDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/ExternalUserDTO.java
index 2f1403005..f3c2964e2 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/ExternalUserDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/ExternalUserDTO.java
@@ -20,9 +20,9 @@ package org.apache.openmeetings.db.dto.user;
 
 import java.io.Serializable;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import com.github.openjson.JSONObject;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/GroupDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/GroupDTO.java
index 828d8006e..700b46297 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/GroupDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/GroupDTO.java
@@ -22,7 +22,7 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.entity.user.Group;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
index b4848be43..dbd77aa15 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
@@ -28,7 +28,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.db.entity.user.User;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserSearchResult.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserSearchResult.java
index 04530d1d2..caf9b370c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserSearchResult.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserSearchResult.java
@@ -21,7 +21,7 @@ package org.apache.openmeetings.db.dto.user;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.dto.basic.SearchResult;
 import org.apache.openmeetings.db.entity.user.User;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/HistoricalEntity.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/HistoricalEntity.java
index 916985cda..978cb1129 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/HistoricalEntity.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/HistoricalEntity.java
@@ -20,14 +20,14 @@ package org.apache.openmeetings.db.entity;
 
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.PrePersist;
-import javax.persistence.PreUpdate;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.MappedSuperclass;
+import jakarta.persistence.PrePersist;
+import jakarta.persistence.PreUpdate;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
 import org.apache.openmeetings.db.bind.adapter.DateAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
index 13512f900..6d14f6eb0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ChatMessage.java
@@ -22,23 +22,23 @@ import static org.apache.openmeetings.db.bind.Constants.CHAT_NODE;
 
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.Lob;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
index 6b94bb824..529ccdded 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
@@ -21,25 +21,25 @@ package org.apache.openmeetings.db.entity.basic;
 import static java.lang.Boolean.TRUE;
 import static org.apache.openmeetings.db.bind.Constants.CFG_NODE;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.JoinColumn;
-import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Index;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.Lob;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.ConfigTypeAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
index 90a296243..4eb756697 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java
@@ -20,16 +20,16 @@ package org.apache.openmeetings.db.entity.basic;
 
 import java.io.IOException;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Lob;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Lob;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
 
 import org.apache.openmeetings.db.entity.HistoricalEntity;
 import org.apache.openmeetings.util.mail.IcalHandler;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
index e592d3bcb..8bd27db77 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/Appointment.java
@@ -26,28 +26,28 @@ import java.util.Date;
 import java.util.List;
 import java.util.TimeZone;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.JoinColumn;
-import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Index;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.Lob;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.AppointmentReminderAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
index 63a5de1e1..d3ab90cef 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/MeetingMember.java
@@ -20,24 +20,24 @@ package org.apache.openmeetings.db.entity.calendar;
 
 import static org.apache.openmeetings.db.bind.Constants.MMEMBER_NODE;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.AppointmentAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java
index 0dd1bfca8..7392bb908 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/calendar/OmCalendar.java
@@ -20,23 +20,23 @@ package org.apache.openmeetings.db.entity.calendar;
 
 import static org.apache.openmeetings.db.bind.Constants.CALENDAR_NODE;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.LongAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
index ccab06e80..a03d09ca7 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
@@ -36,23 +36,23 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Index;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openmeetings.db.bind.adapter.FileTypeAdapter;
 import org.apache.openmeetings.db.bind.adapter.IntAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
index 90e84f5b0..fd8b147a8 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
@@ -20,14 +20,14 @@ package org.apache.openmeetings.db.entity.file;
 
 import static org.apache.openmeetings.db.bind.Constants.FILE_NODE;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.NamedQuery;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.NamedQuery;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openmeetings.db.bind.adapter.LongAdapter;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
index b88205963..045f57718 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
@@ -22,14 +22,14 @@ import static org.apache.openmeetings.util.process.ProcessResult.ZERO;
 
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Lob;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Lob;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
 
 import org.apache.openmeetings.db.entity.IDataProviderEntity;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java
index aab393b79..56a5e9437 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/log/ConferenceLog.java
@@ -20,15 +20,15 @@ package org.apache.openmeetings.db.entity.log;
 
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
 
 import org.apache.openmeetings.db.entity.IDataProviderEntity;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
index 2253b34c4..7555aa00f 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
@@ -26,22 +26,22 @@ import static org.apache.openmeetings.util.OmFileHelper.RECORDING_FILE_NAME;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.JoinColumn;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementWrapper;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElementWrapper;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.FetchAttribute;
 import org.apache.openjpa.persistence.FetchGroup;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java
index 5cf2ee32a..3d4bd4d99 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/RecordingChunk.java
@@ -20,25 +20,25 @@ package org.apache.openmeetings.db.entity.record;
 
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.DateAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/ExtraMenu.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/ExtraMenu.java
index cf8ede7b9..229b77a2e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/ExtraMenu.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/ExtraMenu.java
@@ -23,23 +23,23 @@ import static org.apache.openmeetings.db.bind.Constants.EXTRA_MENU_NODE;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.persistence.CollectionTable;
-import javax.persistence.Column;
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementWrapper;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.CollectionTable;
+import jakarta.persistence.Column;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElementWrapper;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openmeetings.db.bind.adapter.LongAdapter;
 import org.apache.openmeetings.db.entity.IDataProviderEntity;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
index be1295ae8..981c26d8c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Invitation.java
@@ -21,21 +21,21 @@ package org.apache.openmeetings.db.entity.room;
 import java.util.Date;
 import java.util.stream.Stream;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.persistence.Transient;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Index;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.entity.HistoricalEntity;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
index 09dd3ebf7..f96ca0a4d 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
@@ -29,31 +29,31 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 
-import javax.persistence.CascadeType;
-import javax.persistence.CollectionTable;
-import javax.persistence.Column;
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.JoinColumn;
-import javax.persistence.Lob;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementWrapper;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.CollectionTable;
+import jakarta.persistence.Column;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Index;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.Lob;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElementWrapper;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.ElementDependent;
 import org.apache.openjpa.persistence.FetchAttribute;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
index a9e4d71de..fdd1cc440 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
@@ -20,20 +20,20 @@ package org.apache.openmeetings.db.entity.room;
 
 import static org.apache.openmeetings.db.bind.Constants.ROOM_FILE_NODE;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.FileAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
index 495979f22..07785d07b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomGroup.java
@@ -20,21 +20,21 @@ package org.apache.openmeetings.db.entity.room;
 
 import static org.apache.openmeetings.db.bind.Constants.ROOM_GRP_NODE;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.GroupAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
index f26fd32f9..5a5725876 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
@@ -18,22 +18,22 @@
  */
 package org.apache.openmeetings.db.entity.room;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
index f34776994..f917b9e24 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
@@ -24,28 +24,28 @@ import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementWrapper;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElementWrapper;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPollAnswer.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPollAnswer.java
index 43e6bacf2..83afe02f4 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPollAnswer.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPollAnswer.java
@@ -20,22 +20,22 @@ package org.apache.openmeetings.db.entity.room;
 
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
index 1e322e548..40f64af8f 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/LdapConfig.java
@@ -20,23 +20,23 @@ package org.apache.openmeetings.db.entity.server;
 
 import static org.apache.openmeetings.db.bind.Constants.LDAP_NODE;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.Lob;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
index 049eba852..9e55662cb 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/OAuthServer.java
@@ -23,27 +23,27 @@ import static org.apache.openmeetings.db.bind.Constants.OAUTH_NODE;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import javax.persistence.CollectionTable;
-import javax.persistence.Column;
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.MapKeyColumn;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAnyElement;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.CollectionTable;
+import jakarta.persistence.Column;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.MapKeyColumn;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlAnyElement;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
 import org.apache.openmeetings.db.bind.adapter.LongAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/SOAPLogin.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/SOAPLogin.java
index 6f884a62f..e57771e5e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/SOAPLogin.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/SOAPLogin.java
@@ -21,14 +21,14 @@ package org.apache.openmeetings.db.entity.server;
 import java.io.Serializable;
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Index;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name = "soaplogin", indexes = {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java
index 9ba80c533..3e44cc67c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Sessiondata.java
@@ -21,18 +21,18 @@ package org.apache.openmeetings.db.entity.server;
 import java.io.Serializable;
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.Lob;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Index;
+import jakarta.persistence.Lob;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 @Entity
 @NamedQuery(name = "getSessionById", query = "SELECT s FROM Sessiondata s WHERE s.sessionId LIKE :sessionId")
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java
index 4836fed09..99f8118f8 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Address.java
@@ -18,19 +18,19 @@
  */
 package org.apache.openmeetings.db.entity.user;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.Lob;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Index;
+import jakarta.persistence.Lob;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
 
 import org.apache.openmeetings.db.entity.HistoricalEntity;
 
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
index 1e9404c7d..30267895d 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/AsteriskSipUser.java
@@ -20,20 +20,20 @@ package org.apache.openmeetings.db.entity.user;
 
 import java.io.Serializable;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openmeetings.db.bind.adapter.IntAdapter;
 import org.apache.openmeetings.db.bind.adapter.LongAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
index 30b0c33e9..ee91698b1 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
@@ -20,20 +20,20 @@ package org.apache.openmeetings.db.entity.user;
 
 import static org.apache.openmeetings.db.bind.Constants.GROUP_NODE;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Index;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
 import org.apache.openmeetings.db.bind.adapter.IntAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java
index b693ef542..7df5736a0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/GroupUser.java
@@ -18,22 +18,22 @@
  */
 package org.apache.openmeetings.db.entity.user;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
index 3ca489ce2..d50aedb17 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
@@ -22,23 +22,23 @@ import static org.apache.openmeetings.db.bind.Constants.MSG_NODE;
 
 import java.util.Date;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.Lob;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
index 310b225ab..87bf1d081 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
@@ -22,19 +22,18 @@ import static org.apache.openmeetings.db.bind.Constants.MSG_FOLDER_NODE;
 
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openmeetings.db.bind.adapter.DateAdapter;
 import org.apache.openmeetings.db.bind.adapter.LongAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
index 7bf3340fc..220826e97 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
@@ -36,34 +36,34 @@ import java.util.Set;
 import java.util.StringJoiner;
 import java.util.stream.Stream;
 
-import javax.persistence.Basic;
-import javax.persistence.CascadeType;
-import javax.persistence.CollectionTable;
-import javax.persistence.Column;
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Index;
-import javax.persistence.JoinColumn;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.PrimaryKeyJoinColumn;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementWrapper;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Basic;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.CollectionTable;
+import jakarta.persistence.Column;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Index;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.PrimaryKeyJoinColumn;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElementWrapper;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.ElementDependent;
 import org.apache.openjpa.persistence.FetchAttribute;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java
index bbf8b67df..fed9a1a97 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java
@@ -23,22 +23,22 @@ import static org.apache.openmeetings.db.bind.Constants.CONTACT_NODE;
 import java.io.Serializable;
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.XmlTransient;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/CalendarMapper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/CalendarMapper.java
index 6fd6d68f1..a12beaae2 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/CalendarMapper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/CalendarMapper.java
@@ -30,18 +30,20 @@ import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.wicket.util.string.Strings;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 @Component
 public class CalendarMapper {
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private AppointmentDao appointmentDao;
-	@Autowired
+	@Inject
 	private UserMapper uMapper;
-	@Autowired
+	@Inject
 	private RoomMapper rMapper;
 
 	public Appointment get(AppointmentDTO dto, User u) {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/RoomMapper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/RoomMapper.java
index 51020af71..39b18cdcc 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/RoomMapper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/RoomMapper.java
@@ -41,20 +41,22 @@ import org.apache.openmeetings.util.crypt.CryptProvider;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 @Component
 public class RoomMapper {
 	private static final Logger log = LoggerFactory.getLogger(RoomMapper.class);
 	private static final FastDateFormat SDF = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
-	@Autowired
+	@Inject
 	private RoomDao roomDao;
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private GroupDao groupDao;
-	@Autowired
+	@Inject
 	private FileItemDao fileDao;
 
 	public Room get(RoomDTO dto) {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/UserMapper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/UserMapper.java
index cd5fc13fe..23d9fc740 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/UserMapper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/mapper/UserMapper.java
@@ -26,14 +26,16 @@ import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.wicket.util.string.Strings;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 @Component
 public class UserMapper {
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private GroupDao groupDao;
 
 	public User get(UserDTO dto) {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java
index 3e5515e7e..3a3435e52 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java
@@ -24,16 +24,16 @@ import java.util.function.BiFunction;
 import java.util.function.Function;
 import java.util.stream.Stream;
 
-import javax.persistence.EntityManager;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.AbstractQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.Path;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.persistence.criteria.Subquery;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.TypedQuery;
+import jakarta.persistence.criteria.AbstractQuery;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Expression;
+import jakarta.persistence.criteria.Path;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
+import jakarta.persistence.criteria.Subquery;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.OpenJPAEntityManager;
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
index c47267b1f..fdc95b1eb 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
@@ -62,8 +62,9 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Marshaller;
+import jakarta.inject.Inject;
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.Marshaller;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.openmeetings.db.dao.basic.ChatDao;
@@ -101,7 +102,7 @@ import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
 /**
@@ -120,39 +121,39 @@ public class BackupExport {
  ###############################################
 """;
 
-	@Autowired
+	@Inject
 	private AppointmentDao appointmentDao;
-	@Autowired
+	@Inject
 	private OmCalendarDao calendarDao;
-	@Autowired
+	@Inject
 	private FileItemDao fileItemDao;
-	@Autowired
+	@Inject
 	private RecordingDao recordingDao;
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private MeetingMemberDao meetingMemberDao;
-	@Autowired
+	@Inject
 	private LdapConfigDao ldapConfigDao;
-	@Autowired
+	@Inject
 	private PrivateMessageDao privateMessageDao;
-	@Autowired
+	@Inject
 	private PrivateMessageFolderDao privateMessageFolderDao;
-	@Autowired
+	@Inject
 	private UserContactDao userContactDao;
-	@Autowired
+	@Inject
 	private PollDao pollManager;
-	@Autowired
+	@Inject
 	private ConfigurationDao configurationDao;
-	@Autowired
+	@Inject
 	private ChatDao chatDao;
-	@Autowired
+	@Inject
 	private OAuth2Dao auth2Dao;
-	@Autowired
+	@Inject
 	private GroupDao groupDao;
-	@Autowired
+	@Inject
 	private RoomDao roomDao;
-	@Autowired
+	@Inject
 	private ExtraMenuDao menuDao;
 
 	public void performExport(File zip, boolean includeFiles, AtomicInteger progress) throws Exception {
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 5f1d85126..d2648b120 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -167,8 +167,9 @@ import java.util.regex.Pattern;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Unmarshaller;
+import jakarta.inject.Inject;
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.Unmarshaller;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamReader;
@@ -236,7 +237,7 @@ import org.apache.openmeetings.util.crypt.SCryptImplementation;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
 @Component
@@ -322,41 +323,41 @@ public class BackupImport {
 			);
 	private static final Pattern UUID_PATTERN = Pattern.compile("^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$");
 
-	@Autowired
+	@Inject
 	private AppointmentDao appointmentDao;
-	@Autowired
+	@Inject
 	private OmCalendarDao calendarDao;
-	@Autowired
+	@Inject
 	private RoomDao roomDao;
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private RecordingDao recordingDao;
-	@Autowired
+	@Inject
 	private PrivateMessageFolderDao privateMessageFolderDao;
-	@Autowired
+	@Inject
 	private PrivateMessageDao privateMessageDao;
-	@Autowired
+	@Inject
 	private MeetingMemberDao meetingMemberDao;
-	@Autowired
+	@Inject
 	private LdapConfigDao ldapConfigDao;
-	@Autowired
+	@Inject
 	private FileItemDao fileItemDao;
-	@Autowired
+	@Inject
 	private UserContactDao userContactDao;
-	@Autowired
+	@Inject
 	private PollDao pollDao;
-	@Autowired
+	@Inject
 	private ConfigurationDao cfgDao;
-	@Autowired
+	@Inject
 	private ChatDao chatDao;
-	@Autowired
+	@Inject
 	private OAuth2Dao auth2Dao;
-	@Autowired
+	@Inject
 	private GroupDao groupDao;
-	@Autowired
+	@Inject
 	private ExtraMenuDao menuDao;
-	@Autowired
+	@Inject
 	private DocumentConverter docConverter;
 
 	private final Map<Long, Long> ldapMap = new HashMap<>();
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java
index 3e33e12e4..2429ac0f6 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java
@@ -23,11 +23,11 @@ import static org.apache.openmeetings.db.bind.Constants.VERSION_NODE;
 
 import java.io.Serializable;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import jakarta.xml.bind.annotation.XmlAccessType;
+import jakarta.xml.bind.annotation.XmlAccessorType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openmeetings.db.bind.adapter.IntAdapter;
 import org.apache.openmeetings.util.OmVersion;
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
index 1f8f7ce01..17f2a33f7 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -148,9 +148,11 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 @Component
 public class ImportInitvalues {
 	private static final Logger log = LoggerFactory.getLogger(ImportInitvalues.class);
@@ -168,17 +170,17 @@ public class ImportInitvalues {
 	private static final String FNAME_PARAM = "first_name";
 	private static final String LNAME_PARAM = "last_name";
 
-	@Autowired
+	@Inject
 	private ConfigurationDao cfgDao;
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private SipManager sipDao;
-	@Autowired
+	@Inject
 	private OAuth2Dao oauthDao;
-	@Autowired
+	@Inject
 	private GroupDao groupDao;
-	@Autowired
+	@Inject
 	private RoomDao roomDao;
 
 	private int progress = 0;
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
index 810c938b1..abffc893a 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
@@ -27,7 +27,7 @@ import java.util.Date;
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.inject.Inject;
+import jakarta.inject.Inject;
 
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.openmeetings.IApplication;
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KStream.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KStream.java
index 8a6856a59..9aaff56bd 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KStream.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KStream.java
@@ -43,7 +43,7 @@ import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 
-import javax.inject.Inject;
+import jakarta.inject.Inject;
 
 import org.apache.openmeetings.core.sip.ISipCallbacks;
 import org.apache.openmeetings.core.sip.SipManager;
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KTestStream.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KTestStream.java
index 3df66efce..3875c590a 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KTestStream.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KTestStream.java
@@ -36,7 +36,7 @@ import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
-import javax.inject.Inject;
+import jakarta.inject.Inject;
 
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.entity.basic.IWsClient;
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
index 0f6fe7876..33fd09c0f 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
@@ -69,13 +69,15 @@ import org.kurento.client.WebRtcEndpoint;
 import org.kurento.jsonrpc.client.JsonRpcClientNettyWebSocket;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
 
+import jakarta.inject.Inject;
+
 @Component
 public class KurentoHandler {
 	private static final Logger log = LoggerFactory.getLogger(KurentoHandler.class);
@@ -117,13 +119,13 @@ public class KurentoHandler {
 	private final Map<Long, KRoom> rooms = new ConcurrentHashMap<>();
 	private final Set<String> ignoredKuids = new HashSet<>();
 
-	@Autowired
+	@Inject
 	private IClientManager cm;
-	@Autowired
+	@Inject
 	private RoomDao roomDao;
-	@Autowired
+	@Inject
 	private TestStreamProcessor testProcessor;
-	@Autowired
+	@Inject
 	private StreamProcessor streamProcessor;
 
 	boolean isConnected() {
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
index 4738d69b1..e5116d70c 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
@@ -50,12 +50,14 @@ import org.apache.openmeetings.db.util.ws.TextRoomMessage;
 import org.apache.openmeetings.util.logging.TimedApplication;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.core.task.TaskExecutor;
 import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONObject;
 
+import jakarta.inject.Inject;
+
 @Component
 public class StreamProcessor implements IStreamProcessor {
 	private static final Logger log = LoggerFactory.getLogger(StreamProcessor.class);
@@ -64,19 +66,19 @@ public class StreamProcessor implements IStreamProcessor {
 	 */
 	private final Map<String, KStream> streamByUid = new ConcurrentHashMap<>();
 
-	@Autowired
+	@Inject
 	private IClientManager cm;
-	@Autowired
+	@Inject
 	private RecordingDao recDao;
-	@Autowired
+	@Inject
 	private KurentoHandler kHandler;
-	@Autowired
+	@Inject
 	private TaskExecutor taskExecutor;
-	@Autowired
+	@Inject
 	private RecordingConverter recordingConverter;
-	@Autowired
+	@Inject
 	private InterviewConverter interviewConverter;
-	@Autowired
+	@Inject
 	private StreamProcessorActions streamProcessorActions;
 
 	@TimedApplication
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
index eafe4cae4..ea8f7d63e 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
@@ -34,20 +34,22 @@ import org.kurento.client.IceCandidate;
 import org.kurento.client.internal.server.KurentoServerException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONObject;
 
+import jakarta.inject.Inject;
+
 @Component
 public class StreamProcessorActions {
 	private static final Logger log = LoggerFactory.getLogger(StreamProcessorActions.class);
 
-	@Autowired
+	@Inject
 	private IClientManager cm;
-	@Autowired
+	@Inject
 	private KurentoHandler kHandler;
-	@Autowired
+	@Inject
 	private StreamProcessor streamProcessor;
 
 	@TimedApplication
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
index eaa164282..a7309d122 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
@@ -31,16 +31,18 @@ import java.util.concurrent.ConcurrentHashMap;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.entity.basic.IWsClient;
 import org.kurento.client.IceCandidate;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONObject;
 
+import jakarta.inject.Inject;
+
 @Component
 class TestStreamProcessor implements IStreamProcessor {
 	private final Map<String, KTestStream> streamByUid = new ConcurrentHashMap<>();
 
-	@Autowired
+	@Inject
 	private KurentoHandler kHandler;
 
 	void onMessage(IWsClient c, final String cmdId, JSONObject msg) {
diff --git a/openmeetings-mediaserver/src/test/java/org/apache/openmeetings/mediaserver/BaseMockedTest.java b/openmeetings-mediaserver/src/test/java/org/apache/openmeetings/mediaserver/BaseMockedTest.java
index ce7286093..ca7a77633 100644
--- a/openmeetings-mediaserver/src/test/java/org/apache/openmeetings/mediaserver/BaseMockedTest.java
+++ b/openmeetings-mediaserver/src/test/java/org/apache/openmeetings/mediaserver/BaseMockedTest.java
@@ -33,7 +33,7 @@ import java.lang.reflect.Field;
 import java.util.Locale;
 import java.util.Set;
 
-import javax.inject.Inject;
+import jakarta.inject.Inject;
 
 import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.core.util.WebSocketHelper;
diff --git a/openmeetings-server/src/main/assembly/conf/context.xml b/openmeetings-server/src/main/assembly/conf/context.xml
index cf13d0732..06304f6db 100644
--- a/openmeetings-server/src/main/assembly/conf/context.xml
+++ b/openmeetings-server/src/main/assembly/conf/context.xml
@@ -24,11 +24,12 @@
     <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
     <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
 
-    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
+    <!-- Uncomment this to enable session persistence across Tomcat restarts -->
     <!--
-    <Manager pathname="" />
+    <Manager pathname="SESSIONS.ser" />
     -->
     <JarScanner>
         <JarScanFilter tldSkip="*"/>
     </JarScanner>
 </Context>
+
diff --git a/openmeetings-server/src/main/assembly/conf/server.xml b/openmeetings-server/src/main/assembly/conf/server.xml
index 989577aaa..9564df641 100644
--- a/openmeetings-server/src/main/assembly/conf/server.xml
+++ b/openmeetings-server/src/main/assembly/conf/server.xml
@@ -24,13 +24,27 @@
   <!-- Security listener. Documentation at /docs/config/listeners.html
   <Listener className="org.apache.catalina.security.SecurityListener" />
   -->
-  <!--APR library loader. Documentation at /docs/apr.html -->
+  <!-- APR library loader. Documentation at /docs/apr.html -->
   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
   <!-- Prevent memory leaks due to use of particular java/javax APIs-->
   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 
+  <!-- Global JNDI resources
+       Documentation at /docs/jndi-resources-howto.html
+  -->
+  <GlobalNamingResources>
+    <!-- Editable user database that can also be used by
+         UserDatabaseRealm to authenticate users
+    -->
+    <!--Resource name="UserDatabase" auth="Container"
+              type="org.apache.catalina.UserDatabase"
+              description="User database that can be updated and saved"
+              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+              pathname="conf/tomcat-users.xml" /-->
+  </GlobalNamingResources>
+
   <!-- A "Service" is a collection of one or more "Connectors" that share
        a single "Container" Note:  A "Service" is not itself a "Container",
        so you may not define subcomponents such as "Valves" at this level.
@@ -47,9 +61,8 @@
 
     <!-- A "Connector" represents an endpoint by which requests are received
          and responses are returned. Documentation at :
-         Java HTTP Connector: /docs/config/http.html
-         Java AJP  Connector: /docs/config/ajp.html
-         APR (HTTP/AJP) Connector: /docs/apr.html
+         HTTP Connector: /docs/config/http.html
+         AJP  Connector: /docs/config/ajp.html
          Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
     -->
     <Connector port="5080" protocol="HTTP/1.1"
@@ -62,11 +75,10 @@
                connectionTimeout="20000"
                redirectPort="5443" />
     -->
-    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
+    <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
          This connector uses the NIO implementation. The default
          SSLImplementation will depend on the presence of the APR/native
-         library and the useOpenSSL attribute of the
-         AprLifecycleListener.
+         library and the useOpenSSL attribute of the AprLifecycleListener.
          Either JSSE or OpenSSL style configuration may be used regardless of
          the SSLImplementation selected. JSSE style configuration is used below.
     -->
@@ -81,20 +93,12 @@
                          type="RSA" />
         </SSLHostConfig>
     </Connector>
-    <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
-         This connector uses the APR/native implementation which always uses
-         OpenSSL for TLS.
-         Either JSSE or OpenSSL style configuration may be used. OpenSSL style
-         configuration is used below.
-    -->
     <!--
-    <Connector port="5443" protocol="org.apache.coyote.http11.Http11AprProtocol"
+    <Connector port="5443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                maxThreads="150" SSLEnabled="true" >
         <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
         <SSLHostConfig>
-            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
-                         certificateFile="conf/localhost-rsa-cert.pem"
-                         certificateChainFile="conf/localhost-rsa-chain.pem"
+            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                          type="RSA" />
         </SSLHostConfig>
     </Connector>
@@ -126,6 +130,17 @@
       <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
       -->
 
+      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+           via a brute-force attack -->
+      <Realm className="org.apache.catalina.realm.LockOutRealm">
+        <!-- This Realm uses the UserDatabase configured in the global JNDI
+             resources under the key "UserDatabase".  Any edits
+             that are performed against this UserDatabase are immediately
+             available for use by the Realm.  -->
+        <!--Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+               resourceName="UserDatabase"/-->
+      </Realm>
+
       <Host name="localhost"  appBase="webapps"
             unpackWARs="false" autoDeploy="true">
 
@@ -148,3 +163,4 @@
     </Engine>
   </Service>
 </Server>
+
diff --git a/openmeetings-server/src/main/assembly/conf/web.xml b/openmeetings-server/src/main/assembly/conf/web.xml
index 838309649..87f6c66b0 100644
--- a/openmeetings-server/src/main/assembly/conf/web.xml
+++ b/openmeetings-server/src/main/assembly/conf/web.xml
@@ -15,11 +15,11 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0">
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
+  version="6.0">
 
   <!-- ======================== Introduction ============================== -->
   <!-- This document defines default values for *all* web applications      -->
@@ -32,6 +32,11 @@
   <!-- They should go in the "/WEB-INF/web.xml" file in your application.   -->
 
 
+  <!-- Set the default request and response character encodings to UTF-8.   -->
+  <request-character-encoding>UTF-8</request-character-encoding>
+  <response-character-encoding>UTF-8</response-character-encoding>
+
+
   <!-- ================== Built In Servlet Definitions ==================== -->
 
 
@@ -107,8 +112,10 @@
   <!--                                                                      -->
   <!--   allowPartialPut     Should the server treat an HTTP PUT request    -->
   <!--                       with a Range header as a partial PUT? Note     -->
-  <!--                       that RFC 7233 clarified that Range headers are -->
-  <!--                       only valid for GET requests. [true]            -->
+  <!--                       that while RFC 7233 clarified that Range       -->
+  <!--                       headers only valid for GET requests, RFC 9110  -->
+  <!--                       (which obsoletes RFC 7233) now allows partial  -->
+  <!--                       puts. [true]                                   -->
 
     <servlet>
         <servlet-name>default</servlet-name>
@@ -148,9 +155,9 @@
   <!--                       pages.  See the jasper documentation for more  -->
   <!--                       information.                                   -->
   <!--                                                                      -->
-  <!--   compilerSourceVM    Compiler source VM. [1.8]                      -->
+  <!--   compilerSourceVM    Compiler source VM. [11]                      -->
   <!--                                                                      -->
-  <!--   compilerTargetVM    Compiler target VM. [1.8]                      -->
+  <!--   compilerTargetVM    Compiler target VM. [11]                      -->
   <!--                                                                      -->
   <!--   development         Is Jasper used in development mode? If true,   -->
   <!--                       the frequency at which JSPs are checked for    -->
@@ -190,10 +197,6 @@
   <!--                       arrays, to improve performance in some cases?  -->
   <!--                       [false]                                        -->
   <!--                                                                      -->
-  <!--   ieClassId           The class-id value to be sent to Internet      -->
-  <!--                       Explorer when using <jsp:plugin> tags.         -->
-  <!--                       [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93]   -->
-  <!--                                                                      -->
   <!--   javaEncoding        Java file encoding to use for generating java  -->
   <!--                       source files. [UTF8]                           -->
   <!--                                                                      -->
diff --git a/openmeetings-service/pom.xml b/openmeetings-service/pom.xml
index f168b59d2..2a42181fe 100644
--- a/openmeetings-service/pom.xml
+++ b/openmeetings-service/pom.xml
@@ -53,5 +53,10 @@
 			<groupId>com.github.caldav4j</groupId>
 			<artifactId>caldav4j</artifactId>
 		</dependency>
-	</dependencies>
+		<dependency>
+			<groupId>org.apache.jackrabbit</groupId>
+			<artifactId>jackrabbit-webdav</artifactId>
+			<classifier>jakarta</classifier>
+		</dependency>
+</dependencies>
 </project>
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
index 5d31d5af9..b4f220c44 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
@@ -35,18 +35,20 @@ import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.user.User;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 @Component
 public class AppointmentLogic {
 	private static final Logger log = LoggerFactory.getLogger(AppointmentLogic.class);
 
-	@Autowired
+	@Inject
 	private AppointmentDao appointmentDao;
-	@Autowired
+	@Inject
 	private InvitationDao invitationDao;
-	@Autowired
+	@Inject
 	private NotifierService notifierService;
 
 	// --------------------------------------------------------------------------------------------
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java
index 573a79905..c425eb90f 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/AppointmentManager.java
@@ -57,12 +57,14 @@ import org.apache.openmeetings.service.calendar.caldav.handler.WebDAVSyncHandler
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 import org.w3c.dom.Element;
 
 import com.github.caldav4j.CalDAVConstants;
 
+import jakarta.inject.Inject;
+
 /**
  * Class which does syncing and provides respective API's required for performing CalDAV Operations.
  * @author Ankush Mishra (ankushmishra9@gmail.com)
@@ -78,11 +80,11 @@ public class AppointmentManager {
 
 	private PoolingHttpClientConnectionManager connmanager = null;
 
-	@Autowired
+	@Inject
 	private OmCalendarDao calendarDao;
-	@Autowired
+	@Inject
 	private AppointmentDao appointmentDao;
-	@Autowired
+	@Inject
 	private IcalUtils utils;
 
 	/**
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
index 950a9664f..1b47d3ec0 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
@@ -53,8 +53,8 @@ import org.apache.wicket.protocol.http.WebSession;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 
+import jakarta.inject.Inject;
 import net.fortuna.ical4j.model.Calendar;
 import net.fortuna.ical4j.model.Component;
 import net.fortuna.ical4j.model.ComponentList;
@@ -89,7 +89,7 @@ public class IcalUtils {
 	private static final List<String> acceptedFormats = List.of("yyyyMMdd'T'HHmmss", "yyyyMMdd'T'HHmmss'Z'", "yyyyMMdd");
 	public static final String PROD_ID = "-//Events Calendar//Apache Openmeetings//EN";
 
-	@Autowired
+	@Inject
 	private UserDao userDao;
 
 	/**
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/EmailManager.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/EmailManager.java
index 593c7c706..e3a51799d 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/EmailManager.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/EmailManager.java
@@ -30,9 +30,11 @@ import org.apache.wicket.Application;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 /**
  * @author swagner
  *
@@ -41,7 +43,7 @@ import org.springframework.stereotype.Component;
 public class EmailManager {
 	private static final Logger log = LoggerFactory.getLogger(EmailManager.class);
 
-	@Autowired
+	@Inject
 	private MailHandler mailHandler;
 
 	private static IApplication getApp() {
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePage.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePage.java
index 50d75ef17..0d017fc38 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePage.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePage.java
@@ -33,7 +33,8 @@ import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
 import org.apache.wicket.protocol.http.mock.MockHttpSession;
 import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
 import org.apache.wicket.request.Request;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
 
 public abstract class AbstractTemplatePage extends WebPage {
 	private static final long serialVersionUID = 1L;
@@ -41,7 +42,7 @@ public abstract class AbstractTemplatePage extends WebPage {
 	protected final Locale locale;
 	protected final ComponentRenderer renderer;
 
-	@SpringBean
+	@Inject
 	protected IApplication app;
 
 	protected AbstractTemplatePage(Locale locale) {
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/RecordingExpiringTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/RecordingExpiringTemplate.java
index db696b774..10babe193 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/RecordingExpiringTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/RecordingExpiringTemplate.java
@@ -29,7 +29,8 @@ import org.apache.openmeetings.db.util.LocaleHelper;
 import org.apache.openmeetings.service.mail.template.OmTextLabel;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
 
 public class RecordingExpiringTemplate extends SubjectEmailTemplate {
 	private static final long serialVersionUID = 1L;
@@ -37,7 +38,7 @@ public class RecordingExpiringTemplate extends SubjectEmailTemplate {
 	private long remainingDays;
 	private final User u;
 
-	@SpringBean
+	@Inject
 	protected RoomDao roomDao;
 
 	private RecordingExpiringTemplate(User u, final Recording rec, long remainingDays) {
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java
index 1aa6bed87..131e786f5 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/MailNotifier.java
@@ -33,14 +33,16 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.manager.IInvitationManager;
 import org.apache.openmeetings.service.mail.template.subject.AppointmentReminderTemplate;
 import org.apache.openmeetings.service.mail.template.subject.SubjectEmailTemplate;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 @Component
 public class MailNotifier implements INotifier {
-	@Autowired
+	@Inject
 	private NotifierService notifier;
-	@Autowired
+	@Inject
 	private IInvitationManager invitationManager;
 
 	@PostConstruct
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java
index 49f81f0b2..0dded20c0 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/notifier/TextNotifier.java
@@ -32,18 +32,20 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.core.task.TaskExecutor;
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 @Component
 public class TextNotifier implements INotifier {
 	private static final Logger log = LoggerFactory.getLogger(TextNotifier.class);
-	@Autowired
+	@Inject
 	private NotifierService notifier;
-	@Autowired
+	@Inject
 	protected TaskExecutor taskExecutor;
-	@Autowired
+	@Inject
 	protected ConfigurationDao cfgDao;
 
 	@PostConstruct
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
index dfbc437c5..073c2177d 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
@@ -50,9 +50,11 @@ import org.apache.openmeetings.util.crypt.CryptProvider;
 import org.apache.openmeetings.util.mail.IcalHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 /**
  *
  * @author swagner
@@ -62,9 +64,9 @@ import org.springframework.stereotype.Component;
 public class InvitationManager implements IInvitationManager {
 	private static final Logger log = LoggerFactory.getLogger(InvitationManager.class);
 
-	@Autowired
+	@Inject
 	private InvitationDao invitationDao;
-	@Autowired
+	@Inject
 	private MailHandler mailHandler;
 
 	/**
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/AbstractJob.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/AbstractJob.java
index ae53f5323..8480915ed 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/AbstractJob.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/AbstractJob.java
@@ -30,13 +30,15 @@ import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 public abstract class AbstractJob {
 	private static Logger log = LoggerFactory.getLogger(AbstractJob.class);
-	@Autowired
+	@Inject
 	GroupDao groupDao;
-	@Autowired
+	@Inject
 	RecordingDao recordingDao;
 
 	void processExpiringRecordings(boolean notified, ObjLongConsumer<Recording> consumer) {
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/CleanupJob.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/CleanupJob.java
index b446320df..5fc45a53e 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/CleanupJob.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/CleanupJob.java
@@ -34,10 +34,12 @@ import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import jakarta.inject.Inject;
+
 @Component("cleanupJob")
 public class CleanupJob extends AbstractJob {
 	private static Logger log = LoggerFactory.getLogger(CleanupJob.class);
@@ -50,11 +52,11 @@ public class CleanupJob extends AbstractJob {
 	@Value("${job.cleanup.conf.log.ttl}")
 	private long confLogTtl = 7 * 24 * 60 * 60 * 1000L; // 7 days
 
-	@Autowired
+	@Inject
 	private SessiondataDao sessionDao;
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private ConferenceLogDao confLogDao;
 
 	public void cleanTestSetup() {
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/ReminderJob.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/ReminderJob.java
index c0ceb43b1..291e9d7dc 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/ReminderJob.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/ReminderJob.java
@@ -46,23 +46,25 @@ import org.apache.openmeetings.util.crypt.CryptProvider;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONArray;
 
+import jakarta.inject.Inject;
+
 @Component("reminderJob")
 public class ReminderJob extends AbstractJob {
 	private static Logger log = LoggerFactory.getLogger(ReminderJob.class);
-	@Autowired
+	@Inject
 	private AppointmentLogic appointmentLogic;
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private MailHandler mailHandler;
-	@Autowired
+	@Inject
 	private ConfigurationDao cfgDao;
-	@Autowired
+	@Inject
 	private GroupUserDao groupUserDao;
 
 	// public for testing
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
index 6452dd050..3e3fe12c8 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java
@@ -25,14 +25,16 @@ import java.util.List;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.wicket.injection.Injector;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.wicketstuff.select2.ChoiceProvider;
 import org.wicketstuff.select2.Response;
 
+import jakarta.inject.Inject;
+
 public abstract class AdminUserChoiceProvider extends ChoiceProvider<User> {
 	private static final long serialVersionUID = 1L;
 	public static final long PAGE_SIZE = 20;
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
 
 	protected AdminUserChoiceProvider() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
index bf6cb90c9..634ec85ea 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
@@ -47,7 +47,6 @@ import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.resource.FileSystemResource;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -57,6 +56,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel
 import de.agilecoders.wicket.core.markup.html.bootstrap.components.progress.UpdatableProgressBar;
 import de.agilecoders.wicket.core.markup.html.bootstrap.utilities.BackgroundColorBehavior;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6IconType;
+import jakarta.inject.Inject;
 /**
  * Panel component to manage Backup Import/Export
  *
@@ -71,7 +71,7 @@ public class BackupPanel extends AdminBasePanel {
 	private final NotificationPanel feedback = new NotificationPanel("feedback");
 	private UploadForm upload;
 
-	@SpringBean
+	@Inject
 	private BackupExport backupExport;
 
 	public BackupPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupUploadResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupUploadResourceReference.java
index d73acaf98..12a579554 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupUploadResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupUploadResourceReference.java
@@ -27,22 +27,23 @@ import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload2.FileItem;
 import org.apache.openmeetings.backup.BackupImport;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.common.upload.UploadResourceReference;
 import org.apache.wicket.injection.Injector;
 import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import jakarta.inject.Inject;
+
 public class BackupUploadResourceReference extends UploadResourceReference {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(BackupUploadResourceReference.class);
 
-	@SpringBean
+	@Inject
 	private BackupImport backupImport;
 
 	public BackupUploadResourceReference() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
index a89d614c4..e9a5c19bc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
@@ -52,11 +52,12 @@ import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.IValidator;
 import org.apache.wicket.validation.ValidationError;
 
+import jakarta.inject.Inject;
+
 /**
  * Handle {@link Configuration} items as list and form
  *
@@ -82,7 +83,8 @@ public class ConfigForm extends AdminBaseForm<Configuration> {
 	};
 	private final CheckBox valueB = new CheckBox("valueB");
 	private final TextField<String> valueH = new TextField<>("value");
-	@SpringBean
+
+	@Inject
 	private ConfigurationDao cfgDao;
 
 	public ConfigForm(String id, WebMarkupContainer listContainer, Configuration configuration) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
index afb2e0a81..9d0f4b868 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
@@ -35,7 +35,8 @@ import org.apache.wicket.authroles.authorization.strategies.role.annotations.Aut
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
 
 /**
  * add/update/delete {@link Configuration}
@@ -49,7 +50,7 @@ public class ConfigsPanel extends AdminBasePanel {
 	private ConfigForm form;
 	private final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
 
-	@SpringBean
+	@Inject
 	private ConfigurationDao cfgDao;
 
 	public ConfigsPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
index f62eeb9be..a48306326 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
@@ -44,19 +44,25 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.RepeatingView;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+import org.apache.openmeetings.mediaserver.KurentoHandler;
 import org.apache.openmeetings.mediaserver.StreamProcessor;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
+import jakarta.inject.Inject;
 
 @AuthorizeInstantiation({"ADMIN", "ADMIN_CONNECTIONS"})
 public class ConnectionsPanel extends AdminBasePanel {
 	private static final long serialVersionUID = 1L;
-	@SpringBean
+
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
+	private KurentoHandler kHandler;
+	@Inject
 	private StreamProcessor streamProcessor;
+	@Inject
+	private IUserManager userManager;
 
 	public ConnectionsPanel(String id) {
 		super(id);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
index d0c530ba5..5c297898b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
@@ -31,10 +31,10 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
+import jakarta.inject.Inject;
 
 public class EmailForm extends Form<MailMessage> {
 	private static final long serialVersionUID = 1L;
@@ -42,7 +42,8 @@ public class EmailForm extends Form<MailMessage> {
 	private BootstrapAjaxButton reset;
 	private AjaxLink<Void> delBtn;
 	private final WebMarkupContainer list;
-	@SpringBean
+
+	@Inject
 	private MailMessageDao emailDao;
 
 	public EmailForm(String id, final WebMarkupContainer list, MailMessage m) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraForm.java
index 3ad9f25c2..01b82539c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraForm.java
@@ -38,9 +38,10 @@ import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.util.CollectionModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.wicketstuff.select2.Select2MultiChoice;
 
+import jakarta.inject.Inject;
+
 public class ExtraForm extends AdminBaseForm<ExtraMenu> {
 	private static final long serialVersionUID = 1L;
 	private final WebMarkupContainer list;
@@ -48,9 +49,9 @@ public class ExtraForm extends AdminBaseForm<ExtraMenu> {
 			, new CollectionModel<>(new ArrayList<>())
 			, new GroupChoiceProvider());
 
-	@SpringBean
+	@Inject
 	private ExtraMenuDao menuDao;
-	@SpringBean
+	@Inject
 	private GroupDao groupDao;
 
 	public ExtraForm(String id, final WebMarkupContainer list, ExtraMenu m) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
index aacb0b4cf..a56f17c71 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
@@ -52,9 +52,10 @@ import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.wicketstuff.select2.Select2Choice;
 
+import jakarta.inject.Inject;
+
 public class GroupForm extends AdminBaseForm<Group> {
 	private static final long serialVersionUID = 1L;
 	private GroupUsersPanel usersPanel;
@@ -93,11 +94,12 @@ public class GroupForm extends AdminBaseForm<Group> {
 			return getString("admin.group.form.logo");
 		}
 	};
-	@SpringBean
+
+	@Inject
 	private ImageConverter imageConverter;
-	@SpringBean
+	@Inject
 	private GroupUserDao groupUserDao;
-	@SpringBean
+	@Inject
 	private GroupDao groupDao;
 
 	public GroupForm(String id, WebMarkupContainer groupList, Group group) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
index cd295b95f..f4044ca6c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
@@ -38,19 +38,20 @@ import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.badge.BootstrapBadge;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.utilities.BackgroundColorBehavior;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6IconType;
+import jakarta.inject.Inject;
 
 public class GroupUsersPanel extends Panel {
 	private static final long serialVersionUID = 1L;
 	private long groupId;
 	private List<GroupUser> users2add = new ArrayList<>();
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
 
 	public GroupUsersPanel(String id, long groupId) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
index 2a835a648..7d33bd020 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
@@ -33,7 +33,8 @@ import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
 
 /**
  * Form components to insert/update/delete {@link LdapConfig}
@@ -44,7 +45,8 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
 public class LdapForm extends AdminBaseForm<LdapConfig> {
 	private static final long serialVersionUID = 1L;
 	private final WebMarkupContainer listContainer;
-	@SpringBean
+
+	@Inject
 	private LdapConfigDao ldapDao;
 
 	public LdapForm(String id, WebMarkupContainer listContainer, final LdapConfig ldapConfig) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
index d3c28f4c1..d4689c12f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
@@ -49,13 +49,13 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.util.ListModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.Strings;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6IconType;
+import jakarta.inject.Inject;
 
 public class OAuthForm extends AdminBaseForm<OAuthServer> {
 	private static final long serialVersionUID = 1L;
@@ -87,7 +87,7 @@ public class OAuthForm extends AdminBaseForm<OAuthServer> {
 		}
 	};
 
-	@SpringBean
+	@Inject
 	private OAuth2Dao oauthDao;
 
 	public OAuthForm(String id, WebMarkupContainer listContainer, OAuthServer server) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index b54565194..0eeac1703 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -72,7 +72,6 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.util.CollectionModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.Strings;
 import org.wicketstuff.select2.ChoiceProvider;
 import org.wicketstuff.select2.Response;
@@ -85,6 +84,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.utilities.BackgroundColorBehavior;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6IconType;
+import jakarta.inject.Inject;
 
 public class RoomForm extends AdminBaseForm<Room> {
 	private static final long serialVersionUID = 1L;
@@ -120,15 +120,16 @@ public class RoomForm extends AdminBaseForm<Room> {
 	private IModel<User> moderator2add = Model.of((User)null);
 	private IModel<Collection<BaseFileItem>> files2add = new CollectionModel<>(new ArrayList<>());
 	private IModel<Long> wbIdx = Model.of(0L);
-	@SpringBean
+
+	@Inject
 	private GroupDao groupDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private FileItemDao fileDao;
-	@SpringBean
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
 	private RoomDao roomDao;
 
 	public RoomForm(String id, WebMarkupContainer roomList, final Room room) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
index 898be3229..2879f8b6e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
@@ -35,14 +35,16 @@ import org.apache.wicket.authroles.authorization.strategies.role.annotations.Aut
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
 
 @AuthorizeInstantiation({"ADMIN", "GROUP_ADMIN"})
 public class RoomsPanel extends AdminBasePanel {
 	private static final long serialVersionUID = 1L;
 	final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
 	private RoomForm form;
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
 
 	public RoomsPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java
index a93c46698..a206ecbf0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java
@@ -28,13 +28,13 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.PasswordTextField;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class PasswordDialog extends Modal<String> {
 	private static final long serialVersionUID = 1L;
@@ -42,7 +42,8 @@ public class PasswordDialog extends Modal<String> {
 	private final Form<String> form = new Form<>("form");
 	private final PasswordTextField pass = new PasswordTextField("password", Model.of(""));
 	private SerializableConsumer<AjaxRequestTarget> action = null;
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
 
 	public PasswordDialog(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
index c0f83a8b1..1245920ea 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -68,7 +68,6 @@ import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.Strings;
 import org.danekja.java.util.function.serializable.SerializableConsumer;
 import org.slf4j.Logger;
@@ -77,6 +76,7 @@ import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2MultiChoice;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 /**
  * CRUD operations in form for {@link User}
@@ -99,13 +99,14 @@ public class UserForm extends AdminBaseForm<User> {
 	private final PasswordDialog adminPass;
 	private final UploadableProfileImagePanel avatar = new UploadableProfileImagePanel("avatar", null);
 	private final CheckBox otpEnabled = new CheckBox("otp-enabled", Model.of(false));
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private EmailManager emainManager;
-	@SpringBean
+	@Inject
 	private LdapConfigDao ldapDao;
-	@SpringBean
+	@Inject
 	private OAuth2Dao oauthDao;
 
 	public UserForm(String id, WebMarkupContainer listContainer, final User user, final PasswordDialog adminPass, Modal<String> warning) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
index 6dba04d0b..820d12a05 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
@@ -40,10 +40,10 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.core.markup.html.bootstrap.utilities.ColorBehavior;
+import jakarta.inject.Inject;
 
 @AuthorizeInstantiation({"ADMIN", "GROUP_ADMIN"})
 public class UsersPanel extends AdminBasePanel {
@@ -51,7 +51,8 @@ public class UsersPanel extends AdminBasePanel {
 	final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
 	private final PasswordDialog adminPass = new PasswordDialog("adminPass");
 	private UserForm form;
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
 
 	public UsersPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index a8c459869..3a1b8d0ac 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -136,7 +136,6 @@ import org.apache.wicket.validation.validator.UrlValidator;
 import org.apache.openmeetings.mediaserver.KStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Component;
@@ -161,6 +160,7 @@ import de.agilecoders.wicket.core.settings.IBootstrapSettings;
 import de.agilecoders.wicket.core.settings.NoopThemeProvider;
 import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchTheme;
 import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchThemeProvider;
+import jakarta.inject.Inject;
 
 @Component
 public class Application extends AuthenticatedWebApplication implements IApplication {
@@ -182,23 +182,23 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 	private String serverId;
 	private final Set<String> wsUrls = new HashSet<>();
 
-	@Autowired
+	@Inject
 	private ApplicationContext ctx;
-	@Autowired
+	@Inject
 	private ConfigurationDao cfgDao;
-	@Autowired
+	@Inject
 	private RecordingDao recordingDao;
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private UserManager userManager;
-	@Autowired
+	@Inject
 	private ClientManager cm;
-	@Autowired
+	@Inject
 	private WhiteboardManager wbManager;
-	@Autowired
+	@Inject
 	private AppointmentDao appointmentDao;
-	@Autowired
+	@Inject
 	private SipManager sipManager;
 	@Value("${remember.me.encryption.key}")
 	private String rememberMeKey;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
index 11c2c47dd..959d987f3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
@@ -48,7 +48,6 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.StringValue;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import com.hazelcast.core.EntryEvent;
@@ -58,6 +57,8 @@ import com.hazelcast.map.listener.EntryRemovedListener;
 import com.hazelcast.map.listener.EntryUpdatedListener;
 import com.hazelcast.query.Predicates;
 
+import jakarta.inject.Inject;
+
 @Component
 public class ClientManager implements IClientManager {
 	private static final Logger log = LoggerFactory.getLogger(ClientManager.class);
@@ -70,13 +71,13 @@ public class ClientManager implements IClientManager {
 	private final Map<Long, Set<String>> onlineRooms = new ConcurrentHashMap<>();
 	private final Map<String, ServerInfo> onlineServers = new ConcurrentHashMap<>();
 
-	@Autowired
+	@Inject
 	private ConferenceLogDao confLogDao;
-	@Autowired
+	@Inject
 	private Application app;
-	@Autowired
+	@Inject
 	private KurentoHandler kHandler;
-	@Autowired
+	@Inject
 	private TimerService timerService;
 
 	private IMap<String, Client> map() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java
index 9349f6f09..6b460fe3f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java
@@ -41,9 +41,11 @@ import org.apache.wicket.ThreadContext;
 import org.apache.openmeetings.mediaserver.KurentoHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Service;
 
+import jakarta.inject.Inject;
+
 @Service
 public class TimerService {
 	private static final Logger log = LoggerFactory.getLogger(TimerService.class);
@@ -53,13 +55,13 @@ public class TimerService {
 	private final Map<Long, CompletableFuture<Object>> modCheckMap = new ConcurrentHashMap<>();
 	private final Map<Long, CompletableFuture<Object>> sipCheckMap = new ConcurrentHashMap<>();
 
-	@Autowired
+	@Inject
 	private ClientManager cm;
-	@Autowired
+	@Inject
 	private SipManager sipManager;
-	@Autowired
+	@Inject
 	private KurentoHandler kHandler;
-	@Autowired
+	@Inject
 	private Application app;
 
 	@PostConstruct
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/UserManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/UserManager.java
index 830063a12..6b2034e14 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/UserManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/UserManager.java
@@ -81,11 +81,13 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONObject;
 
+import jakarta.inject.Inject;
+
 /**
  *
  * @author swagner
@@ -95,15 +97,15 @@ import com.github.openjson.JSONObject;
 public class UserManager implements IUserManager {
 	private static final Logger log = LoggerFactory.getLogger(UserManager.class);
 
-	@Autowired
+	@Inject
 	private ConfigurationDao cfgDao;
-	@Autowired
+	@Inject
 	private GroupDao groupDao;
-	@Autowired
+	@Inject
 	private UserDao userDao;
-	@Autowired
+	@Inject
 	private EmailManager emailManager;
-	@Autowired
+	@Inject
 	private IClientManager cm;
 	private HttpClient httpClient;
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
index 1102f774b..434e959da 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
@@ -86,7 +86,6 @@ import org.apache.wicket.request.Request;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.flow.RedirectToUrlException;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
@@ -96,6 +95,8 @@ import org.wicketstuff.dashboard.Widget;
 import org.wicketstuff.dashboard.WidgetFactory;
 import org.wicketstuff.dashboard.web.DashboardContext;
 
+import jakarta.inject.Inject;
+
 public class WebSession extends AbstractAuthenticatedWebSession implements IWebSession {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(WebSession.class);
@@ -118,23 +119,23 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 	private Long recordingId = null;
 	private boolean kickedByAdmin = false;
 	private ExtendedClientProperties extProps = new ExtendedClientProperties();
-	@SpringBean
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
 	private InvitationDao inviteDao;
-	@SpringBean
+	@Inject
 	private SOAPLoginDao soapDao;
-	@SpringBean
+	@Inject
 	private SessiondataDao sessionDao;
-	@SpringBean
+	@Inject
 	private GroupDao groupDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private LdapLoginManager ldapManager;
-	@SpringBean
+	@Inject
 	private ConfigurationDao cfgDao;
-	@SpringBean
+	@Inject
 	private RoomDao roomDao;
 
 	public WebSession(Request request) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
index 49801d1a9..fff4fb376 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
@@ -45,7 +45,7 @@ import org.apache.openmeetings.db.util.ws.RoomMessage;
 import org.apache.openmeetings.web.room.wb.WbAction;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONArray;
@@ -56,6 +56,8 @@ import com.hazelcast.map.listener.EntryAddedListener;
 import com.hazelcast.map.listener.EntryRemovedListener;
 import com.hazelcast.map.listener.EntryUpdatedListener;
 
+import jakarta.inject.Inject;
+
 /**
  * Hazelcast based Whiteboard manager
  *
@@ -68,7 +70,7 @@ public class WhiteboardManager implements IWhiteboardManager {
 	private final Map<Long, Whiteboards> onlineWbs = new ConcurrentHashMap<>();
 	private static final String WBS_KEY = "WBS_KEY";
 
-	@Autowired
+	@Inject
 	private Application app;
 
 	private IMap<Long, Whiteboards> map() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
index 3eb84407c..728191b4c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
@@ -47,20 +47,22 @@ import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
 import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.Strings;
 import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2MultiChoice;
 
+import jakarta.inject.Inject;
+
 public class GeneralUserForm extends Form<User> {
 	private static final long serialVersionUID = 1L;
 	private final RequiredTextField<String> email = new RequiredTextField<>("address.email");
 	private final List<GroupUser> grpUsers = new ArrayList<>();
 	private final AjaxOmDatePicker bday = new AjaxOmDatePicker("age");
 	private final boolean isAdminForm;
-	@SpringBean
+
+	@Inject
 	private GroupDao groupDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public GeneralUserForm(String id, IModel<User> model, boolean isAdminForm) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
index fb9abd995..a2cb5790f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
@@ -32,17 +32,19 @@ import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.wicket.injection.Injector;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.Strings;
 import org.wicketstuff.select2.ChoiceProvider;
 import org.wicketstuff.select2.Response;
 
+import jakarta.inject.Inject;
+
 public class GroupChoiceProvider extends ChoiceProvider<Group> {
 	private static final long serialVersionUID = 1L;
 	public static final long PAGE_SIZE = 5;
-	@SpringBean
+
+	@Inject
 	private GroupDao groupDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public GroupChoiceProvider() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java
index d6d16f616..f0c3a0b46 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java
@@ -60,12 +60,12 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.util.CollectionModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
+import jakarta.inject.Inject;
 
 public abstract class InvitationForm extends Form<Invitation> {
 	private static final long serialVersionUID = 1L;
@@ -83,11 +83,11 @@ public abstract class InvitationForm extends Form<Invitation> {
 	protected InvitationDialog dialog;
 	protected String dropDownParentId;
 
-	@SpringBean
+	@Inject
 	private InvitationDao inviteDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private InvitationManager inviteManager;
 
 	public enum Action {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index 991d263cd..f7b0a06ee 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -81,7 +81,6 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler;
 import org.apache.wicket.protocol.ws.api.message.AbstractClientMessage;
 import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.wicketstuff.urlfragment.UrlFragment;
@@ -90,6 +89,7 @@ import com.github.openjson.JSONObject;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.navbar.INavbarComponent;
 import de.agilecoders.wicket.core.markup.html.references.BootstrapJavaScriptReference;
+import jakarta.inject.Inject;
 
 public class MainPanel extends Panel {
 	private static final long serialVersionUID = 1L;
@@ -106,11 +106,13 @@ public class MainPanel extends Panel {
 	private BasePanel curPanel;
 	private InviteUserToRoomDialog inviteUser;
 
-	@SpringBean
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
+	private ConfigurationDao cfgDao;
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private RoomDao roomDao;
 
 	public MainPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
index 819268af3..5ea40228c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
@@ -42,19 +42,21 @@ import org.apache.wicket.protocol.ws.api.message.ClosedMessage;
 import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
 import org.apache.wicket.protocol.ws.api.message.ErrorMessage;
 import org.apache.wicket.protocol.ws.api.message.TextMessage;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.openmeetings.mediaserver.KurentoHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.openjson.JSONObject;
 
+import jakarta.inject.Inject;
+
 public abstract class OmWebSocketPanel extends Panel {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(OmWebSocketPanel.class);
 	public static final String CONNECTED_MSG = "socketConnected";
 	private final AtomicBoolean connected = new AtomicBoolean();
-	@SpringBean
+
+	@Inject
 	private KurentoHandler kHandler;
 	private boolean pingable = false;
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ProfileImagePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ProfileImagePanel.java
index 25d5b84d2..f971ef0d3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ProfileImagePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ProfileImagePanel.java
@@ -21,12 +21,14 @@ package org.apache.openmeetings.web.common;
 import static org.apache.openmeetings.web.util.ProfileImageResourceReference.getUrl;
 
 import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
 
 public class ProfileImagePanel extends ImagePanel {
 	private static final long serialVersionUID = 1L;
 	private final long userId;
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
 
 	public ProfileImagePanel(String id, final long userId) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
index 57b3e0084..65c1d96d9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
@@ -31,14 +31,16 @@ import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.StoredFile;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
 
 public class UploadableProfileImagePanel extends UploadableImagePanel {
 	private static final long serialVersionUID = 1L;
 	private Long userId;
-	@SpringBean
+
+	@Inject
 	private ImageConverter converter;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public UploadableProfileImagePanel(String id, final Long userId) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
index 473da666f..3cd6170be 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
@@ -35,9 +35,9 @@ import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class ConvertingErrorsDialog extends Modal<BaseFileItem> {
 	private static final long serialVersionUID = 1L;
@@ -61,7 +61,7 @@ public class ConvertingErrorsDialog extends Modal<BaseFileItem> {
 	};
 	private Component headerLabel;
 
-	@SpringBean
+	@Inject
 	private FileItemLogDao fileLogDao;
 
 	public ConvertingErrorsDialog(String id, IModel<BaseFileItem> model) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
index b2364829f..0d2dfef7d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
@@ -28,12 +28,14 @@ import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.IModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
 
 public class FileItemPanel extends FolderPanel {
 	private static final long serialVersionUID = 1L;
 	private final WebMarkupContainer errors = new WebMarkupContainer("errors");
-	@SpringBean
+
+	@Inject
 	private FileItemLogDao fileLogDao;
 
 	public FileItemPanel(String id, final IModel<BaseFileItem> model, final FileTreePanel fileTreePanel) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index 5fe0f2a10..c60d25889 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -69,7 +69,6 @@ import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.resource.FileSystemResource;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
@@ -86,6 +85,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.button.dropdown.SplitBut
 import de.agilecoders.wicket.core.markup.html.bootstrap.image.IconType;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6IconType;
+import jakarta.inject.Inject;
 
 public abstract class FileTreePanel extends Panel {
 	private static final long serialVersionUID = 1L;
@@ -138,9 +138,9 @@ public abstract class FileTreePanel extends Panel {
 	});
 	private final Component upload = new WebMarkupContainer("upload");
 
-	@SpringBean
+	@Inject
 	private RecordingDao recDao;
-	@SpringBean
+	@Inject
 	private FileItemDao fileDao;
 
 	protected FileTreePanel(String id, Long roomId, NameDialog addFolder) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
index 6d9f5638f..fab8c2a57 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
@@ -43,7 +43,6 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.Strings;
 
 import com.github.openjson.JSONObject;
@@ -54,6 +53,8 @@ import com.googlecode.wicket.jquery.ui.interaction.draggable.IDraggableListener;
 import com.googlecode.wicket.jquery.ui.interaction.droppable.DroppableBehavior;
 import com.googlecode.wicket.jquery.ui.interaction.droppable.IDroppableListener;
 
+import jakarta.inject.Inject;
+
 public class FolderPanel extends Panel implements IDraggableListener, IDroppableListener {
 	private static final long serialVersionUID = 1L;
 	private static final String CSS_CLASS_FILE = "file ps-5 ";
@@ -62,9 +63,10 @@ public class FolderPanel extends Panel implements IDraggableListener, IDroppable
 	private static final String PARAM_CTRL = "c";
 	private final StyleBehavior styleClass;
 	private final FileTreePanel treePanel;
-	@SpringBean
+
+	@Inject
 	private RecordingDao recDao;
-	@SpringBean
+	@Inject
 	private FileItemDao fileDao;
 
 	public FolderPanel(String id, final IModel<BaseFileItem> model, final FileTreePanel treePanel) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
index fde3e082e..e2f055aca 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
@@ -41,7 +41,8 @@ import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
 import org.apache.wicket.injection.Injector;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
 
 public class OmTreeProvider implements ITreeProvider<BaseFileItem> {
 	private static final long serialVersionUID = 1L;
@@ -57,11 +58,12 @@ public class OmTreeProvider implements ITreeProvider<BaseFileItem> {
 	private final String lblPublic;
 	private final String lblGroupFile;
 	private final String lblGroupRec;
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private RecordingDao recDao;
-	@SpringBean
+	@Inject
 	private FileItemDao fileDao;
 
 	public OmTreeProvider(Long roomId) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java
index e27570510..a669b6212 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/upload/UploadResourceReference.java
@@ -26,9 +26,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import jakarta.inject.Inject;
 import jakarta.ws.rs.core.MediaType;
 
-import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload2.FileItem;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.web.app.Application;
@@ -42,7 +43,6 @@ import org.apache.wicket.request.resource.AbstractResource.WriteCallback;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.IResource.Attributes;
 import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.lang.Bytes;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -61,7 +61,7 @@ public abstract class UploadResourceReference extends ResourceReference {
 		, ERROR
 	}
 
-	@SpringBean
+	@Inject
 	private ClientManager cm;
 
 	protected UploadResourceReference(Class<?> scope, String name) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
index 780ceb8ed..921b6b971 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
@@ -24,13 +24,15 @@ import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.StringValue;
 
+import jakarta.inject.Inject;
+
 public class ActivatePage extends BaseNotInitedPage {
 	private static final long serialVersionUID = 1L;
 	public static final String ACTIVATION_PARAM = "u";
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
 
 	public ActivatePage(PageParameters pp) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
index 498bc1177..88b95e896 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
@@ -53,9 +53,10 @@ import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler;
 import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.StringValue;
 
+import jakarta.inject.Inject;
+
 public class HashPage extends BaseInitedPage implements IUpdatable {
 	private static final long serialVersionUID = 1L;
 	public static final String APP = "app";
@@ -78,9 +79,9 @@ public class HashPage extends BaseInitedPage implements IUpdatable {
 	private final StringValue swf;
 	private final StringValue app;
 
-	@SpringBean
+	@Inject
 	private RoomDao roomDao;
-	@SpringBean
+	@Inject
 	private RecordingDao recDao;
 
 	public HashPage(PageParameters p) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
index 84c1d647b..98ad7cca9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ResetPage.java
@@ -26,10 +26,10 @@ import org.apache.openmeetings.web.pages.auth.ResetPasswordDialog;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.TextContentModal;
+import jakarta.inject.Inject;
 
 public class ResetPage extends BaseNotInitedPage {
 	private static final long serialVersionUID = 1L;
@@ -42,7 +42,8 @@ public class ResetPage extends BaseNotInitedPage {
 			setResponsePage(Application.get().getSignInPageClass());
 		}
 	};
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
 
 	public ResetPage(PageParameters pp) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
index fe26e94ce..d921aa4fe 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
@@ -49,7 +49,7 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.IValidator;
@@ -61,6 +61,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButt
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class ForgetPasswordDialog extends Modal<String> {
 	private static final Logger log = LoggerFactory.getLogger(ForgetPasswordDialog.class);
@@ -74,9 +75,9 @@ public class ForgetPasswordDialog extends Modal<String> {
 	private ForgetPasswordForm form = new ForgetPasswordForm("form");
 	private boolean wasReset = false;
 
-	@SpringBean
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private MailHandler mailHandler;
 
 	enum Type {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/OtpDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/OtpDialog.java
index 968d3d636..48359f756 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/OtpDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/OtpDialog.java
@@ -41,13 +41,14 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.spinner.SpinnerAjaxButton;
+import jakarta.inject.Inject;
 
 public class OtpDialog extends Modal<User> {
 	private static final long serialVersionUID = 1L;
@@ -56,9 +57,10 @@ public class OtpDialog extends Modal<User> {
 	private final NotificationPanel feedback = new NotificationPanel("feedback");
 	private final OtpForm form = new OtpForm("form");
 	private final RadioGroup<String> radioGroup = new RadioGroup<>("type", Model.of(TYPE_OTP));
-	@SpringBean
+
+	@Inject
 	private OtpManager otpManager;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public OtpDialog(String id, IModel<User> model) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
index 0ec636d04..004fc4622 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
@@ -47,7 +47,7 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.validation.IValidatable;
 import org.slf4j.Logger;
@@ -57,6 +57,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.spinner.SpinnerAjaxButton;
+import jakarta.inject.Inject;
 
 public class RegisterDialog extends Modal<String> {
 	private static final long serialVersionUID = 1L;
@@ -75,9 +76,9 @@ public class RegisterDialog extends Modal<String> {
 	private Long lang;
 	private boolean wasRegistered = false;
 
-	@SpringBean
+	@Inject
 	private IUserManager userManager;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public RegisterDialog(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
index dff43f077..473d84e3b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
@@ -29,12 +29,13 @@ import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class ResetPasswordDialog extends Modal<String> {
 	private static final long serialVersionUID = 1L;
@@ -43,7 +44,7 @@ public class ResetPasswordDialog extends Modal<String> {
 	private PasswordTextField password;
 	private final User user;
 
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public ResetPasswordDialog(String id, final User user) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
index 06b9320a1..223ad9292 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
@@ -67,7 +67,7 @@ import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -78,6 +78,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.core.markup.html.bootstrap.image.IconType;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.spinner.SpinnerAjaxButton;
+import jakarta.inject.Inject;
 
 public class SignInDialog extends Modal<String> {
 	private static final long serialVersionUID = 1L;
@@ -87,13 +88,14 @@ public class SignInDialog extends Modal<String> {
 	private boolean rememberMe = false;
 	private LdapConfig domain;
 	private NotificationPanel feedback = new NotificationPanel("feedback");
-	@SpringBean
+
+	@Inject
 	private ConfigurationDao cfgDao;
-	@SpringBean
+	@Inject
 	private LdapConfigDao ldapDao;
-	@SpringBean
+	@Inject
 	private OAuth2Dao oauthDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public SignInDialog(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
index 1746a0698..e3808b841 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
@@ -43,7 +43,6 @@ import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.StringValue;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,6 +51,7 @@ import com.github.openjson.JSONException;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.TextContentModal;
+import jakarta.inject.Inject;
 
 public class SignInPage extends BaseInitedPage {
 	private static final long serialVersionUID = 1L;
@@ -108,10 +108,11 @@ public class SignInPage extends BaseInitedPage {
 	};
 	RegisterDialog r = new RegisterDialog("register");
 	private final OtpDialog otpDialog = new OtpDialog("otpDialog", Model.of());
-
-	@SpringBean
+	@Inject
+	private ConfigurationDao cfgDao;
+	@Inject
 	private UserManager userManager;
-	@SpringBean
+	@Inject
 	private OAuth2Dao oauthDao;
 
 	public SignInPage() throws InterruptedException {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
index ab4e1e3ba..ac6ba1e44 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
@@ -87,7 +87,7 @@ import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
 import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -103,6 +103,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.components.progress.Upda
 import de.agilecoders.wicket.core.markup.html.bootstrap.utilities.BackgroundColorBehavior;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.spinner.SpinnerAjaxButton;
 import de.agilecoders.wicket.extensions.wizard.BootstrapWizard;
+import jakarta.inject.Inject;
 
 public class InstallWizard extends BootstrapWizard {
 	private static final long serialVersionUID = 1L;
@@ -123,7 +124,7 @@ public class InstallWizard extends BootstrapWizard {
 	private final List<Button> buttons = new ArrayList<>(4);
 	private WizardButtonBar btnBar;
 
-	@SpringBean
+	@Inject
 	private ImportInitvalues initvalues;
 
 	//onInit, applyState
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
index ffa7ea219..27394ad00 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
@@ -34,13 +34,14 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class NicknameDialog extends Modal<User> {
 	private static final long serialVersionUID = 1L;
@@ -48,7 +49,8 @@ public class NicknameDialog extends Modal<User> {
 	private final NotificationPanel feedback = new NotificationPanel("feedback");
 	private final RoomPanel room;
 	private Form<User> form;
-	@SpringBean
+
+	@Inject
 	private ClientManager cm;
 
 	public NicknameDialog(String id, final RoomPanel room) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 558bb6556..347dce303 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -92,7 +92,7 @@ import org.apache.wicket.protocol.ws.api.event.WebSocketPushPayload;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.ResourceStreamResource;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.resource.FileResourceStream;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.string.Strings;
@@ -113,6 +113,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Alert;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal.Backdrop;
+import jakarta.inject.Inject;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.TextContentModal;
 
 @AuthorizeInstantiation("ROOM")
@@ -257,21 +258,21 @@ public class RoomPanel extends BasePanel {
 	private boolean avInited = false;
 	private boolean jsInited = false;
 
-	@SpringBean
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private AppointmentDao apptDao;
-	@SpringBean
+	@Inject
 	private QuickPollManager qpollManager;
-	@SpringBean
+	@Inject
 	private KurentoHandler kHandler;
-	@SpringBean
+	@Inject
 	private StreamProcessor streamProcessor;
-	@SpringBean
+	@Inject
 	private TimerService timerService;
-	@SpringBean
+	@Inject
 	private FileItemDao fileDao;
 
 	public RoomPanel(String id, Room r) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
index 98636ed83..d9ae8cc85 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
@@ -38,17 +38,20 @@ import org.apache.openmeetings.web.util.FileItemResourceReference;
 import org.apache.wicket.injection.Injector;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.IResource.Attributes;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.StringValue;
 
+import jakarta.inject.Inject;
+
 public class RoomResourceReference extends FileItemResourceReference<FileItem> {
 	private static final long serialVersionUID = 1L;
 	private static final String DEFAULT_NAME = "wb-room-file";
-	@SpringBean
+
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
 	private FileItemDao fileDao;
-	@SpringBean
+	@Inject
 	private GroupUserDao groupUserDao;
 
 	public RoomResourceReference() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
index 86ac8a69b..8890d4b51 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
@@ -43,7 +43,7 @@ import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.PriorityHeaderItem;
 import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.StringValue;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -51,6 +51,8 @@ import org.slf4j.LoggerFactory;
 import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
 
+import jakarta.inject.Inject;
+
 public class ActivitiesPanel extends Panel {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(ActivitiesPanel.class);
@@ -155,7 +157,8 @@ public class ActivitiesPanel extends Panel {
 			response.render(new PriorityHeaderItem(getNamedFunction("activityAction", this, explicit(PARAM_ROOM_ID), explicit(ACTION), explicit(PARAM_ID))));
 		}
 	};
-	@SpringBean
+
+	@Inject
 	private ClientManager cm;
 
 	public ActivitiesPanel(String id, RoomPanel room) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
index 0d69ea287..c7cca66ac 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
@@ -36,7 +36,9 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.ajax.attributes.IAjaxCallListener;
 import org.apache.wicket.injection.Injector;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
+
 
 public class ActionsSubMenu implements Serializable {
 	private static final long serialVersionUID = 1L;
@@ -56,7 +58,8 @@ public class ActionsSubMenu implements Serializable {
 	private OmMenuItem resetWb;
 	private OmMenuItem localSettings;
 	private final boolean visible;
-	@SpringBean
+
+	@Inject
 	private WhiteboardManager wbManager;
 
 	public ActionsSubMenu(final RoomPanel room, final RoomMenuPanel mp) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ExtrasSubMenu.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ExtrasSubMenu.java
index b5376109b..2e6fe3e95 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ExtrasSubMenu.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ExtrasSubMenu.java
@@ -30,16 +30,18 @@ import org.apache.openmeetings.web.common.menu.OmMenuItem;
 import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.injection.Injector;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
+
 
 public class ExtrasSubMenu implements Serializable {
 	private static final long serialVersionUID = 1L;
 	private final RoomPanel room;
 	private OmMenuItem extraMenu;
 
-	@SpringBean
+	@Inject
 	private RoomDao roomDao;
-	@SpringBean
+	@Inject
 	private ExtraMenuDao menuDao;
 
 	public ExtrasSubMenu(final RoomPanel room) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java
index 5432adf45..2db859c50 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java
@@ -42,10 +42,12 @@ import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.injection.Injector;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.PriorityHeaderItem;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import jakarta.inject.Inject;
+
 public class PollsSubMenu implements Serializable {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(PollsSubMenu.class);
@@ -88,9 +90,10 @@ public class PollsSubMenu implements Serializable {
 		}
 	};
 	private final boolean visible;
-	@SpringBean
+
+	@Inject
 	private QuickPollManager qpollManager;
-	@SpringBean
+	@Inject
 	private PollDao pollDao;
 
 	public PollsSubMenu(final RoomPanel room, final RoomMenuPanel mp) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
index 65e11512d..63dc55f34 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
@@ -45,12 +45,14 @@ import org.apache.wicket.markup.html.form.RadioGroup;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.util.CollectionModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.wicketstuff.select2.Select2MultiChoice;
 
+import jakarta.inject.Inject;
+
 public class RoomInvitationForm extends InvitationForm {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(RoomInvitationForm.class);
@@ -61,11 +63,12 @@ public class RoomInvitationForm extends InvitationForm {
 			, new CollectionModel<>(new ArrayList<>())
 			, new GroupChoiceProvider());
 	final WebMarkupContainer sipContainer = new WebMarkupContainer("sip-container");
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
-	@SpringBean
+	@Inject
 	private GroupUserDao groupUserDao;
-	@SpringBean
+	@Inject
 	private InvitationManager invitationManager;
 
 	enum InviteeType {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
index bba3616c5..2dcc1deb7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
@@ -61,7 +61,7 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.flow.RedirectToUrlException;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 import org.apache.openmeetings.mediaserver.KurentoHandler;
 import org.apache.openmeetings.mediaserver.StreamProcessor;
@@ -70,6 +70,7 @@ import com.github.openjson.JSONObject;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.navbar.INavbarComponent;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6IconType;
+import jakarta.inject.Inject;
 
 public class RoomMenuPanel extends Panel {
 	private static final long serialVersionUID = 1L;
@@ -106,15 +107,16 @@ public class RoomMenuPanel extends Panel {
 	private final PollsSubMenu pollsSubMenu;
 	private final ActionsSubMenu actionsSubMenu;
 	private final ExtrasSubMenu extrasSubMenu;
-	@SpringBean
+
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
 	private ConfigurationDao cfgDao;
-	@SpringBean
+	@Inject
 	private ChatDao chatDao;
-	@SpringBean
+	@Inject
 	private KurentoHandler kHandler;
-	@SpringBean
+	@Inject
 	private StreamProcessor streamProcessor;
 
 	public RoomMenuPanel(String id, final RoomPanel room) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
index 33b0ce9c3..be0ea2031 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
@@ -27,12 +27,13 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class SipDialerDialog extends Modal<String> {
 	private static final long serialVersionUID = 1L;
@@ -40,7 +41,8 @@ public class SipDialerDialog extends Modal<String> {
 	private final Form<String> form = new Form<>("form", Model.of(""));
 	private final TextField<String> number = new TextField<>("number", Model.of(""));
 	private final RoomPanel room;
-	@SpringBean
+
+	@Inject
 	private SipManager sipDao;
 
 	public SipDialerDialog(String id, RoomPanel room) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
index 1085c75cd..5d1dd1d5f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
@@ -40,23 +40,25 @@ import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class CreatePollDialog extends Modal<RoomPoll> {
 	private static final long serialVersionUID = 1L;
 	private final Long roomId;
 	private PollForm form;
 	private final NotificationPanel feedback = new NotificationPanel("feedback");
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private PollDao pollDao;
 
 	public CreatePollDialog(String id, Long roomId) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
index 08ada8e24..346eec104 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
@@ -47,7 +47,7 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.wicketstuff.jqplot.behavior.JqPlotBehavior;
 import org.wicketstuff.jqplot.behavior.JqPlotCssResourceReference;
 import org.wicketstuff.jqplot.behavior.JqPlotJavascriptResourceReference;
@@ -65,6 +65,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6IconType;
+import jakarta.inject.Inject;
 
 public class PollResultsDialog extends Modal<RoomPoll> {
 	private static final long serialVersionUID = 1L;
@@ -82,9 +83,10 @@ public class PollResultsDialog extends Modal<RoomPoll> {
 	private String chartPie;
 	private final CreatePollDialog createPoll;
 	private DropDownChoice<String> chartType;
-	@SpringBean
+
+	@Inject
 	private PollDao pollDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public PollResultsDialog(String id, CreatePollDialog createPoll, Long roomId) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
index 9ef769ca2..86a8cc3b5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
@@ -45,12 +45,13 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class VoteDialog extends Modal<RoomPollAnswer> {
 	private static final long serialVersionUID = 1L;
@@ -58,9 +59,10 @@ public class VoteDialog extends Modal<RoomPollAnswer> {
 	private PollAnswerForm form;
 	private final NotificationPanel feedback = new NotificationPanel("feedback");
 	private final Label userLbl = new Label("user", Model.of(""));
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private PollDao pollDao;
 
 	public VoteDialog(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
index 5eb979d13..8423d9548 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
@@ -32,14 +32,17 @@ import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
+
 
 public class RoomFilePanel extends FileTreePanel {
 	private static final long serialVersionUID = 1L;
 	private final RoomPanel room;
-	@SpringBean
+
+	@Inject
 	private FileItemDao fileDao;
-	@SpringBean
+	@Inject
 	private RecordingDao recDao;
 
 	public RoomFilePanel(String id, RoomPanel room, NameDialog addFolder) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
index 1ed5dfa5d..5fb346aaf 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
@@ -26,7 +26,7 @@ import java.util.Optional;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.DoubleConsumer;
 
-import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload2.FileItem;
 import org.apache.openmeetings.core.data.file.FileProcessor;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.file.FileItemDao;
@@ -44,12 +44,14 @@ import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.common.upload.UploadResourceReference;
 import org.apache.wicket.injection.Injector;
 import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.openjson.JSONObject;
 
+import jakarta.inject.Inject;
+
 public class RoomFileUploadResourceReference extends UploadResourceReference {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(RoomFileUploadResourceReference.class);
@@ -60,11 +62,11 @@ public class RoomFileUploadResourceReference extends UploadResourceReference {
 	public static final String PARAM_LAST_SELECTED_OWNER = "room-upload-last-selected-owner";
 	public static final String PARAM_LAST_SELECTED_GROUP = "room-upload-last-selected-group";
 
-	@SpringBean
+	@Inject
 	private FileProcessor processor;
-	@SpringBean
+	@Inject
 	private FileItemLogDao fileLogDao;
-	@SpringBean
+	@Inject
 	private FileItemDao fileDao;
 
 	public RoomFileUploadResourceReference() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index 15274466e..309188915 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -37,13 +37,15 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.openjson.JSONObject;
 
+import jakarta.inject.Inject;
+
 public class RoomSidebar extends Panel {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(RoomSidebar.class);
@@ -60,7 +62,7 @@ public class RoomSidebar extends Panel {
 	private VideoSettings settings = new VideoSettings("settings");
 	private ActivitiesPanel activities;
 
-	@SpringBean
+	@Inject
 	private ClientManager cm;
 
 	public RoomSidebar(String id, final RoomPanel room) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
index e6a6b49fa..3701ee8ad 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
@@ -24,14 +24,17 @@ import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.room.Room.Right;
 import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.openmeetings.mediaserver.StreamProcessor;
 
 import com.github.openjson.JSONObject;
 
+import jakarta.inject.Inject;
+
 public class InterviewWbPanel extends AbstractWbPanel {
 	private static final long serialVersionUID = 1L;
-	@SpringBean
+
+	@Inject
 	private StreamProcessor streamProcessor;
 
 	public InterviewWbPanel(String id, RoomPanel rp) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
index df7d746e6..adeb3cb03 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
@@ -69,7 +69,9 @@ import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+
 import org.apache.wicket.util.string.Strings;
 import org.danekja.java.util.function.serializable.SerializableBiConsumer;
 import org.slf4j.Logger;
@@ -79,6 +81,8 @@ import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
 import com.github.openjson.JSONTokener;
 
+import jakarta.inject.Inject;
+
 public class WbPanel extends AbstractWbPanel {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(WbPanel.class);
@@ -132,9 +136,10 @@ public class WbPanel extends AbstractWbPanel {
 					, UndoObject.Type.REMOVE, arr));
 		}
 	};
-	@SpringBean
+
+	@Inject
 	private WhiteboardManager wbm;
-	@SpringBean
+	@Inject
 	private FileItemDao fileDao;
 
 	public WbPanel(String id, RoomPanel rp) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserMessageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserMessageDialog.java
index 0cd6cbe1f..9c9739eab 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserMessageDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserMessageDialog.java
@@ -30,20 +30,22 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class InviteUserMessageDialog extends Modal<String> {
 	private static final long serialVersionUID = 1L;
 	private final Form<Void> form = new Form<>("form");
 	private final TextArea<String> message = new TextArea<>("message", Model.of(""));
 	private final CheckBox enterRoom = new CheckBox("enterRoom", Model.of(false));
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private RoomDao roomDao;
 
 	public InviteUserMessageDialog(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.java
index 942efb5a0..e00e1dc64 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.java
@@ -32,9 +32,10 @@ import org.apache.openmeetings.web.user.rooms.RoomListPanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class InviteUserToRoomDialog extends Modal<String> {
 	private static final long serialVersionUID = 1L;
@@ -42,9 +43,10 @@ public class InviteUserToRoomDialog extends Modal<String> {
 	private RoomListPanel privateRooms;
 	private final InviteUserMessageDialog inviteMsg = new InviteUserMessageDialog("inviteMsg");
 	private Long userId;
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	private class InviteRoomListPanel extends RoomListPanel {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
index a8e036268..11a70d2db 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
@@ -70,7 +70,7 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.util.CollectionModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
 
@@ -78,6 +78,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButt
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class MessageDialog extends Modal<PrivateMessage> {
 	private static final long serialVersionUID = 1L;
@@ -89,17 +90,20 @@ public class MessageDialog extends Modal<PrivateMessage> {
 	private final OmDateTimePicker end = new OmDateTimePicker("end", Model.of(LocalDateTime.now()));
 	private boolean isPrivate = false;
 	private final IModel<Collection<User>> modelTo = new CollectionModel<>(new ArrayList<>());
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
+	private ConfigurationDao cfgDao;
+	@Inject
 	private AppointmentDao apptDao;
-	@SpringBean
+	@Inject
 	private PrivateMessageDao msgDao;
-	@SpringBean
+	@Inject
 	private IInvitationManager inviteManager;
-	@SpringBean
+	@Inject
 	private MailHandler handler;
 
 	public MessageDialog(String id, CompoundPropertyModel<PrivateMessage> model) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java
index faa07127e..4a162bbb9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java
@@ -29,22 +29,24 @@ import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class UserInfoDialog extends Modal<String> {
 	private static final long serialVersionUID = 1L;
 	private WebMarkupContainer container = new WebMarkupContainer("container");
 	private MessageDialog newMessage;
 	private long userId;
-	@SpringBean
-	private UserContactDao contactDao;
 	private BootstrapAjaxLink<String> message;
 	private BootstrapAjaxLink<String> contacts;
 
+	@Inject
+	private UserContactDao contactDao;
+
 	public UserInfoDialog(String id, MessageDialog newMessage) {
 		super(id);
 		this.newMessage = newMessage;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
index a77932c6c..4403bd667 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -83,7 +83,7 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.util.CollectionModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.wicketstuff.select2.Select2MultiChoice;
@@ -95,6 +95,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 public class AppointmentDialog extends Modal<Appointment> {
 	private static final long serialVersionUID = 1L;
@@ -116,15 +117,16 @@ public class AppointmentDialog extends Modal<Appointment> {
 		USER
 		, GROUP
 	}
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private AppointmentDao apptDao;
-	@SpringBean
+	@Inject
 	private GroupUserDao groupUserDao;
-	@SpringBean
+	@Inject
 	private AppointmentManager apptManager;
 
 	public AppointmentDialog(String id, CalendarPanel calendarPanel, CompoundPropertyModel<Appointment> model) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
index 58f1ca298..db8500706 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
@@ -45,7 +45,7 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.validator.UrlValidator;
 import org.slf4j.Logger;
@@ -56,6 +56,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 /**
  * Multipurpose Calendar Dialog form. This provides the ability to ask for a user prompt,
@@ -73,9 +74,10 @@ public class CalendarDialog extends Modal<OmCalendar> {
 	private UserCalendarForm form;
 	private List<OmCalendar> cals; //List of calendars for syncing
 	private int calIndex = 0;
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private AppointmentManager apptManager;
 
 	public enum DIALOG_TYPE {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
index aa44efedd..afcb41f71 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
@@ -59,7 +59,7 @@ import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -71,6 +71,7 @@ import com.googlecode.wicket.jquery.ui.calendar.EventSource.GoogleCalendar;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
+import jakarta.inject.Inject;
 
 public class CalendarPanel extends UserBasePanel {
 	private static final Logger log = LoggerFactory.getLogger(CalendarPanel.class);
@@ -104,11 +105,11 @@ public class CalendarPanel extends UserBasePanel {
 	// Context for the HttpClient. Mainly used for credentials.
 	private transient HttpClientContext context = null;
 
-	@SpringBean
+	@Inject
 	private AppointmentDao apptDao;
-	@SpringBean
+	@Inject
 	private AppointmentManager apptManager;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public CalendarPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
index e7207ae46..ef3882a4b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
@@ -55,13 +55,16 @@ import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.head.PriorityHeaderItem;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.openjson.JSONObject;
 import com.googlecode.wicket.jquery.ui.settings.JQueryUILibrarySettings;
 
+import jakarta.inject.Inject;
+
 public class Chat extends Panel {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(Chat.class);
@@ -103,13 +106,13 @@ public class Chat extends Panel {
 		}
 	};
 
-	@SpringBean
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
 	private ConfigurationDao cfgDao;
-	@SpringBean
+	@Inject
 	private ChatDao chatDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public Chat(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatForm.java
index 91f410222..cc2a591e6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatForm.java
@@ -48,7 +48,7 @@ import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.HiddenField;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,18 +56,20 @@ import org.slf4j.LoggerFactory;
 import com.github.openjson.JSONObject;
 import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
 
+import jakarta.inject.Inject;
+
 public class ChatForm extends Form<Void> {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(ChatForm.class);
 	private final HiddenField<String> activeTab = new HiddenField<>("activeTab", Model.of(""));
 
-	@SpringBean
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
 	private ChatDao chatDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private RoomDao roomDao;
 
 	public ChatForm(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
index 868941abb..548787b41 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
@@ -31,6 +31,7 @@ import static org.apache.openmeetings.web.room.RoomPanel.isModerator;
 
 import java.util.List;
 
+import jakarta.inject.Inject;
 import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.openmeetings.core.util.WebSocketHelper;
@@ -48,7 +49,7 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.resource.ResourceStreamResource;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 
@@ -141,9 +142,9 @@ public class ChatToolbar extends Panel implements IWysiwygToolbar {
 		}
 	});
 
-	@SpringBean
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
 	private ChatDao chatDao;
 
 	/**
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
index 7400b33c1..6439d88d3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
@@ -24,13 +24,16 @@ import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.user.rooms.RoomsPanel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.wicketstuff.dashboard.Widget;
 import org.wicketstuff.dashboard.web.WidgetView;
 
+import jakarta.inject.Inject;
+
 public class MyRoomsWidgetView extends WidgetView {
 	private static final long serialVersionUID = 1L;
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
 
 	public MyRoomsWidgetView(String id, Model<Widget> model) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.java
index 25af7240c..3378ae398 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RecentRoomsWidgetView.java
@@ -23,13 +23,16 @@ import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.web.user.rooms.RoomsPanel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.wicketstuff.dashboard.Widget;
 import org.wicketstuff.dashboard.web.WidgetView;
 
+import jakarta.inject.Inject;
+
 public class RecentRoomsWidgetView extends WidgetView {
 	private static final long serialVersionUID = 1L;
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
 
 	public RecentRoomsWidgetView(String id, Model<Widget> model) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
index 81f32960c..cab5c17a4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
@@ -40,15 +40,18 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.wicketstuff.dashboard.Widget;
 import org.wicketstuff.dashboard.web.WidgetView;
 
+import jakarta.inject.Inject;
+
 public class WelcomeWidgetView extends WidgetView {
 	private static final long serialVersionUID = 1L;
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private PrivateMessageDao msgDao;
 
 	public WelcomeWidgetView(String id, Model<Widget> model) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
index 44509eb18..b5fd1e2fa 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
@@ -40,12 +40,13 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.spinner.SpinnerAjaxButton;
+import jakarta.inject.Inject;
 
 public class AdminCleanupInfoDialog extends Modal<String> {
 	private static final long serialVersionUID = 1L;
@@ -58,11 +59,12 @@ public class AdminCleanupInfoDialog extends Modal<String> {
 	private CleanupEntityUnitPanel fin;
 	private final WebMarkupContainer container = new WebMarkupContainer("container");
 	private final NotificationPanel feedback = new NotificationPanel("feedback");
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private FileItemDao fileDao;
-	@SpringBean
+	@Inject
 	private RecordingDao recDao;
 
 	public AdminCleanupInfoDialog(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ChangePasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ChangePasswordDialog.java
index f2280c5e5..1ad79bbb6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ChangePasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ChangePasswordDialog.java
@@ -30,13 +30,14 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.PasswordTextField;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.spinner.SpinnerAjaxButton;
+import jakarta.inject.Inject;
 
 public class ChangePasswordDialog extends Modal<String> {
 	private static final long serialVersionUID = 1L;
@@ -61,7 +62,8 @@ public class ChangePasswordDialog extends Modal<String> {
 		}
 	};
 	private final NotificationPanel feedback = new NotificationPanel("feedback");
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
 
 	public ChangePasswordDialog(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.java
index 2ac5b1372..c4efb0b61 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.java
@@ -47,13 +47,14 @@ import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6IconType;
+import jakarta.inject.Inject;
 
 public class EditProfileForm extends Form<User> {
 	private static final long serialVersionUID = 1L;
@@ -63,7 +64,7 @@ public class EditProfileForm extends Form<User> {
 	private FormActionsPanel<User> actions;
 	private BootstrapAjaxLink<String> toggleOtp;
 
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public EditProfileForm(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationDetails.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationDetails.java
index 8e968e4f8..1d574d78e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationDetails.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationDetails.java
@@ -35,7 +35,8 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
 
 public class InvitationDetails extends Form<Invitation>{
 	private static final long serialVersionUID = 1L;
@@ -45,7 +46,8 @@ public class InvitationDetails extends Form<Invitation>{
 	private final Label invitee = new Label("invitee", Model.of(""));
 	private final DateLabel from = new DateLabel("validFrom", Model.of((Date)null));
 	private final DateLabel to = new DateLabel("validTo", Model.of((Date)null));
-	@SpringBean
+
+	@Inject
 	private InvitationDao inviteDao;
 
 	public InvitationDetails(String id, final WebMarkupContainer list, Invitation i) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
index 4ee480534..a231adbc9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
@@ -76,11 +76,12 @@ import org.apache.wicket.markup.repeater.data.IDataProvider;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.util.ListModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6IconType;
+import jakarta.inject.Inject;
 
 public class MessagesContactsPanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
@@ -125,13 +126,14 @@ public class MessagesContactsPanel extends UserBasePanel {
 		, List.of(notMoveFolder)
 		, new LambdaChoiceRenderer<>(PrivateMessageFolder::getFolderName, f -> "" + f.getId()));
 	private WebMarkupContainer selectedFolder;
-	@SpringBean
+
+	@Inject
 	private PrivateMessageDao msgDao;
-	@SpringBean
+	@Inject
 	private PrivateMessageFolderDao folderDao;
-	@SpringBean
+	@Inject
 	private UserContactDao contactDao;
-	@SpringBean
+	@Inject
 	private AppointmentDao apptDao;
 
 	public MessagesContactsPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ToggleOtpDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ToggleOtpDialog.java
index 72df0279a..ab7c994e3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ToggleOtpDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ToggleOtpDialog.java
@@ -34,13 +34,14 @@ import org.apache.wicket.markup.html.form.PasswordTextField;
 import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.spinner.SpinnerAjaxButton;
+import jakarta.inject.Inject;
 
 public class ToggleOtpDialog extends Modal<User> {
 	private final NotificationPanel feedback = new NotificationPanel("feedback");
@@ -50,9 +51,9 @@ public class ToggleOtpDialog extends Modal<User> {
 	private String secret;
 	private String[] codes;
 
-	@SpringBean
+	@Inject
 	private OtpManager otpManager;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public ToggleOtpDialog(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
index 4b32b8407..abd8a9b08 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
@@ -30,16 +30,19 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
+
 
 public class UserProfilePanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
 	private final WebMarkupContainer address = new WebMarkupContainer("address");
 	private final Label addressDenied = new Label("addressDenied", "");
 	private final WebMarkupContainer infoPanel = new WebMarkupContainer("info-panel");
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private UserContactDao contactDao;
 
 	public UserProfilePanel(String id, long userId) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
index 98db6288f..6d20f4441 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
@@ -47,10 +47,11 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
+import jakarta.inject.Inject;
 
 public class UserSearchPanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
@@ -62,11 +63,12 @@ public class UserSearchPanel extends UserBasePanel {
 	private final TextField<String> offer = new TextField<>("offer", Model.of(""));
 	private boolean searched = false;
 	private final WebMarkupContainer container = new WebMarkupContainer("container");
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private UserContactDao contactDao;
-	@SpringBean
+	@Inject
 	private ClientManager cm;
 
 	public UserSearchPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
index 0e80f3846..2c7160cd8 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
@@ -40,15 +40,18 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.wicketstuff.dashboard.Dashboard;
 import org.wicketstuff.dashboard.Widget;
 import org.wicketstuff.dashboard.WidgetDescriptor;
 import org.wicketstuff.dashboard.web.DashboardContext;
 
+import jakarta.inject.Inject;
+
 public class WidgetsPanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
-	@SpringBean
+
+	@Inject
 	private ConfigurationDao cfgDao;
 
 	public WidgetsPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java
index c319b0fcb..9a3816dc9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingInvitationForm.java
@@ -21,12 +21,15 @@ package org.apache.openmeetings.web.user.record;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.web.common.InvitationForm;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
+
 
 public class RecordingInvitationForm extends InvitationForm {
 	private static final long serialVersionUID = 1L;
 	private Long recordingId;
-	@SpringBean
+
+	@Inject
 	private RecordingDao recDao;
 
 	public RecordingInvitationForm(String id, String dropDownParentId) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
index a3f0c0d8e..a518e6bc2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
@@ -32,16 +32,19 @@ import org.apache.openmeetings.web.util.FileItemResourceReference;
 import org.apache.wicket.injection.Injector;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.IResource.Attributes;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.StringValue;
 
+import jakarta.inject.Inject;
+
 public abstract class RecordingResourceReference extends FileItemResourceReference<Recording> {
 	private static final long serialVersionUID = 1L;
-	@SpringBean
+
+	@Inject
 	private RecordingDao recDao;
-	@SpringBean
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
 	private GroupUserDao groupUserDao;
 
 	protected RecordingResourceReference(String name) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
index 5e1c0be8e..a98a39521 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
@@ -41,10 +41,11 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
+import jakarta.inject.Inject;
 
 public class RecordingsPanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
@@ -55,13 +56,13 @@ public class RecordingsPanel extends UserBasePanel {
 	private InvitationDialog invite;
 	private RecordingInvitationForm rif = new RecordingInvitationForm("form", INVITE_DIALOG_ID);
 
-	@SpringBean
+	@Inject
 	private RecordingDao recDao;
-	@SpringBean
+	@Inject
 	private InterviewConverter interviewConverter;
-	@SpringBean
+	@Inject
 	private RecordingConverter recordingConverter;
-	@SpringBean
+	@Inject
 	private RecordingChunkDao chunkDao;
 
 	public RecordingsPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
index 84433323c..b8c8df344 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
@@ -30,14 +30,17 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
+
 
 public class VideoInfo extends Panel {
 	private static final long serialVersionUID = 1L;
 	private final Form<Void> form = new Form<>("form");
 	private final Label dateLbl = new Label("recordEnd", Model.of(""));
 	private final Label roomNameLbl = new Label("roomName", Model.of(""));
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
 
 	public VideoInfo(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java
index 0402ecdee..0507b73eb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java
@@ -41,12 +41,13 @@ import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameAppender;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome6IconType;
+import jakarta.inject.Inject;
 
 public class RoomListPanel extends Panel {
 	private static final long serialVersionUID = 1L;
@@ -101,7 +102,8 @@ public class RoomListPanel extends Panel {
 			}.add(AttributeModifier.append(ATTR_TITLE, new ResourceModel("lbl.refresh"))));
 		}
 	};
-	@SpringBean
+
+	@Inject
 	private ClientManager cm;
 
 	public RoomListPanel(String id, List<Room> rooms, final String label) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
index 520486273..cee177c5c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
@@ -38,9 +38,11 @@ import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.resource.ByteArrayResource;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.io.IOUtils;
 
+import jakarta.inject.Inject;
+
 public class RoomsPanel extends UserPanel {
 	private static final long serialVersionUID = 1L;
 	private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
@@ -52,11 +54,12 @@ public class RoomsPanel extends UserPanel {
 	private List<Client> clientsInRoom = null;
 	private final List<Room> rooms;
 	private Long roomId = 0L;
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
-	@SpringBean
+	@Inject
 	private ClientManager cm;
-	@SpringBean
+	@Inject
 	private RoomDao roomDao;
 
 	public RoomsPanel(String id, List<Room> rooms) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
index f8c7716e5..f27116fed 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
@@ -31,13 +31,16 @@ import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import jakarta.inject.Inject;
+
 
 public class RoomsSelectorPanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
 	private static final String PANEL_ID = "rooms";
 	private final String type;
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
 
 	public RoomsSelectorPanel(String id, String type) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
index 6bf19f9a7..2d86c7bd0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
@@ -31,15 +31,17 @@ import org.apache.openmeetings.web.common.UserPanel;
 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
+import jakarta.inject.Inject;
 
 public class RoomsTabbedPanel extends UserPanel {
 	private static final long serialVersionUID = 1L;
-	@SpringBean
+
+	@Inject
 	private RoomDao roomDao;
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public RoomsTabbedPanel(String id) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
index 8f83817d5..e944c49aa 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
@@ -24,6 +24,7 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Map.Entry;
 
+import jakarta.inject.Inject;
 import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.openmeetings.db.dto.room.Whiteboard;
@@ -35,7 +36,7 @@ import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.IResource.Attributes;
 import org.apache.wicket.resource.FileSystemResource;
 import org.apache.wicket.resource.FileSystemResourceReference;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -45,7 +46,8 @@ import com.github.openjson.JSONObject;
 public abstract class FileItemResourceReference<T extends BaseFileItem> extends FileSystemResourceReference {
 	private static final long serialVersionUID = 1L;
 	protected static final Logger log = LoggerFactory.getLogger(FileItemResourceReference.class);
-	@SpringBean
+
+	@Inject
 	private WhiteboardManager wbm;
 
 	protected FileItemResourceReference(String name) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java
index fca3b4805..6cdee3776 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java
@@ -27,6 +27,7 @@ import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import java.io.File;
 import java.io.IOException;
 
+import jakarta.inject.Inject;
 import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
@@ -40,7 +41,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.resource.FileSystemResource;
 import org.apache.wicket.resource.FileSystemResourceReference;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.StringValue;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -48,9 +49,10 @@ import org.slf4j.LoggerFactory;
 public class GroupLogoResourceReference extends FileSystemResourceReference {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(GroupLogoResourceReference.class);
-	@SpringBean
+
+	@Inject
 	private GroupUserDao groupUserDao;
-	@SpringBean
+	@Inject
 	private RoomDao roomDao;
 
 	public GroupLogoResourceReference() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
index 0fe896f25..8b3f45b69 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
@@ -28,11 +28,12 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.ByteArrayResource;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import jakarta.inject.Inject;
 import jakarta.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.FileInputStream;
@@ -45,7 +46,7 @@ import static org.apache.openmeetings.util.OmFileHelper.SIP_USER_ID;
 public class ProfileImageResourceReference extends ResourceReference {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(ProfileImageResourceReference.class);
-	@SpringBean
+	@Inject
 	private UserDao userDao;
 
 	public ProfileImageResourceReference() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
index 2b5db90f1..0bc279f0d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
@@ -29,18 +29,21 @@ import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.FormatHelper;
 import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
 import org.apache.wicket.injection.Injector;
-import org.apache.wicket.spring.injection.annot.SpringBean;
+
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.validation.Validatable;
 import org.wicketstuff.select2.Response;
 
 import com.github.openjson.JSONStringer;
 
+import jakarta.inject.Inject;
+
 public class UserChoiceProvider extends RestrictiveChoiceProvider<User> {
 	private static final long serialVersionUID = 1L;
 	private static final long PAGE_SIZE = 10;
 	private final Map<String, User> newContacts = new HashMap<>();
-	@SpringBean
+
+	@Inject
 	private UserDao userDao;
 
 	public UserChoiceProvider() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
index 1b9bdd531..ed6375beb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openmeetings.web.util.logging;
 
-import io.prometheus.client.exporter.MetricsServlet;
+//INCOMPATIBLE with Jackarta! import io.prometheus.client.exporter.MetricsServlet;
 
-public class OpenMeetingsMetricsServlet extends MetricsServlet {
+public class OpenMeetingsMetricsServlet /*extends MetricsServlet*/ {
 	private static final long serialVersionUID = 1L;
 
 	public OpenMeetingsMetricsServlet() {
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/h2_persistence.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/h2_persistence.xml
index 88010b68b..cf0eb47a8 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/h2_persistence.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/h2_persistence.xml
@@ -71,8 +71,8 @@
 					, TestOnBorrow=true
 					, Username=
 					, Password=" />
-			<property name="javax.persistence.schema-generation.database.action" value="create" />
-			<property name="javax.persistence.schema-generation.create-database-schemas" value="true" />
+			<property name="jakarta.persistence.schema-generation.database.action" value="create" />
+			<property name="jakarta.persistence.schema-generation.create-database-schemas" value="true" />
 			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
 			<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
 			<property name="openjpa.DataCache" value="true" />
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/web.xml b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
index fc4cdf637..6877a51da 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/web.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
@@ -18,9 +18,11 @@
   under the License.
 
 -->
-<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
 		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
+		xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
+		version="6.0"
+		metadata-complete="true">
 	<context-param>
 		<param-name>contextConfigLocation</param-name>
 		<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractOmServerTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractOmServerTest.java
index b277a7575..9c471535e 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractOmServerTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractOmServerTest.java
@@ -48,9 +48,11 @@ import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
 
+import jakarta.inject.Inject;
+
 @SpringJUnitWebConfig(locations={"classpath:applicationContext.xml"})
 @RegularTest
 public abstract class AbstractOmServerTest {
@@ -67,17 +69,17 @@ public abstract class AbstractOmServerTest {
 	public static final String UNIT_TEST_ARAB_EXT_TYPE = "النُّجُومُ الخَمْسَةِ";
 	public static final Random rnd = new Random();
 
-	@Autowired
+	@Inject
 	protected AppointmentDao appointmentDao;
-	@Autowired
+	@Inject
 	protected UserDao userDao;
-	@Autowired
+	@Inject
 	protected GroupDao groupDao;
-	@Autowired
+	@Inject
 	private ImportInitvalues importInitvalues;
-	@Autowired
+	@Inject
 	protected ConfigurationDao cfgDao;
-	@Autowired
+	@Inject
 	protected Application app;
 
 	@BeforeAll
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/AbstractTestImport.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/AbstractTestImport.java
index 4f4406285..0b3b076f6 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/AbstractTestImport.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/AbstractTestImport.java
@@ -30,11 +30,13 @@ import org.apache.openmeetings.AbstractOmServerTest;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 public class AbstractTestImport extends AbstractOmServerTest {
 	private String cryptClass = null;
-	@Autowired
+	@Inject
 	protected BackupImport backupImport;
 
 	@BeforeEach
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
index 4264812bc..877c26431 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
@@ -30,6 +30,7 @@ import java.io.StringWriter;
 import java.nio.file.Paths;
 import java.time.LocalDate;
 
+import jakarta.inject.Inject;
 import jakarta.xml.bind.JAXBContext;
 import jakarta.xml.bind.Marshaller;
 
@@ -41,10 +42,9 @@ import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
 
 class TestExport extends AbstractOmServerTest {
-	@Autowired
+	@Inject
 	private FileItemDao fileItemDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
index 249e38b18..b5b125884 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
@@ -32,21 +32,23 @@ import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.apache.openmeetings.db.entity.server.LdapConfig;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestImport extends AbstractTestImport {
 	public static final String BACKUP_ROOT = "org/apache/openmeetings/backup/";
-	@Autowired
+	@Inject
 	private LdapConfigDao ldapDao;
-	@Autowired
+	@Inject
 	private OAuth2Dao oauthDao;
-	@Autowired
+	@Inject
 	private ChatDao chatDao;
-	@Autowired
+	@Inject
 	private RecordingDao recDao;
-	@Autowired
+	@Inject
 	private PrivateMessageFolderDao msgFolderDao;
-	@Autowired
+	@Inject
 	private ExtraMenuDao menuDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java
index 46a759afa..8c8f36167 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java
@@ -26,12 +26,14 @@ import java.io.File;
 import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
 import org.apache.openmeetings.db.dao.calendar.OmCalendarDao;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestImportCalendar extends AbstractTestImport {
-	@Autowired
+	@Inject
 	private OmCalendarDao calendarDao;
-	@Autowired
+	@Inject
 	private MeetingMemberDao meetingMemberDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java
index b5d9452f7..a8a4d4363 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java
@@ -37,16 +37,18 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestImportOld extends AbstractTestImport {
 	private static final Logger log = LoggerFactory.getLogger(TestImportOld.class);
 
-	@Autowired
+	@Inject
 	private RoomDao roomDao;
-	@Autowired
+	@Inject
 	private MeetingMemberDao meetingMemberDao;
-	@Autowired
+	@Inject
 	private FileItemDao fileDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java
index 3561ebda6..60006b7e4 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java
@@ -27,10 +27,12 @@ import java.io.File;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestImportRoom extends AbstractTestImport {
-	@Autowired
+	@Inject
 	private RoomDao roomDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java
index 3f52b008f..8b0270700 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java
@@ -30,10 +30,12 @@ import org.apache.openmeetings.db.entity.server.LdapConfig;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestImportUser extends AbstractTestImport {
-	@Autowired
+	@Inject
 	private LdapConfigDao ldapDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentAddAppointment.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentAddAppointment.java
index 65ba0b02a..796085cab 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentAddAppointment.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentAddAppointment.java
@@ -43,14 +43,16 @@ import org.apache.wicket.util.string.Strings;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestAppointmentAddAppointment extends AbstractWicketTesterTest {
 	private static final Logger log = LoggerFactory.getLogger(TestAppointmentAddAppointment.class);
 
-	@Autowired
+	@Inject
 	private AppointmentLogic appointmentLogic;
-	@Autowired
+	@Inject
 	private MeetingMemberDao meetingMemberDao;
 
 	private static void setTime(Appointment a) {
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentSchedulerTask.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentSchedulerTask.java
index 50996e8f5..ec8ad9b45 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentSchedulerTask.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentSchedulerTask.java
@@ -29,12 +29,14 @@ import org.apache.openmeetings.service.calendar.AppointmentLogic;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestAppointmentSchedulerTask extends AbstractOmServerTest {
 	private static final Logger log = LoggerFactory.getLogger(TestAppointmentSchedulerTask.class);
 
-	@Autowired
+	@Inject
 	private AppointmentLogic appointmentLogic;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
index bde16528f..33acec44b 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
@@ -30,12 +30,14 @@ import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestGetAppointment extends AbstractOmServerTest {
 	private static final Logger log = LoggerFactory.getLogger(TestGetAppointment.class);
 
-	@Autowired
+	@Inject
 	private RoomDao roomDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestOmCalendar.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestOmCalendar.java
index cf9e9530d..99b11c02c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestOmCalendar.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestOmCalendar.java
@@ -26,10 +26,12 @@ import org.apache.openmeetings.db.dao.calendar.OmCalendarDao;
 import org.apache.openmeetings.db.entity.calendar.OmCalendar;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestOmCalendar extends AbstractOmServerTest {
-	@Autowired
+	@Inject
 	private OmCalendarDao calendarDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
index 02d5f1970..eecb2f388 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
@@ -34,9 +34,10 @@ import org.apache.openmeetings.util.mail.IcalHandler;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 
 import jakarta.activation.DataHandler;
+import jakarta.inject.Inject;
 import jakarta.mail.BodyPart;
 import jakarta.mail.Message;
 import jakarta.mail.Multipart;
@@ -48,7 +49,7 @@ import jakarta.mail.internet.MimeMultipart;
 class TestSendIcalMessage extends AbstractOmServerTest {
 	private static final Logger log = LoggerFactory.getLogger(TestSendIcalMessage.class);
 
-	@Autowired
+	@Inject
 	private MailHandler mailHandler;
 
 	String subject = "test iCal";
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java b/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java
index e472b7958..f68796405 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java
@@ -35,12 +35,14 @@ import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.util.process.ProcessResultList;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestFileProcessor extends AbstractOmServerTest {
 	private static final String FILE_NAME = "test_name";
 
-	@Autowired
+	@Inject
 	protected FileProcessor processor;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestFileDao.java b/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestFileDao.java
index 6e9b0a4dd..db8d0fb45 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestFileDao.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestFileDao.java
@@ -31,12 +31,14 @@ import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestFileDao extends AbstractOmServerTest {
-	@Autowired
+	@Inject
 	protected FileItemDao fileDao;
-	@Autowired
+	@Inject
 	protected GroupDao groupDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java b/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java
index 86ee4cafe..ee24c2ec4 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java
@@ -34,11 +34,13 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestRoomDao extends AbstractOmServerTest {
 	private static final Logger log = LoggerFactory.getLogger(TestRoomDao.class);
-	@Autowired
+	@Inject
 	protected RoomDao roomDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java b/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java
index 43de067c1..8c7803447 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java
@@ -36,14 +36,16 @@ import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.service.room.InvitationManager;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestInvitation extends AbstractWicketTesterTest {
-	@Autowired
+	@Inject
 	private InvitationDao inviteDao;
-	@Autowired
+	@Inject
 	private InvitationManager invitationManager;
-	@Autowired
+	@Inject
 	private RoomDao roomDao;
 
 	private Invitation create(Valid valid) {
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/ldap/TestLdap.java b/openmeetings-web/src/test/java/org/apache/openmeetings/ldap/TestLdap.java
index 0f4e9984f..1f853c5fd 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/ldap/TestLdap.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/ldap/TestLdap.java
@@ -63,7 +63,9 @@ import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 @CreateDS(name = "omDS",
 	partitions = {
@@ -79,7 +81,7 @@ class TestLdap extends AbstractWicketTesterTest {
 	private static final String USER3 = "ldaptest3";
 	private static final Map<String, LdapConfig> CFG_MAP = new HashMap<>();
 	private static final Properties PROPS = new Properties();
-	@Autowired
+	@Inject
 	private LdapConfigDao ldapDao;
 
 	@RegisterExtension
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/service/scheduler/TestJob.java b/openmeetings-web/src/test/java/org/apache/openmeetings/service/scheduler/TestJob.java
index cbba81ce9..626c00d2e 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/service/scheduler/TestJob.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/service/scheduler/TestJob.java
@@ -45,15 +45,17 @@ import org.mockito.Mock;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.junit.jupiter.MockitoExtension;
 import org.mockito.stubbing.Answer;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 @ExtendWith(MockitoExtension.class)
 class TestJob extends AbstractWicketTesterTest {
-	@Autowired
+	@Inject
 	private CleanupJob cleanJob;
 	@Mock
 	private MailHandler mailHandler;
-	@Autowired
+	@Inject
 	@InjectMocks
 	private ReminderJob reminderJob;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java
index a0c3a6f8b..8a8cc6bf4 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java
@@ -38,11 +38,13 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.util.OmException;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestUserGroup extends AbstractOmServerTest {
 	public static final String GROUP_NAME = "Test Group";
-	@Autowired
+	@Inject
 	private GroupUserDao groupUserDao;
 
 	private User getValidUser() {
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestAuth.java b/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestAuth.java
index b2a36aa23..749d49c6c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestAuth.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestAuth.java
@@ -26,10 +26,12 @@ import org.apache.openmeetings.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 class TestAuth extends AbstractOmServerTest {
-	@Autowired
+	@Inject
 	private SessiondataDao sessionDao;
 
 	@Test
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
index 12f3604b5..c1e09c739 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
@@ -50,18 +50,19 @@ import org.apache.wicket.util.string.Strings;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import jakarta.inject.Inject;
 
 class TestHashPage extends AbstractWicketTesterTest {
 	private static final Logger log = LoggerFactory.getLogger(TestHashPage.class);
 
-	@Autowired
+	@Inject
 	protected RoomDao roomDao;
-	@Autowired
+	@Inject
 	protected RecordingDao recDao;
-	@Autowired
+	@Inject
 	protected InvitationDao inviteDao;
 
 	private void checkAccessDenied(boolean visible) {
diff --git a/openmeetings-web/src/test/jetty/web.xml b/openmeetings-web/src/test/jetty/web.xml
index 1922c4310..67bed99f4 100644
--- a/openmeetings-web/src/test/jetty/web.xml
+++ b/openmeetings-web/src/test/jetty/web.xml
@@ -18,9 +18,11 @@
   under the License.
 
 -->
-<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
 		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
+		xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
+		version="6.0"
+		metadata-complete="true">
 	<context-param>
 		<param-name>contextConfigLocation</param-name>
 		<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
diff --git a/openmeetings-webservice/pom.xml b/openmeetings-webservice/pom.xml
index cc357571b..fedb97db1 100644
--- a/openmeetings-webservice/pom.xml
+++ b/openmeetings-webservice/pom.xml
@@ -138,7 +138,7 @@
 						<servers>
 							<server>
 								<description>Your local OpenMeetings Server</description>
-								<url>http://localhost:5080/openmeetings/services</url>
+								<url>https://localhost:5443/openmeetings/services</url>
 							</server>
 							<server>
 								<description>Om Demo Server</description>
@@ -146,7 +146,8 @@
 							</server>
 						</servers>
 					</swaggerConfig>
-					<skip>${site.skip}</skip>
+					<!--skip>${site.skip}</skip-->
+					<skip>true</skip> <!-- Getting weird "Cannot invoke "java.util.Map.size()" because "map" is null" Error !!!!!! -->
 				</configuration>
 				<executions>
 					<execution>
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
index 421eca0c2..70ba9cea2 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/BaseWebService.java
@@ -36,18 +36,20 @@ import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
+import jakarta.inject.Inject;
+
 
 public abstract class BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(BaseWebService.class);
 
-	@Autowired
+	@Inject
 	protected SessiondataDao sessionDao;
-	@Autowired
+	@Inject
 	protected UserDao userDao;
-	@Autowired
+	@Inject
 	protected RoomDao roomDao;
-	@Autowired
+	@Inject
 	protected FileItemDao fileDao;
 
 	// this one is fail safe
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
index 3de82dd94..9fc1c2d68 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
@@ -25,6 +25,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Set;
 
+import jakarta.inject.Inject;
 import jakarta.jws.WebMethod;
 import jakarta.jws.WebParam;
 import jakarta.jws.WebService;
@@ -55,7 +56,7 @@ import org.apache.openmeetings.webservice.schema.AppointmentDTOWrapper;
 import org.apache.openmeetings.webservice.schema.ServiceResultWrapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Service;
 
 import io.swagger.v3.oas.annotations.Operation;
@@ -80,9 +81,9 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 public class CalendarWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(CalendarWebService.class);
 
-	@Autowired
+	@Inject
 	private AppointmentDao dao;
-	@Autowired
+	@Inject
 	private CalendarMapper calMapper;
 
 	/**
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
index c1d587e99..35d1f6bc5 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 
+import jakarta.inject.Inject;
 import jakarta.jws.WebMethod;
 import jakarta.jws.WebParam;
 import jakarta.jws.WebService;
@@ -58,7 +59,7 @@ import org.apache.openmeetings.webservice.schema.FileItemDTOWrapper;
 import org.apache.openmeetings.webservice.schema.ServiceResultWrapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Service;
 
 import io.swagger.v3.oas.annotations.Operation;
@@ -85,7 +86,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 public class FileWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(FileWebService.class);
 
-	@Autowired
+	@Inject
 	private FileProcessor fileProcessor;
 
 	/**
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
index 6901fb608..0c196c485 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
@@ -25,6 +25,7 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import jakarta.inject.Inject;
 import jakarta.jws.WebMethod;
 import jakarta.jws.WebParam;
 import jakarta.jws.WebService;
@@ -57,7 +58,7 @@ import org.apache.openmeetings.webservice.schema.UserSearchResultWrapper;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Service;
 
 import io.swagger.v3.oas.annotations.Operation;
@@ -84,9 +85,9 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 public class GroupWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(GroupWebService.class);
 
-	@Autowired
+	@Inject
 	private GroupDao groupDao;
-	@Autowired
+	@Inject
 	private GroupUserDao groupUserDao;
 
 	/**
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
index 2a8d16741..15aad443f 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.webservice.Constants.TNS;
 
 import java.util.List;
 
+import jakarta.inject.Inject;
 import jakarta.jws.WebMethod;
 import jakarta.jws.WebParam;
 import jakarta.jws.WebService;
@@ -44,7 +45,7 @@ import org.apache.openmeetings.webservice.schema.RecordingDTOListWrapper;
 import org.apache.openmeetings.webservice.schema.ServiceResultWrapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Service;
 
 import io.swagger.v3.oas.annotations.Operation;
@@ -68,7 +69,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 public class RecordingWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(RecordingWebService.class);
 
-	@Autowired
+	@Inject
 	private RecordingDao recordingDao;
 
 	/**
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
index 7dfc20c9b..354926548 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
@@ -23,6 +23,7 @@ import static org.apache.openmeetings.webservice.Constants.TNS;
 import java.util.ArrayList;
 import java.util.List;
 
+import jakarta.inject.Inject;
 import jakarta.jws.WebMethod;
 import jakarta.jws.WebParam;
 import jakarta.jws.WebService;
@@ -63,7 +64,7 @@ import org.apache.openmeetings.webservice.schema.UserDTOListWrapper;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Service;
 
 import io.swagger.v3.oas.annotations.Operation;
@@ -88,15 +89,15 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 public class RoomWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(RoomWebService.class);
 
-	@Autowired
+	@Inject
 	private IUserManager userManager;
-	@Autowired
+	@Inject
 	private IClientManager clientManager;
-	@Autowired
+	@Inject
 	private InvitationDao inviteDao;
-	@Autowired
+	@Inject
 	private InvitationManager inviteManager;
-	@Autowired
+	@Inject
 	private RoomMapper rMapper;
 
 	/**
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
index bb26ee6e9..aaf62217a 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
@@ -30,6 +30,7 @@ import java.security.NoSuchAlgorithmException;
 import java.util.List;
 import java.util.Locale;
 
+import jakarta.inject.Inject;
 import jakarta.jws.WebMethod;
 import jakarta.jws.WebParam;
 import jakarta.jws.WebService;
@@ -72,7 +73,7 @@ import org.apache.wicket.validation.Validatable;
 import org.apache.wicket.validation.ValidationError;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Service;
 
 import io.swagger.v3.oas.annotations.Operation;
@@ -99,13 +100,13 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 public class UserWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(UserWebService.class);
 
-	@Autowired
+	@Inject
 	private IUserManager userManager;
-	@Autowired
+	@Inject
 	private SOAPLoginDao soapDao;
-	@Autowired
+	@Inject
 	private GroupDao groupDao;
-	@Autowired
+	@Inject
 	private UserMapper uMapper;
 
 	/**
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java
index 4be455b1f..654f409e0 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java
@@ -30,6 +30,7 @@ import java.nio.file.Paths;
 
 import javax.imageio.ImageIO;
 
+import jakarta.inject.Inject;
 import jakarta.jws.WebMethod;
 import jakarta.jws.WebParam;
 import jakarta.jws.WebService;
@@ -64,7 +65,7 @@ import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory;
 import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+
 import org.springframework.stereotype.Service;
 
 import com.github.openjson.JSONArray;
@@ -89,9 +90,9 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 public class WbWebService extends BaseWebService {
 	private static final Logger log = LoggerFactory.getLogger(WbWebService.class);
 
-	@Autowired
+	@Inject
 	private IWhiteboardManager wbManager;
-	@Autowired
+	@Inject
 	private IClientManager cm;
 
 	/**
diff --git a/pom.xml b/pom.xml
index b1928da4f..4d8ef41e6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,6 +100,8 @@
 		<h2.version>2.2.224</h2.version>
 		<jakarta.mail.version>2.0.1</jakarta.mail.version>
 		<openjpa.version>3.2.2</openjpa.version>
+		<jakarta.persistence.version>3.1.0</jakarta.persistence.version>
+		<jakarta.transaction.version>2.0.1</jakarta.transaction.version>
 		<asterisk-java.version>3.39.0</asterisk-java.version>
 		<commons-lang3.version>3.13.0</commons-lang3.version>
 		<commons-dbcp.version>2.10.0</commons-dbcp.version>
@@ -130,8 +132,8 @@
 		<jain-sip.version>1.2.307</jain-sip.version><!-- other versions are broken! -->
 		<jasny-bootstrap.version>3.1.3-2</jasny-bootstrap.version>
 		<jodconverter.version>4.4.6</jodconverter.version>
-		<jaxb-runtime.version>2.3.8</jaxb-runtime.version>
-		<jakarta.servlet-api.version>5.0.0</jakarta.servlet-api.version>
+		<jaxb-runtime.version>4.0.2</jaxb-runtime.version>
+		<jakarta.servlet-api.version>6.0.0</jakarta.servlet-api.version>
 		<jquery-ui-touch-punch.version>0.2.3-2</jquery-ui-touch-punch.version>
 		<apacheds-test-framework.version>2.0.0.AM26</apacheds-test-framework.version>
 		<swagger.version>2.2.16</swagger.version>
@@ -809,6 +811,27 @@
 				<groupId>org.apache.openjpa</groupId>
 				<artifactId>openjpa</artifactId>
 				<version>${openjpa.version}</version>
+				<classifier>jakarta</classifier>
+				<exclusions>
+					<exclusion>
+						<groupId>org.apache.geronimo.specs</groupId>
+						<artifactId>geronimo-jpa_2.2_spec</artifactId>
+					</exclusion>
+					<exclusion>
+						<groupId>org.apache.geronimo.specs</groupId>
+						<artifactId>geronimo-jta_1.1_spec</artifactId>
+					</exclusion>
+				</exclusions>
+			</dependency>
+			<dependency>
+				<groupId>jakarta.persistence</groupId>
+				<artifactId>jakarta.persistence-api</artifactId>
+				<version>${jakarta.persistence.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>jakarta.transaction</groupId>
+				<artifactId>jakarta.transaction-api</artifactId>
+				<version>${jakarta.transaction.version}</version>
 			</dependency>
 			<dependency>
 				<groupId>org.apache.commons</groupId>
@@ -861,8 +884,19 @@
 						<groupId>net.sf.ehcache</groupId>
 						<artifactId>ehcache</artifactId>
 					</exclusion>
+					<exclusion>
+						<!-- will be replaced with Jakarta version below -->
+						<groupId>org.apache.jackrabbit</groupId>
+						<artifactId>jackrabbit-webdav</artifactId>
+					</exclusion>
 				</exclusions>
 			</dependency>
+			<dependency>
+				<groupId>org.apache.jackrabbit</groupId>
+				<artifactId>jackrabbit-webdav</artifactId>
+				<version>2.21.15-SNAPSHOT</version>
+				<classifier>jakarta</classifier>
+			</dependency>
 			<dependency>
 				<groupId>com.mysql</groupId>
 				<artifactId>mysql-connector-j</artifactId>
@@ -1456,12 +1490,33 @@
 					<groupId>org.apache.openjpa</groupId>
 					<artifactId>openjpa-maven-plugin</artifactId>
 					<version>${openjpa.version}</version>
+					<!-- set the version to be the same as the level in your runtime -->
 					<dependencies>
 						<dependency>
 							<groupId>org.apache.openjpa</groupId>
 							<artifactId>openjpa</artifactId>
-							<!-- set the version to be the same as the level in your runtime -->
 							<version>${openjpa.version}</version>
+							<classifier>jakarta</classifier>
+							<exclusions>
+								<exclusion>
+									<groupId>org.apache.geronimo.specs</groupId>
+									<artifactId>geronimo-jpa_2.2_spec</artifactId>
+								</exclusion>
+								<exclusion>
+									<groupId>org.apache.geronimo.specs</groupId>
+									<artifactId>geronimo-jta_1.1_spec</artifactId>
+								</exclusion>
+							</exclusions>
+						</dependency>
+						<dependency>
+							<groupId>jakarta.persistence</groupId>
+							<artifactId>jakarta.persistence-api</artifactId>
+							<version>${jakarta.persistence.version}</version>
+						</dependency>
+						<dependency>
+							<groupId>jakarta.transaction</groupId>
+							<artifactId>jakarta.transaction-api</artifactId>
+							<version>${jakarta.transaction.version}</version>
 						</dependency>
 					</dependencies>
 				</plugin>


[openmeetings] 20/27: [OPENMEETINGS-2756] JPMS branch is merged into this one

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 85fa591410668972ae616236d5884708436b99d7
Author: Maxim Solodovnik <so...@apache.org>
AuthorDate: Mon Sep 25 16:51:55 2023 +0700

    [OPENMEETINGS-2756] JPMS branch is merged into this one
---
 LICENSE                                            | 273 ---------------------
 openmeetings-core/pom.xml                          |   4 +-
 openmeetings-core/src/main/java/module-info.java   |  29 ++-
 .../openmeetings/core/util/WebSocketHelper.java    |   2 +-
 .../java/module-info.test}                         |  34 ++-
 openmeetings-db/pom.xml                            |   8 +-
 openmeetings-db/src/main/java/module-info.java     |  36 ++-
 .../java/org/apache/openmeetings/IApplication.java |   2 +-
 .../openmeetings/db/entity/basic/Client.java       |   2 +-
 .../openmeetings/db/entity/basic/IWsClient.java    |   2 +-
 .../openmeetings/db/entity/basic/WsClient.java     |   2 +-
 .../db/entity/user/PrivateMessageFolder.java       |   1 +
 .../java/module-info.test}                         |  41 +++-
 .../src/main/java/module-info.java                 |  27 +-
 .../apache/openmeetings/backup/BackupExport.java   |   5 +-
 .../java/org/apache/openmeetings/cli/Admin.java    |   5 +-
 .../java/module-info.test}                         |  32 ++-
 openmeetings-mediaserver/pom.xml                   |   4 +-
 .../src/main/java/module-info.java                 |  21 +-
 .../java/module-info.test}                         |  26 +-
 .../src/main/java/module-info.java                 |  26 +-
 .../subject/AppointmentReminderTemplate.java       |   2 +-
 .../mail/template/subject/AppointmentTemplate.java |   2 +-
 .../subject/CanceledAppointmentTemplate.java       |   2 +-
 .../subject/CreatedAppointmentTemplate.java        |   2 +-
 .../subject/InvitedAppointmentTemplate.java        |   2 +-
 .../subject/UpdatedAppointmentTemplate.java        |   2 +-
 openmeetings-util/src/main/java/module-info.java   |  27 +-
 openmeetings-util/src/test/java/module-info.test   |  27 +-
 openmeetings-web/pom.xml                           |   4 +-
 openmeetings-web/src/main/java/module-info.java    |  42 +++-
 .../web/admin/configurations/ConfigForm.java       |   2 +-
 .../web/admin/connection/ConnectionsPanel.java     |   2 +-
 .../openmeetings/web/admin/groups/GroupForm.java   |   6 +-
 .../openmeetings/web/admin/groups/GroupsPanel.java |   2 +-
 .../openmeetings/web/admin/labels/LangPanel.java   |   2 +-
 .../openmeetings/web/admin/rooms/RoomForm.java     |   2 +-
 .../openmeetings/web/admin/users/UserForm.java     |   6 +-
 .../openmeetings/web/admin/users/UsersPanel.java   |   2 +-
 .../apache/openmeetings/web/app/Application.java   |  14 +-
 .../apache/openmeetings/web/app/OtpManager.java    |   3 +-
 .../apache/openmeetings/web/app/UserManager.java   |   4 +-
 .../apache/openmeetings/web/app/WebSession.java    |   8 +-
 .../openmeetings/web/app/WhiteboardManager.java    |   2 +-
 .../openmeetings/web/common/GeneralUserForm.java   |   2 +-
 .../openmeetings/web/common/InvitationForm.java    |   2 +-
 .../apache/openmeetings/web/common/MainPanel.java  |   6 +-
 .../web/common/UploadableImagePanel.java           |   2 +-
 .../web/common/tree/FileTreePanel.java             |  12 +-
 .../web/common/tree/OmTreeProvider.java            |   2 +-
 .../apache/openmeetings/web/pages/BasePage.java    |   2 +-
 .../web/pages/auth/ForgetPasswordDialog.java       |   2 +-
 .../openmeetings/web/pages/auth/SignInDialog.java  |   8 +-
 .../openmeetings/web/pages/auth/SignInPage.java    |   2 +-
 .../web/pages/install/InstallWizard.java           |   8 +-
 .../apache/openmeetings/web/room/RoomPanel.java    |   4 +-
 .../web/room/RoomResourceReference.java            |   2 +-
 .../openmeetings/web/room/menu/ActionsSubMenu.java |   2 +-
 .../openmeetings/web/room/menu/RoomMenuPanel.java  |  10 +-
 .../web/room/sidebar/RoomFilePanel.java            |   2 +-
 .../web/room/sidebar/RoomUploadForm.java           |   2 +-
 .../apache/openmeetings/web/room/wb/WbPanel.java   |  10 +-
 .../web/room/wb/WbWebSocketHelper.java             |   2 +-
 .../openmeetings/web/room/wb/WsMessageWb.java      |   2 +-
 .../openmeetings/web/room/wb/WsMessageWbFile.java  |   2 +-
 .../apache/openmeetings/web/user/AboutDialog.java  |   2 +-
 .../openmeetings/web/user/MessageDialog.java       |   4 +-
 .../web/user/calendar/AppointmentDialog.java       |   2 +-
 .../apache/openmeetings/web/user/chat/Chat.java    |   5 +-
 .../dashboard/admin/AdminCleanupInfoDialog.java    |   2 +-
 .../web/user/profile/InvitationsPanel.java         |   2 +-
 .../web/user/profile/MessagesContactsPanel.java    |   4 +-
 .../web/user/profile/UserSearchPanel.java          |   2 +-
 .../web/user/profile/WidgetsPanel.java             |   4 +-
 .../web/user/record/RecordingsPanel.java           |   2 +-
 .../openmeetings/web/user/rooms/RoomListPanel.java |   2 +-
 .../openmeetings/web/user/rooms/RoomsPanel.java    |   2 +-
 .../web/user/rooms/RoomsSelectorPanel.java         |   4 +-
 .../web/util/GroupLogoResourceReference.java       |   4 +-
 .../web/util/ProfileImageResourceReference.java    |   9 +-
 .../web/util/UserDashboardPersister.java           |   2 +-
 .../java/module-info.test}                         |  49 +++-
 .../calendar/TestAppointmentAddAppointment.java    |   2 +-
 .../calendar/TestAppointmentSchedulerTask.java     |   2 +-
 .../calendar/TestDatabaseStructureAppointment.java |   2 +-
 ...TestDatabaseStructureGetAppointmentByRange.java |   2 +-
 .../openmeetings/calendar/TestGetAppointment.java  |   2 +-
 .../openmeetings/calendar/TestOmCalendar.java      |   2 +-
 .../openmeetings/calendar/TestSendIcalMessage.java |   2 +-
 .../org/apache/openmeetings/config/TestConfig.java |   2 +-
 .../openmeetings/core/file/TestFileProcessor.java  |   2 +-
 .../apache/openmeetings/domain/TestAddGroup.java   |   2 +-
 .../domain/TestUserGroupAggregation.java           |   2 +-
 .../openmeetings/invitiation/TestInvitation.java   |   2 +-
 .../org/apache/openmeetings/ldap/TestLdap.java     |   4 +-
 .../apache/openmeetings/smoke/TestSmokeBasic.java  |   2 +-
 .../apache/openmeetings/user/TestUserContact.java  |   4 +-
 .../apache/openmeetings/user/TestUserCount.java    |   2 +-
 .../apache/openmeetings/user/TestUserGroup.java    |   2 +-
 .../org/apache/openmeetings/userdata/TestAuth.java |   2 +-
 .../apache/openmeetings/userdata/TestLogin.java    |   2 +-
 .../{ => web}/AbstractOmServerTest.java            |   4 +-
 .../{ => web}/AbstractWicketTesterTest.java        |   4 +-
 .../openmeetings/{ => web}/IsolatedTest.java       |   2 +-
 .../apache/openmeetings/{ => web}/RegularTest.java |   2 +-
 .../org/apache/openmeetings/web/TestCalendar.java  |   4 +-
 .../org/apache/openmeetings/web/TestMainAreas.java |   4 +-
 .../org/apache/openmeetings/web/TestMainMenu.java  |   4 +-
 .../openmeetings/web/app/TestApplication.java      |   2 +-
 .../web/app/TestApplicationMocked.java             |   2 +-
 .../web/app/TestOmAuthenticationStrategy.java      |   2 +-
 .../web/app/TestUserManagerMocked.java             |   2 +-
 .../openmeetings/web/app/TestWebSession.java       |   2 +-
 .../{ => web}/backup/AbstractTestImport.java       |   5 +-
 .../openmeetings/{ => web}/backup/TestExport.java  |   5 +-
 .../openmeetings/{ => web}/backup/TestImport.java  |   4 +-
 .../{ => web}/backup/TestImportCalendar.java       |   4 +-
 .../{ => web}/backup/TestImportConfig.java         |   4 +-
 .../{ => web}/backup/TestImportOld.java            |   4 +-
 .../{ => web}/backup/TestImportRoom.java           |   4 +-
 .../{ => web}/backup/TestImportUser.java           |   5 +-
 .../openmeetings/{ => web}/cli/TestAdmin.java      |  20 +-
 .../openmeetings/{ => web}/cli/TestPatcher.java    |   9 +-
 .../openmeetings/{ => web}/db/dao/TestFileDao.java |   4 +-
 .../{ => web}/db/dao/TestMessageDao.java           |   4 +-
 .../openmeetings/{ => web}/db/dao/TestRoomDao.java |   4 +-
 .../openmeetings/web/pages/TestHashPage.java       |   2 +-
 .../openmeetings/web/pages/auth/TestLoginUI.java   |   2 +-
 .../web/pages/install/TestInstall.java             |  22 +-
 .../service/mail/template/TestEmailTemplate.java   |  10 +-
 .../mail/template/subject/TestSubjTemplate.java    |  12 +-
 .../{ => web}/service/scheduler/TestJob.java       |   6 +-
 .../openmeetings/{ => web}/util/TestDateTime.java  |   4 +-
 .../{ => web}/util/TestStoredFile.java             |   5 +-
 .../webservice/AbstractWebServiceTest.java         |   8 +-
 .../webservice/CreateTomcatExtension.java          |   2 +-
 .../webservice/TestCalendarService.java            |  12 +-
 .../openmeetings/webservice/TestErrorService.java  |   2 +-
 .../openmeetings/webservice/TestFileService.java   |   6 +-
 .../openmeetings/webservice/TestGroupService.java  |   4 +-
 .../webservice/TestRecordingService.java           |   2 +-
 .../openmeetings/webservice/TestUserService.java   |  10 +-
 openmeetings-webservice/pom.xml                    |   4 +-
 .../src/main/java/module-info.java                 |  31 ++-
 .../java/module-info.test}                         |  36 ++-
 pom.xml                                            |  10 +-
 146 files changed, 674 insertions(+), 604 deletions(-)

diff --git a/LICENSE b/LICENSE
index 3fd7d6e20..dfbefde55 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1348,279 +1348,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
-======================================================================================================================
-
-For javax.annotation-api-1.2.jar:
-	URL: http://jcp.org/en/jsr/detail?id=250
-
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-
-1. Definitions.
-
-1.1. “Contributor” means each individual or entity that creates or contributes to the creation of Modifications.
-
-1.2. “Contributor Version” means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
-
-1.3. “Covered Software” means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
-
-1.4. “Executable” means the Covered Software in any form other than Source Code.
-
-1.5. “Initial Developer” means the individual or entity that first makes Original Software available under this License.
-
-1.6. “Larger Work” means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
-
-1.7. “License” means this document.
-
-1.8. “Licensable” means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
-
-1.9. “Modifications” means the Source Code and Executable form of any of the following:
-
-A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
-
-B. Any new file that contains any part of the Original Software or previous Modification; or
-
-C. Any new file that is contributed or otherwise made available under the terms of this License.
-
-1.10. “Original Software” means the Source Code and Executable form of computer software code that is originally released under this License.
-
-1.11. “Patent Claims” means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
-
-1.12. “Source Code” means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
-
-1.13. “You” (or “Your”) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, “You” includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, “control” means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outsta [...]
-
-2. License Grants.
-
-2.1. The Initial Developer Grant.
-
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
-
-(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
-
-(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
-
-(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
-
-(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
-
-2.2. Contributor Grant.
-
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
-
-(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
-
-(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
-
-(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
-
-(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
-
-3. Distribution Obligations.
-
-3.1. Availability of Source Code.
-
-Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software i [...]
-
-3.2. Modifications.
-
-The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
-
-3.3. Required Notices.
-
-You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
-
-3.4. Application of Additional Terms.
-
-You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients’ rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such [...]
-
-3.5. Distribution of Executable Versions.
-
-You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient’s rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form u [...]
-
-3.6. Larger Works.
-
-You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
-
-4. Versions of the License.
-
-4.1. New Versions.
-
-Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
-
-4.2. Effect of New Versions.
-
-You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which [...]
-
-4.3. Modified Versions.
-
-When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
-
-5. DISCLAIMER OF WARRANTY.
-
-COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE [...]
-
-6. TERMINATION.
-
-6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
-
-6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as “Participant”) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights gr [...]
-
-6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
-
-7. LIMITATION OF LIABILITY.
-
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL O [...]
-
-8. U.S. GOVERNMENT END USERS.
-
-The Covered Software is a “commercial item,” as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer software” (as that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and “commercial computer software documentation” as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth he [...]
-
-9. MISCELLANEOUS.
-
-This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction’s conflict-of-law provisions. Any litigation  [...]
-
-10. RESPONSIBILITY FOR CLAIMS.
-
-As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
-
-NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
-
-The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
-
-The GNU General Public License (GPL) Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
-
-Preamble
-
-The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library Genera [...]
-
-When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and modification follow.
-
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. ( [...]
-
-Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
-
-1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
-
-a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
-
-b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
-
-c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is i [...]
-
-These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose p [...]
-
-Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
-
-3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
-
-a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
-
-b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
-
-c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major co [...]
-
-If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works ba [...]
-
-6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not dist [...]
-
-If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/dono [...]
-
-This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
-
-9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
-
-NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  [...]
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO  [...]
-
-END OF TERMS AND CONDITIONS
-
-How to Apply These Terms to Your New Programs
-
-If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
-
-To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
-
-One line to give the program's name and a brief idea of what it does.
-
-Copyright (C)
-
-This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
-
-Gnomovision version 69, Copyright (C) year name of author
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
-
-Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-signature of Ty Coon, 1 April 1989
-Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
-
-"CLASSPATH" EXCEPTION TO THE GPL VERSION 2
-
-Certain source files distributed by Sun Microsystems, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Sun has expressly included in the particular source file's header the words
-"Sun designates this particular file as subject to the "Classpath" exception as provided by Sun in the License file that accompanied this code."
-
-Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination.
-
-As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.? An independent module is a module which is not derived from or based on th [...]
-
-
 ======================================================================================================================
 
 For javax.ws.rs-api-2.0.1.jar:
diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index c7d997381..7b3e47fa1 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -34,7 +34,7 @@
 	</properties>
 	<build>
 		<plugins>
-			<plugin>
+			<!--plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
 				<executions>
@@ -54,7 +54,7 @@
 						<phase>generate-resources</phase>
 					</execution>
 				</executions>
-			</plugin>
+			</plugin-->
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
diff --git a/openmeetings-core/src/main/java/module-info.java b/openmeetings-core/src/main/java/module-info.java
index 9a17eeddd..e14c5ac26 100644
--- a/openmeetings-core/src/main/java/module-info.java
+++ b/openmeetings-core/src/main/java/module-info.java
@@ -27,19 +27,36 @@ module org.apache.openmeetings.core {
 	exports org.apache.openmeetings.core.sip;
 	exports org.apache.openmeetings.core.util;
 
-	requires transitive org.apache.openmeetings.db;
+	requires com.github.openjson;
 
-	requires transitive org.apache.commons.io;
-	requires transitive java.annotation;
-	requires transitive java.xml;
+	requires jakarta.annotation;
+	requires jakarta.inject;
+	requires jakarta.mail;
+
+	requires org.apache.commons.io;
+	requires org.apache.commons.lang3;
+
+	requires org.apache.tika.core;
+	requires org.apache.tika.parser.image;
+
+	requires org.apache.openmeetings.db;
+	requires org.apache.openmeetings.util;
+
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.websocket.core;
+	requires org.apache.wicket.util;
+
+	requires java.xml;
 
 	requires xstream;
 
 	requires jodconverter.core;
 	requires jodconverter.local;
 	requires org.apache.directory.ldap.api.all;
-	requires javax.inject;
 	requires asterisk.java;
 	requires jain.sip.ri;
-	requires jakarta.mail;
+
+	requires spring.context;
+
+	requires org.slf4j;
 }
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
index 896856bd1..57ebc1bd5 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
@@ -28,7 +28,7 @@ import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
 
-import javax.annotation.Nonnull;
+import jakarta.annotation.Nonnull;
 
 import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.core.util.ws.WsMessageAll;
diff --git a/openmeetings-core/src/main/java/module-info.java b/openmeetings-core/src/test/java/module-info.test
similarity index 69%
copy from openmeetings-core/src/main/java/module-info.java
copy to openmeetings-core/src/test/java/module-info.test
index 9a17eeddd..b76057d82 100644
--- a/openmeetings-core/src/main/java/module-info.java
+++ b/openmeetings-core/src/test/java/module-info.test
@@ -18,6 +18,7 @@
  */
 
 module org.apache.openmeetings.core {
+	// This one should be in-sync with module-info.java
 	exports org.apache.openmeetings.core.converter;
 	exports org.apache.openmeetings.core.data.file;
 	exports org.apache.openmeetings.core.ldap;
@@ -27,19 +28,40 @@ module org.apache.openmeetings.core {
 	exports org.apache.openmeetings.core.sip;
 	exports org.apache.openmeetings.core.util;
 
-	requires transitive org.apache.openmeetings.db;
+	requires com.github.openjson;
 
-	requires transitive org.apache.commons.io;
-	requires transitive java.annotation;
-	requires transitive java.xml;
+	requires jakarta.annotation;
+	requires jakarta.inject;
+	requires jakarta.mail;
+
+	requires org.apache.commons.io;
+	requires org.apache.commons.lang3;
+
+	requires org.apache.tika.core;
+	requires org.apache.tika.parser.image;
+
+	requires org.apache.openmeetings.db;
+	requires org.apache.openmeetings.util;
+
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.websocket.core;
+	requires org.apache.wicket.util;
+
+	requires java.xml;
 
 	requires xstream;
 
 	requires jodconverter.core;
 	requires jodconverter.local;
 	requires org.apache.directory.ldap.api.all;
-	requires javax.inject;
 	requires asterisk.java;
 	requires jain.sip.ri;
-	requires jakarta.mail;
+
+	requires spring.context;
+
+	requires org.slf4j;
+
+	//tests
+	requires org.junit.jupiter.engine;
+	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index e82e7264b..416b02239 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -63,6 +63,10 @@
 			<groupId>jakarta.transaction</groupId>
 			<artifactId>jakarta.transaction-api</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>jakarta.annotation</groupId>
+			<artifactId>jakarta.annotation-api</artifactId>
+		</dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-tx</artifactId>
@@ -118,7 +122,7 @@
 	</dependencies>
 	<build>
 		<plugins>
-			<plugin>
+			<!--plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
 				<executions>
@@ -138,7 +142,7 @@
 						<phase>generate-resources</phase>
 					</execution>
 				</executions>
-			</plugin>
+			</plugin-->
 			<plugin>
 				<groupId>org.apache.openjpa</groupId>
 				<artifactId>openjpa-maven-plugin</artifactId>
diff --git a/openmeetings-db/src/main/java/module-info.java b/openmeetings-db/src/main/java/module-info.java
index f65ad04b8..b31f406ef 100644
--- a/openmeetings-db/src/main/java/module-info.java
+++ b/openmeetings-db/src/main/java/module-info.java
@@ -51,16 +51,32 @@ module org.apache.openmeetings.db {
 	exports org.apache.openmeetings.db.util;
 	exports org.apache.openmeetings.db.util.ws;
 
-	requires transitive org.apache.openmeetings.util;
-	requires transitive org.apache.wicket.request;
-	requires transitive org.apache.wicket.websocket.core;
-	requires transitive org.apache.commons.text;
-	requires transitive java.xml.bind;
-	requires transitive org.apache.openjpa;
-	requires transitive spring.beans;
-	requires transitive spring.web;
-	requires transitive spring.core;
+	requires com.github.openjson;
 
+	requires org.apache.commons.lang3;
+	requires org.apache.commons.text;
+
+	requires org.apache.openjpa;
+
+	requires org.apache.openmeetings.util;
+
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.extensions;
+	requires org.apache.wicket.request;
+	requires org.apache.wicket.util;
+	requires org.apache.wicket.websocket.core;
+
+	requires spring.beans;
+	requires spring.web;
+	requires spring.core;
 	requires spring.tx;
-	requires javax.persistence;
+	requires spring.context;
+
+	requires jakarta.annotation;
+	requires jakarta.inject;
+	requires jakarta.persistence;
+	requires jakarta.servlet;
+	requires jakarta.xml.bind;
+
+	requires org.slf4j;
 }
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
index fb0695fa1..53eecfeaf 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/IApplication.java
@@ -22,7 +22,7 @@ import java.util.Locale;
 import java.util.Set;
 import java.util.function.Supplier;
 
-import javax.annotation.Nonnull;
+import jakarta.annotation.Nonnull;
 import jakarta.servlet.ServletContext;
 
 import org.apache.openmeetings.db.entity.room.Invitation;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
index f1dbeacea..356f9b751 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
@@ -31,7 +31,7 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Stream;
 
-import javax.annotation.Nonnull;
+import jakarta.annotation.Nonnull;
 
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.IDataProviderEntity;
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IWsClient.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IWsClient.java
index 4770c42da..833011dec 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IWsClient.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/IWsClient.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.entity.basic;
 
 import java.io.Serializable;
 
-import javax.annotation.Nonnull;
+import jakarta.annotation.Nonnull;
 
 /**
  * Necessary for temp clients being created on HashPage
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/WsClient.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/WsClient.java
index b3d7aba0f..54db5a55e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/WsClient.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/WsClient.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.db.entity.basic;
 
 import static java.util.UUID.randomUUID;
 
-import javax.annotation.Nonnull;
+import jakarta.annotation.Nonnull;
 
 /**
  * Temporary class for test recording, will be unified
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
index 87bf1d081..e202f9d1f 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
@@ -27,6 +27,7 @@ import jakarta.persistence.Entity;
 import jakarta.persistence.GeneratedValue;
 import jakarta.persistence.GenerationType;
 import jakarta.persistence.Id;
+import jakarta.persistence.NamedQuery;
 import jakarta.persistence.Table;
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
diff --git a/openmeetings-db/src/main/java/module-info.java b/openmeetings-db/src/test/java/module-info.test
similarity index 76%
copy from openmeetings-db/src/main/java/module-info.java
copy to openmeetings-db/src/test/java/module-info.test
index f65ad04b8..df483e26a 100644
--- a/openmeetings-db/src/main/java/module-info.java
+++ b/openmeetings-db/src/test/java/module-info.test
@@ -17,6 +17,7 @@
  * under the License.
  */
 module org.apache.openmeetings.db {
+	// This one should be in-sync with module-info.java
 	exports org.apache.openmeetings;
 	exports org.apache.openmeetings.db.bind;
 	exports org.apache.openmeetings.db.bind.adapter;
@@ -51,16 +52,36 @@ module org.apache.openmeetings.db {
 	exports org.apache.openmeetings.db.util;
 	exports org.apache.openmeetings.db.util.ws;
 
-	requires transitive org.apache.openmeetings.util;
-	requires transitive org.apache.wicket.request;
-	requires transitive org.apache.wicket.websocket.core;
-	requires transitive org.apache.commons.text;
-	requires transitive java.xml.bind;
-	requires transitive org.apache.openjpa;
-	requires transitive spring.beans;
-	requires transitive spring.web;
-	requires transitive spring.core;
+	requires com.github.openjson;
 
+	requires org.apache.commons.lang3;
+	requires org.apache.commons.text;
+
+	requires org.apache.openjpa;
+
+	requires org.apache.openmeetings.util;
+
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.extensions;
+	requires org.apache.wicket.request;
+	requires org.apache.wicket.util;
+	requires org.apache.wicket.websocket.core;
+
+	requires spring.beans;
+	requires spring.web;
+	requires spring.core;
 	requires spring.tx;
-	requires javax.persistence;
+	requires spring.context;
+
+	requires jakarta.annotation;
+	requires jakarta.inject;
+	requires jakarta.persistence;
+	requires jakarta.servlet;
+	requires jakarta.xml.bind;
+
+	requires org.slf4j;
+
+	//tests
+	requires org.junit.jupiter.engine;
+	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-install/src/main/java/module-info.java b/openmeetings-install/src/main/java/module-info.java
index cb5c126f9..60729e6df 100644
--- a/openmeetings-install/src/main/java/module-info.java
+++ b/openmeetings-install/src/main/java/module-info.java
@@ -22,9 +22,32 @@ module org.apache.openmeetings.install {
 	exports org.apache.openmeetings.cli;
 	exports org.apache.openmeetings.installation;
 
-	requires transitive org.apache.openmeetings.core;
+	requires com.github.openjson;
+
+	requires org.apache.commons.io;
+	requires org.apache.commons.lang3;
+
+	requires org.apache.openjpa;
+
+	requires org.apache.openmeetings.core;
+	requires org.apache.openmeetings.db;
+	requires org.apache.openmeetings.util;
+
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.request;
+	requires org.apache.wicket.util;
+
+	requires jakarta.inject;
+	requires jakarta.xml.bind;
+
+	requires spring.context;
+	requires spring.context.support;
+	requires spring.web;
+
 	requires java.desktop;
 	requires commons.cli;
-	requires spring.context.support;
 	requires quartz;
+	requires xstream;
+
+	requires org.slf4j;
 }
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
index fdc95b1eb..d5724d024 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
@@ -384,10 +384,7 @@ public class BackupExport {
 		writeList(zos, "extraMenus.xml", EXTRA_MENU_LIST_NODE, list);
 	}
 
-	/*
-	 * Package private for tests
-	 */
-	static <T> ByteArrayOutputStream stream(String listElement, List<T> list) throws Exception {
+	public static <T> ByteArrayOutputStream stream(String listElement, List<T> list) throws Exception {
 		ByteArrayOutputStream baos = new ByteArrayOutputStream(10 * 1024); //10K
 		writeList(baos, listElement, list);
 		return baos;
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
index 549d993ff..af06ca5b1 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
@@ -105,7 +105,7 @@ public class Admin {
 	private File home;
 	private String step;
 
-	Admin() {
+	public Admin() {
 		cfg = new InstallationConfig();
 		opts = buildOptions();
 		step = "Initialization";
@@ -229,8 +229,7 @@ public class Admin {
 		return context;
 	}
 
-	//package private wrapper for testing
-	void process(String... args) throws Exception {
+	public void process(String... args) throws Exception {
 		CommandLineParser parser = new DefaultParser();
 		try {
 			cmdl = parser.parse(opts, args);
diff --git a/openmeetings-install/src/main/java/module-info.java b/openmeetings-install/src/test/java/module-info.test
similarity index 62%
copy from openmeetings-install/src/main/java/module-info.java
copy to openmeetings-install/src/test/java/module-info.test
index cb5c126f9..6625f6c4d 100644
--- a/openmeetings-install/src/main/java/module-info.java
+++ b/openmeetings-install/src/test/java/module-info.test
@@ -18,13 +18,41 @@
  */
 
 module org.apache.openmeetings.install {
+	// This one should be in-sync with module-info.java
 	exports org.apache.openmeetings.backup;
 	exports org.apache.openmeetings.cli;
 	exports org.apache.openmeetings.installation;
 
-	requires transitive org.apache.openmeetings.core;
+	requires com.github.openjson;
+
+	requires org.apache.commons.io;
+	requires org.apache.commons.lang3;
+
+	requires org.apache.openjpa;
+
+	requires org.apache.openmeetings.core;
+	requires org.apache.openmeetings.db;
+	requires org.apache.openmeetings.util;
+
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.request;
+	requires org.apache.wicket.util;
+
+	requires jakarta.inject;
+	requires jakarta.xml.bind;
+
+	requires spring.context;
+	requires spring.context.support;
+	requires spring.web;
+
 	requires java.desktop;
 	requires commons.cli;
-	requires spring.context.support;
 	requires quartz;
+	requires xstream;
+
+	requires org.slf4j;
+
+	//tests
+	requires org.junit.jupiter.engine;
+	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-mediaserver/pom.xml b/openmeetings-mediaserver/pom.xml
index dfe2c22fd..017679e2f 100644
--- a/openmeetings-mediaserver/pom.xml
+++ b/openmeetings-mediaserver/pom.xml
@@ -59,7 +59,7 @@
 	</dependencies>
 	<build>
 		<plugins>
-			<plugin>
+			<!--plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
 				<executions>
@@ -79,7 +79,7 @@
 						<phase>generate-resources</phase>
 					</execution>
 				</executions>
-			</plugin>
+			</plugin-->
 		</plugins>
 	</build>
 </project>
diff --git a/openmeetings-mediaserver/src/main/java/module-info.java b/openmeetings-mediaserver/src/main/java/module-info.java
index 47ee94e67..42f766fac 100644
--- a/openmeetings-mediaserver/src/main/java/module-info.java
+++ b/openmeetings-mediaserver/src/main/java/module-info.java
@@ -20,12 +20,27 @@
 module org.apache.openmeetings.mediaserver {
 	exports org.apache.openmeetings.mediaserver;
 
-	requires transitive org.apache.openmeetings.core;
-	requires transitive org.apache.wicket.ioc;
+	requires com.github.openjson;
+
+	requires org.apache.commons.lang3;
+
+	requires org.apache.openmeetings.core;
+	requires org.apache.openmeetings.db;
+	requires org.apache.openmeetings.util;
+
+	requires org.apache.wicket.ioc;
+	requires org.apache.wicket.util;
+
+	requires jakarta.annotation;
+	requires jakarta.inject;
+
+	requires spring.beans;
+	requires spring.context;
 
 	requires kurento.client;
 	requires kurento.jsonrpc.client;
 	requires kurento.commons;
-	requires javax.inject;
 	requires com.google.gson;
+
+	requires org.slf4j;
 }
diff --git a/openmeetings-mediaserver/src/main/java/module-info.java b/openmeetings-mediaserver/src/test/java/module-info.test
similarity index 66%
copy from openmeetings-mediaserver/src/main/java/module-info.java
copy to openmeetings-mediaserver/src/test/java/module-info.test
index 47ee94e67..deaf32995 100644
--- a/openmeetings-mediaserver/src/main/java/module-info.java
+++ b/openmeetings-mediaserver/src/test/java/module-info.test
@@ -18,14 +18,34 @@
  */
 
 module org.apache.openmeetings.mediaserver {
+	// This one should be in-sync with module-info.java
 	exports org.apache.openmeetings.mediaserver;
 
-	requires transitive org.apache.openmeetings.core;
-	requires transitive org.apache.wicket.ioc;
+	requires com.github.openjson;
+
+	requires org.apache.commons.lang3;
+
+	requires org.apache.openmeetings.core;
+	requires org.apache.openmeetings.db;
+	requires org.apache.openmeetings.util;
+
+	requires org.apache.wicket.ioc;
+	requires org.apache.wicket.util;
+
+	requires jakarta.annotation;
+	requires jakarta.inject;
+
+	requires spring.beans;
+	requires spring.context;
 
 	requires kurento.client;
 	requires kurento.jsonrpc.client;
 	requires kurento.commons;
-	requires javax.inject;
 	requires com.google.gson;
+
+	requires org.slf4j;
+
+	//tests
+	requires org.junit.jupiter.engine;
+	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-service/src/main/java/module-info.java b/openmeetings-service/src/main/java/module-info.java
index 2969affec..b0f443fcf 100644
--- a/openmeetings-service/src/main/java/module-info.java
+++ b/openmeetings-service/src/main/java/module-info.java
@@ -18,17 +18,37 @@
  */
 
 module org.apache.openmeetings.service {
+	exports org.apache.openmeetings.service.calendar;
 	exports org.apache.openmeetings.service.calendar.caldav;
 	exports org.apache.openmeetings.service.mail;
 	exports org.apache.openmeetings.service.mail.template;
+	exports org.apache.openmeetings.service.mail.template.subject;
 	exports org.apache.openmeetings.service.room;
+	exports org.apache.openmeetings.service.scheduler;
 
-	requires transitive org.apache.openmeetings.core;
+	requires org.apache.commons.lang3;
 
-	requires transitive org.apache.wicket.spring;
+	requires org.apache.openmeetings.db;
+	requires org.apache.openmeetings.core;
+	requires org.apache.openmeetings.util;
+
+	requires jakarta.annotation;
+	requires jakarta.inject;
+	requires jakarta.servlet;
+
+	requires spring.context;
+
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.request;
+	requires org.apache.wicket.spring;
+	requires org.apache.wicket.util;
 
 	requires org.apache.httpcomponents.httpcore;
 	requires org.apache.httpcomponents.httpclient;
-	requires jackrabbit.webdav;
+	requires jackrabbit.webdav.jakarta;
 	requires caldav4j;
+	requires java.xml;
+	requires org.mnode.ical4j.core;
+
+	requires org.slf4j;
 }
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentReminderTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentReminderTemplate.java
index 08149d8ca..04dc2de2f 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentReminderTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentReminderTemplate.java
@@ -47,7 +47,7 @@ public class AppointmentReminderTemplate extends AppointmentTemplate {
 	}
 
 	@Override
-	String getPrefix() {
+	public String getPrefix() {
 		return app.getOmString("1158", locale);
 	}
 }
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentTemplate.java
index 8f40f5fb7..d2ab5d823 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/AppointmentTemplate.java
@@ -59,7 +59,7 @@ public abstract class AppointmentTemplate extends SubjectEmailTemplate {
 		add(new Label("end", format(a.getEnd())));
 	}
 
-	abstract String getPrefix();
+	public abstract String getPrefix();
 
 	@Override
 	Fragment getSubjectFragment() {
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CanceledAppointmentTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CanceledAppointmentTemplate.java
index ebf807b0c..fd32229cf 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CanceledAppointmentTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CanceledAppointmentTemplate.java
@@ -47,7 +47,7 @@ public class CanceledAppointmentTemplate extends InvitedAppointmentTemplate {
 	}
 
 	@Override
-	String getPrefix() {
+	public String getPrefix() {
 		return app.getOmString("1157", locale);
 	}
 }
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CreatedAppointmentTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CreatedAppointmentTemplate.java
index 161d10fba..627b34e58 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CreatedAppointmentTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/CreatedAppointmentTemplate.java
@@ -47,7 +47,7 @@ public class CreatedAppointmentTemplate extends InvitedAppointmentTemplate {
 	}
 
 	@Override
-	String getPrefix() {
+	public String getPrefix() {
 		return app.getOmString("1151", locale);
 	}
 }
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/InvitedAppointmentTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/InvitedAppointmentTemplate.java
index 7f0b00d26..ac4823e81 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/InvitedAppointmentTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/InvitedAppointmentTemplate.java
@@ -28,7 +28,7 @@ public abstract class InvitedAppointmentTemplate extends AppointmentTemplate {
 	private static final long serialVersionUID = 1L;
 	protected final String invitorName;
 
-	InvitedAppointmentTemplate(Locale locale, Appointment a, TimeZone tz, String invitorName) {
+	public InvitedAppointmentTemplate(Locale locale, Appointment a, TimeZone tz, String invitorName) {
 		super(locale, a, tz);
 		this.invitorName = invitorName;
 	}
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/UpdatedAppointmentTemplate.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/UpdatedAppointmentTemplate.java
index cb9b31549..f6231d073 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/UpdatedAppointmentTemplate.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/subject/UpdatedAppointmentTemplate.java
@@ -47,7 +47,7 @@ public class UpdatedAppointmentTemplate extends InvitedAppointmentTemplate {
 	}
 
 	@Override
-	String getPrefix() {
+	public String getPrefix() {
 		return app.getOmString("1155", locale);
 	}
 }
diff --git a/openmeetings-util/src/main/java/module-info.java b/openmeetings-util/src/main/java/module-info.java
index 3e307dab1..72e073b16 100644
--- a/openmeetings-util/src/main/java/module-info.java
+++ b/openmeetings-util/src/main/java/module-info.java
@@ -24,19 +24,24 @@ module org.apache.openmeetings.util {
 	exports org.apache.openmeetings.util.ws;
 	exports org.apache.openmeetings.util.logging;
 
-	requires transitive org.apache.wicket.util;
-	requires transitive org.apache.wicket.core;
-	requires transitive org.apache.wicket.extensions;
-	requires transitive org.apache.commons.lang3;
-	requires transitive com.github.openjson;
-	requires transitive org.slf4j;
-	requires transitive javax.servlet.api;
-	requires transitive org.apache.tika.core;
-	requires transitive spring.context;
-	requires transitive org.apache.commons.codec;
+	requires jakarta.activation;
+	requires jakarta.servlet;
+
+	requires com.github.openjson;
+
+	requires org.apache.commons.codec;
+	requires org.apache.commons.lang3;
+
+	requires org.apache.tika.core;
+
+	requires org.apache.wicket.util;
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.extensions;
+
+	requires org.slf4j;
+	requires spring.context;
 
 	requires org.bouncycastle.provider;
-	requires jakarta.activation;
 	requires org.mnode.ical4j.core;
 	requires org.aspectj.tools;
 	requires org.dom4j;
diff --git a/openmeetings-util/src/test/java/module-info.test b/openmeetings-util/src/test/java/module-info.test
index 579e840ad..c064884ae 100644
--- a/openmeetings-util/src/test/java/module-info.test
+++ b/openmeetings-util/src/test/java/module-info.test
@@ -25,19 +25,24 @@ open module org.apache.openmeetings.util {
 	exports org.apache.openmeetings.util.ws;
 	exports org.apache.openmeetings.util.logging;
 
-	requires transitive org.apache.wicket.util;
-	requires transitive org.apache.wicket.core;
-	requires transitive org.apache.wicket.extensions;
-	requires transitive org.apache.commons.lang3;
-	requires transitive com.github.openjson;
-	requires transitive org.slf4j;
-	requires transitive javax.servlet.api;
-	requires transitive org.apache.tika.core;
-	requires transitive spring.context;
-	requires transitive org.apache.commons.codec;
+	requires jakarta.activation;
+	requires jakarta.servlet;
+
+	requires com.github.openjson;
+
+	requires org.apache.commons.codec;
+	requires org.apache.commons.lang3;
+
+	requires org.apache.tika.core;
+
+	requires org.apache.wicket.util;
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.extensions;
+
+	requires org.slf4j;
+	requires spring.context;
 
 	requires org.bouncycastle.provider;
-	requires jakarta.activation;
 	requires org.mnode.ical4j.core;
 	requires org.aspectj.tools;
 	requires org.dom4j;
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 85fcd5966..ee8ad5190 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -494,8 +494,8 @@
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-			<groupId>javax.websocket</groupId>
-			<artifactId>javax.websocket-api</artifactId>
+			<groupId>jakarta.websocket</groupId>
+			<artifactId>jakarta.websocket-client-api</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.tomcat.embed</groupId>
diff --git a/openmeetings-web/src/main/java/module-info.java b/openmeetings-web/src/main/java/module-info.java
index 346ccc2c1..e793d828e 100644
--- a/openmeetings-web/src/main/java/module-info.java
+++ b/openmeetings-web/src/main/java/module-info.java
@@ -18,12 +18,35 @@
  */
 
 module org.apache.openmeetings.web {
+	requires org.apache.openmeetings.core;
+	requires org.apache.openmeetings.db;
 	requires org.apache.openmeetings.install;
 	requires org.apache.openmeetings.mediaserver;
+	requires org.apache.openmeetings.service;
+	requires org.apache.openmeetings.util;
 	requires org.apache.openmeetings.webservice;
 
+	requires com.github.openjson;
+
+	requires totp;
+
+	requires org.apache.commons.io;
+	requires org.apache.commons.fileupload2.core;
+	requires org.apache.commons.fileupload2.jakarta;
+	requires org.apache.commons.lang3;
+
+	requires org.apache.httpcomponents.httpclient;
+
 	requires org.apache.wicket.auth.roles;
+	requires org.apache.wicket.core;
 	requires org.apache.wicket.devutils;
+	requires org.apache.wicket.extensions;
+	requires org.apache.wicket.ioc;
+	requires org.apache.wicket.request;
+	requires org.apache.wicket.spring;
+	requires org.apache.wicket.util;
+	requires org.apache.wicket.websocket.core;
+
 	requires wicketstuff.dashboard.core;
 	requires wicketstuff.datastore.hazelcast;
 	requires wicketstuff.select2;
@@ -39,12 +62,25 @@ module org.apache.openmeetings.web {
 	requires wicket.jquery.ui.core;
 	requires wicket.jquery.ui.plugins;
 
+	requires jakarta.annotation;
+	requires jakarta.inject;
+	requires jakarta.servlet;
+	requires jakarta.websocket.client;
+	requires jakarta.ws.rs;
+
 	requires java.net.http;
+	requires java.management;
 	requires java.sql;
-	requires javax.websocket.api;
+
 	requires com.hazelcast.core;
 	requires org.danekja.jdk.serializable.functional;
+	requires simpleclient.servlet.jakarta;
+	requires xstream;
+
+	requires spring.beans;
+	requires spring.context;
 	requires spring.orm;
-	requires java.management;
-	requires simpleclient.servlet;
+	requires spring.web;
+
+	requires org.slf4j;
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
index e9a5c19bc..0f9dbefb1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
@@ -18,11 +18,11 @@
  */
 package org.apache.openmeetings.web.admin.configurations;
 
+import static org.apache.openmeetings.web.common.BasePanel.EVT_CHANGE;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_FFMPEG;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_IMAGEMAGIC;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_OFFICE;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_SOX;
-import static org.apache.openmeetings.web.common.BasePanel.EVT_CHANGE;
 import static org.apache.wicket.validation.validator.StringValidator.maximumLength;
 
 import java.nio.file.InvalidPathException;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
index 6c313514c..aa53bd37d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openmeetings.web.admin.connection;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
 import static org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelConfirm;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
index a56f17c71..59eab4b9f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
@@ -19,12 +19,12 @@
 package org.apache.openmeetings.web.admin.groups;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.util.OmFileHelper.getGroupLogo;
-import static org.apache.openmeetings.util.OmFileHelper.getGroupLogoDir;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CHANGE;
 import static org.apache.openmeetings.web.util.GroupLogoResourceReference.getUrl;
+import static org.apache.openmeetings.util.OmFileHelper.getGroupLogo;
+import static org.apache.openmeetings.util.OmFileHelper.getGroupLogoDir;
 
 import java.io.File;
 import java.nio.file.Files;
@@ -36,10 +36,10 @@ import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.util.StoredFile;
 import org.apache.openmeetings.web.admin.AdminBaseForm;
 import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
 import org.apache.openmeetings.web.common.UploadableImagePanel;
+import org.apache.openmeetings.util.StoredFile;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
index a72f18f52..53e64fe37 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
@@ -19,9 +19,9 @@
 package org.apache.openmeetings.web.admin.groups;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultGroup;
-import static org.apache.openmeetings.web.app.WebSession.getRights;
 
 import java.util.Iterator;
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
index 93060889d..f3367e400 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
@@ -19,8 +19,8 @@
 package org.apache.openmeetings.web.admin.labels;
 
 import static java.time.Duration.ZERO;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.wicket.request.resource.ContentDisposition.ATTACHMENT;
 
 import java.io.IOException;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index 0eeac1703..f5055cba2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -19,13 +19,13 @@
 package org.apache.openmeetings.web.admin.rooms;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isRecordingsEnabled;
 import static org.apache.openmeetings.web.admin.AdminUserChoiceProvider.PAGE_SIZE;
 import static org.apache.openmeetings.web.app.Application.kickUser;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CHANGE;
 import static org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isRecordingsEnabled;
 import static org.apache.wicket.validation.validator.StringValidator.maximumLength;
 
 import java.util.ArrayList;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
index 1245920ea..2f38131f2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -23,11 +23,11 @@ import static org.apache.openmeetings.db.dao.user.UserDao.getNewUserInstance;
 import static org.apache.openmeetings.db.entity.user.User.DISPLAY_NAME_NA;
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinLoginLength;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isSendRegisterEmail;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isOtpEnabled;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinLoginLength;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isOtpEnabled;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isSendRegisterEmail;
 import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
 import java.util.ArrayList;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
index 820d12a05..94ffd72cd 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
@@ -19,8 +19,8 @@
 package org.apache.openmeetings.web.admin.users;
 
 import static org.apache.openmeetings.db.dao.user.UserDao.getNewUserInstance;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 3a1b8d0ac..9b90e162e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -18,6 +18,9 @@
  */
 package org.apache.openmeetings.web.app;
 
+import static org.apache.openmeetings.web.pages.HashPage.INVITATION_HASH;
+import static org.apache.openmeetings.web.user.rooms.RoomEnterBehavior.getRoomUrlFragment;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_EXT_PROCESS_TTL;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getApplicationName;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
@@ -28,9 +31,6 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.isInitComplete;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setExtProcessTtl;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setInitComplete;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setWicketApplicationName;
-import static org.apache.openmeetings.web.pages.HashPage.INVITATION_HASH;
-import static org.apache.openmeetings.web.user.rooms.RoomEnterBehavior.getRoomUrlFragment;
-import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
 import static org.wicketstuff.dashboard.DashboardContextInitializer.DASHBOARD_CONTEXT_KEY;
 
 import java.io.File;
@@ -44,8 +44,8 @@ import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import javax.annotation.Nonnull;
-import javax.websocket.WebSocketContainer;
+import jakarta.annotation.Nonnull;
+import jakarta.websocket.WebSocketContainer;
 
 import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.core.sip.SipManager;
@@ -71,8 +71,6 @@ import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.ApplicationHelper;
 import org.apache.openmeetings.db.util.ws.RoomMessage;
 import org.apache.openmeetings.db.util.ws.TextRoomMessage;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.OmVersion;
 import org.apache.openmeetings.util.ws.IClusterWsMessage;
 import org.apache.openmeetings.web.admin.backup.BackupUploadResourceReference;
 import org.apache.openmeetings.web.common.PingResourceReference;
@@ -100,6 +98,8 @@ import org.apache.openmeetings.web.user.dashboard.admin.AdminWidgetDescriptor;
 import org.apache.openmeetings.web.user.record.Mp4RecordingResourceReference;
 import org.apache.openmeetings.web.user.record.PngRecordingResourceReference;
 import org.apache.openmeetings.web.util.GroupLogoResourceReference;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.OmVersion;
 import org.apache.openmeetings.web.util.ProfileImageResourceReference;
 import org.apache.openmeetings.web.util.UserDashboardPersister;
 import org.apache.wicket.DefaultPageManagerProvider;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OtpManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OtpManager.java
index c8f1d07c2..620833ce2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OtpManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OtpManager.java
@@ -20,14 +20,13 @@
 package org.apache.openmeetings.web.app;
 
 import static dev.samstevens.totp.util.Utils.getDataUriForImage;
+import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getApplicationName;
 
 import java.net.UnknownHostException;
 
 import jakarta.annotation.PostConstruct;
 
-import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
-
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/UserManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/UserManager.java
index 6b2034e14..a88f8727d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/UserManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/UserManager.java
@@ -22,6 +22,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.UUID.randomUUID;
 import static org.apache.openmeetings.db.dao.user.UserDao.getNewUserInstance;
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
+import static org.apache.openmeetings.web.app.Application.urlForPage;
 import static org.apache.openmeetings.util.OmException.UNKNOWN;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_IGNORE_BAD_SSL;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
@@ -30,7 +31,6 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultLang;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinLoginLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.isAllowRegisterFrontend;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.isSendVerificationEmail;
-import static org.apache.openmeetings.web.app.Application.urlForPage;
 
 import java.io.IOException;
 import java.net.URI;
@@ -69,10 +69,10 @@ import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.manager.IClientManager;
 import org.apache.openmeetings.service.mail.EmailManager;
-import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.util.crypt.CryptProvider;
 import org.apache.openmeetings.util.crypt.ICrypt;
 import org.apache.openmeetings.web.pages.auth.SignInPage;
+import org.apache.openmeetings.util.OmException;
 import org.apache.wicket.IConverterLocator;
 import org.apache.wicket.core.util.lang.PropertyResolver;
 import org.apache.wicket.core.util.lang.PropertyResolverConverter;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
index 434e959da..3ceb92044 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
@@ -20,15 +20,15 @@ package org.apache.openmeetings.web.app;
 
 import static org.apache.openmeetings.db.dao.user.UserDao.getNewUserInstance;
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
+import static org.apache.openmeetings.web.app.Application.getAuthenticationStrategy;
+import static org.apache.openmeetings.web.app.Application.getDashboardContext;
+import static org.apache.openmeetings.web.app.Application.isInvaldSession;
+import static org.apache.openmeetings.web.app.Application.removeInvalidSession;
 import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT_STRING;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultLang;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
-import static org.apache.openmeetings.web.app.Application.getAuthenticationStrategy;
-import static org.apache.openmeetings.web.app.Application.getDashboardContext;
-import static org.apache.openmeetings.web.app.Application.isInvaldSession;
-import static org.apache.openmeetings.web.app.Application.removeInvalidSession;
 
 import java.util.Calendar;
 import java.util.Collections;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
index fff4fb376..cf4d22423 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
@@ -20,8 +20,8 @@ package org.apache.openmeetings.web.app;
 
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_SLIDE;
 import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultLang;
 import static org.apache.openmeetings.web.room.wb.WbWebSocketHelper.sendWbAll;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultLang;
 
 import java.util.List;
 import java.util.Map;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
index 728191b4c..e8a9a4df0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
@@ -19,10 +19,10 @@
 package org.apache.openmeetings.web.common;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isDisplayNameEditable;
 import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isDisplayNameEditable;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java
index f0c3a0b46..80e0dd21c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/InvitationForm.java
@@ -19,11 +19,11 @@
 package org.apache.openmeetings.web.common;
 
 import static java.util.UUID.randomUUID;
-import static org.apache.openmeetings.util.CalendarHelper.getDate;
 import static org.apache.openmeetings.web.app.Application.getInvitationLink;
 import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CHANGE;
+import static org.apache.openmeetings.util.CalendarHelper.getDate;
 import static org.apache.openmeetings.web.util.CalendarWebHelper.getZoneId;
 
 import java.time.LocalDateTime;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index 7e1e88fab..67da86a67 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -20,14 +20,14 @@ package org.apache.openmeetings.web.common;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelConfirm;
 import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
 import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getParam;
 import static org.apache.openmeetings.web.util.OmUrlFragment.CHILD_ID;
 import static org.apache.openmeetings.web.util.OmUrlFragment.getPanel;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
 
 import java.io.IOException;
@@ -43,7 +43,6 @@ import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.PrivateMessage;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.ClientManager;
 import org.apache.openmeetings.web.app.WebSession;
@@ -60,6 +59,7 @@ import org.apache.openmeetings.web.user.rooms.RoomEnterBehavior;
 import org.apache.openmeetings.web.util.ContactsHelper;
 import org.apache.openmeetings.web.util.ExtendedClientProperties;
 import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.web.util.OmUrlFragment.MenuActions;
 import org.apache.openmeetings.web.util.ProfileImageResourceReference;
 import org.apache.wicket.AttributeModifier;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
index 08db1f867..f6f9e76b1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openmeetings.web.common;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.getMaxUploadSize;
 import static org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelConfirm;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getMaxUploadSize;
 
 import java.io.File;
 import java.nio.file.Files;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index c60d25889..f77068bb6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -21,16 +21,16 @@ package org.apache.openmeetings.web.common.tree;
 import static de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal.BUTTON_MARKUP_ID;
 import static java.time.Duration.ZERO;
 import static java.util.UUID.randomUUID;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CLICK;
 import static org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirmCfg;
 import static org.apache.openmeetings.web.pages.BasePage.ALIGN_LEFT;
 import static org.apache.openmeetings.web.pages.BasePage.ALIGN_RIGHT;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
 
 import java.io.File;
 import java.nio.file.Path;
@@ -45,8 +45,8 @@ import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.web.common.NameDialog;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxEventBehavior;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
index e2f055aca..0af461b91 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
@@ -19,9 +19,9 @@
 package org.apache.openmeetings.web.common.tree;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isRecordingsEnabled;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isRecordingsEnabled;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
index 189e7a182..2f54cf985 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openmeetings.web.pages;
 
+import static org.apache.openmeetings.web.app.Application.isInstalled;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getApplicationName;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getGaCode;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.isInitComplete;
-import static org.apache.openmeetings.web.app.Application.isInstalled;
 import static org.apache.wicket.RuntimeConfigurationType.DEVELOPMENT;
 
 import java.util.HashMap;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
index d921aa4fe..e37481dea 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
@@ -19,9 +19,9 @@
 package org.apache.openmeetings.web.pages.auth;
 
 import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.web.app.Application.urlForPage;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getMinLoginLength;
-import static org.apache.openmeetings.web.app.Application.urlForPage;
 
 import java.util.Date;
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
index 223ad9292..962bd8d2d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
@@ -18,12 +18,12 @@
  */
 package org.apache.openmeetings.web.pages.auth;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LDAP_ID;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isOtpEnabled;
 import static org.apache.openmeetings.web.app.Application.getAuthenticationStrategy;
 import static org.apache.openmeetings.web.app.UserManager.showAuth;
 import static org.apache.openmeetings.web.pages.HashPage.APP;
 import static org.apache.openmeetings.web.pages.HashPage.APP_TYPE_NETWORK;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LDAP_ID;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isOtpEnabled;
 
 import java.util.List;
 
@@ -35,14 +35,14 @@ import org.apache.openmeetings.db.entity.server.LdapConfig;
 import org.apache.openmeetings.db.entity.server.OAuthServer;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
-import org.apache.openmeetings.util.OmException;
-import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.OmAuthenticationStrategy;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.OmAjaxClientInfoBehavior;
 import org.apache.openmeetings.web.pages.HashPage;
 import org.apache.openmeetings.web.pages.PrivacyPage;
+import org.apache.openmeetings.util.OmException;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.RestartResponseException;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
index 14644728e..2b74d339f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
@@ -27,13 +27,13 @@ import org.apache.openmeetings.db.dao.server.OAuth2Dao;
 import org.apache.openmeetings.db.entity.server.OAuthServer;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
-import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.UserManager;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.OmModalCloseButton;
 import org.apache.openmeetings.web.pages.BaseInitedPage;
 import org.apache.openmeetings.web.room.IconTextModal;
+import org.apache.openmeetings.util.OmException;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.head.IHeaderResponse;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
index ac6ba1e44..c544135d6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
@@ -19,9 +19,9 @@
 package org.apache.openmeetings.web.pages.install;
 
 import static org.apache.openmeetings.core.converter.BaseConverter.EXEC_EXT;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
 import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
 import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONE_SET;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
 import static org.apache.wicket.validation.validator.RangeValidator.range;
 import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
 import static org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext;
@@ -45,15 +45,15 @@ import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
-import org.apache.openmeetings.util.ConnectionProperties;
-import org.apache.openmeetings.util.ConnectionProperties.DbType;
-import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.process.ProcessHelper;
 import org.apache.openmeetings.util.process.ProcessResult;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ErrorMessagePanel;
 import org.apache.openmeetings.web.common.OmLabel;
+import org.apache.openmeetings.util.ConnectionProperties;
+import org.apache.openmeetings.util.ConnectionProperties.DbType;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.web.util.OmTooltipBehavior;
 import org.apache.openmeetings.web.util.ThreadHelper;
 import org.apache.wicket.Component;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 347dce303..90830cb7a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -22,10 +22,10 @@ import static de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal.BUTT
 import static java.time.Duration.ZERO;
 import static org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_USER_PREFIX;
 import static org.apache.openmeetings.db.entity.calendar.Appointment.allowedStart;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
 import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.room.VideoSettings.VIDEO_SETTINGS_JS;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
 
 import java.io.IOException;
 import java.nio.file.Files;
@@ -53,7 +53,6 @@ import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.db.util.ws.RoomMessage;
 import org.apache.openmeetings.db.util.ws.RoomMessage.Type;
 import org.apache.openmeetings.db.util.ws.TextRoomMessage;
-import org.apache.openmeetings.util.NullStringer;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.ClientManager;
 import org.apache.openmeetings.web.app.QuickPollManager;
@@ -68,6 +67,7 @@ import org.apache.openmeetings.web.room.wb.InterviewWbPanel;
 import org.apache.openmeetings.web.room.wb.WbAction;
 import org.apache.openmeetings.web.room.wb.WbPanel;
 import org.apache.openmeetings.web.util.ExtendedClientProperties;
+import org.apache.openmeetings.util.NullStringer;
 import org.apache.openmeetings.web.util.TouchPunchResourceReference;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
index d9ae8cc85..44d4a06bc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
@@ -19,11 +19,11 @@
 package org.apache.openmeetings.web.room;
 
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_SLIDE;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
 import static org.apache.openmeetings.util.OmFileHelper.MP4_MIME_TYPE;
 import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
 import static org.apache.openmeetings.util.OmFileHelper.getImagesDir;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.io.File;
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
index c7cca66ac..e979cedf3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ActionsSubMenu.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openmeetings.web.room.menu;
 
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.isSipEnabled;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.io.Serializable;
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
index 2dcc1deb7..4569a4aba 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
@@ -18,16 +18,16 @@
  */
 package org.apache.openmeetings.web.room.menu;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.util.GroupLogoResourceReference.getUrl;
 import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_GROUP;
 import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_MY;
 import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_PUBLIC;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 
 import java.util.ArrayList;
 import java.util.Date;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
index 8423d9548..18d69db87 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openmeetings.web.room.sidebar;
 
-import static org.apache.openmeetings.util.OmFileHelper.getHumanSize;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CLICK;
+import static org.apache.openmeetings.util.OmFileHelper.getHumanSize;
 
 import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomUploadForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomUploadForm.java
index 99eb8606e..8039f0427 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomUploadForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomUploadForm.java
@@ -18,11 +18,11 @@
  */
 package org.apache.openmeetings.web.room.sidebar;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_VALUE;
 import static org.apache.openmeetings.web.room.sidebar.RoomFileUploadResourceReference.PARAM_LAST_SELECTED_GROUP;
 import static org.apache.openmeetings.web.room.sidebar.RoomFileUploadResourceReference.PARAM_LAST_SELECTED_ID;
 import static org.apache.openmeetings.web.room.sidebar.RoomFileUploadResourceReference.PARAM_LAST_SELECTED_OWNER;
 import static org.apache.openmeetings.web.room.sidebar.RoomFileUploadResourceReference.PARAM_LAST_SELECTED_ROOM;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_VALUE;
 
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.web.common.upload.UploadForm;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
index adeb3cb03..be6765205 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
@@ -28,10 +28,10 @@ import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_TYPE;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_WIDTH;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_ZOOM;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ITEMS_KEY;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_STATUS;
 import static org.apache.openmeetings.web.room.wb.WbWebSocketHelper.getObjWbJson;
 import static org.apache.openmeetings.web.room.wb.WbWebSocketHelper.getWbJson;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_STATUS;
 import static org.apache.wicket.AttributeModifier.append;
 
 import java.io.BufferedReader;
@@ -58,19 +58,17 @@ import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.Right;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
-import org.apache.openmeetings.util.NullStringer;
-import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.web.app.WhiteboardManager;
 import org.apache.openmeetings.web.common.NameDialog;
 import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.openmeetings.util.NullStringer;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
 
 import org.apache.wicket.util.string.Strings;
 import org.danekja.java.util.function.serializable.SerializableBiConsumer;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
index 45a46696b..ecb0a2719 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
@@ -28,12 +28,12 @@ import java.util.function.Predicate;
 
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
-import org.apache.openmeetings.util.NullStringer;
 import org.apache.openmeetings.util.ws.IClusterWsMessage;
 import org.apache.openmeetings.web.room.RoomPreviewResourceReference;
 import org.apache.openmeetings.web.room.RoomResourceReference;
 import org.apache.openmeetings.web.user.record.Mp4RecordingResourceReference;
 import org.apache.openmeetings.web.user.record.PngRecordingResourceReference;
+import org.apache.openmeetings.util.NullStringer;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WsMessageWb.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WsMessageWb.java
index 6c8018ef4..6d226d2f3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WsMessageWb.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WsMessageWb.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openmeetings.web.room.wb;
 
-import org.apache.openmeetings.util.NullStringer;
 import org.apache.openmeetings.util.ws.IClusterWsMessage;
+import org.apache.openmeetings.util.NullStringer;
 
 import com.github.openjson.JSONObject;
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WsMessageWbFile.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WsMessageWbFile.java
index b3c7212c6..2051f4897 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WsMessageWbFile.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WsMessageWbFile.java
@@ -19,8 +19,8 @@
 package org.apache.openmeetings.web.room.wb;
 
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
-import org.apache.openmeetings.util.NullStringer;
 import org.apache.openmeetings.util.ws.IClusterWsMessage;
+import org.apache.openmeetings.util.NullStringer;
 
 import com.github.openjson.JSONObject;
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java
index 28548cd28..2ad932c50 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/AboutDialog.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openmeetings.web.user;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.getApplicationName;
 import static org.apache.openmeetings.util.OmVersion.getBuildDate;
 import static org.apache.openmeetings.util.OmVersion.getRevision;
 import static org.apache.openmeetings.util.OmVersion.getVersion;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.getApplicationName;
 
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.ResourceModel;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
index 750fc5a0f..65a4c946f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
@@ -20,12 +20,12 @@ package org.apache.openmeetings.web.user;
 
 import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
 import static org.apache.openmeetings.db.entity.user.PrivateMessage.SENT_FOLDER_ID;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 import static org.apache.openmeetings.web.app.Application.getContactsLink;
 import static org.apache.openmeetings.web.app.Application.getInvitationLink;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CLICK;
 import static org.apache.openmeetings.web.util.CalendarWebHelper.getZoneId;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 
 import java.time.LocalDateTime;
 import java.time.ZonedDateTime;
@@ -49,12 +49,12 @@ import org.apache.openmeetings.db.entity.user.PrivateMessage;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.manager.IInvitationManager;
-import org.apache.openmeetings.util.CalendarHelper;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.OmModalCloseButton;
 import org.apache.openmeetings.web.common.datetime.OmDateTimePicker;
 import org.apache.openmeetings.web.user.calendar.AppointmentDialog;
+import org.apache.openmeetings.util.CalendarHelper;
 import org.apache.openmeetings.web.util.CalendarWebHelper;
 import org.apache.openmeetings.web.util.RoomTypeDropDown;
 import org.apache.openmeetings.web.util.UserMultiChoice;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
index 4403bd667..e2f28d16b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -18,13 +18,13 @@
  */
 package org.apache.openmeetings.web.user.calendar;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CHANGE;
 import static org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
 import static org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
index ef3882a4b..f6d526043 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
@@ -20,11 +20,11 @@ package org.apache.openmeetings.web.user.chat;
 
 import static org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_ALL;
 import static org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_ROOM_PREFIX;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_CHAT;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isChatSendOnEnter;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.room.RoomPanel.isModerator;
 import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_CHAT;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isChatSendOnEnter;
 import static org.apache.openmeetings.web.util.ProfileImageResourceReference.getUrl;
 import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
 
@@ -55,7 +55,6 @@ import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.head.PriorityHeaderItem;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
index b5fd1e2fa..19f337f5a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
@@ -23,10 +23,10 @@ import static org.apache.openmeetings.cli.CleanupHelper.getFileUnit;
 import static org.apache.openmeetings.cli.CleanupHelper.getImportUnit;
 import static org.apache.openmeetings.cli.CleanupHelper.getProfileUnit;
 import static org.apache.openmeetings.cli.CleanupHelper.getRecUnit;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 import static org.apache.openmeetings.util.OmFileHelper.getHumanSize;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsDir;
 import static org.apache.openmeetings.util.OmFileHelper.getUploadDir;
-import static org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import org.apache.openmeetings.cli.CleanupEntityUnit;
 import org.apache.openmeetings.cli.CleanupUnit;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.java
index 76bcd1bd0..9f599f1f2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.java
@@ -19,9 +19,9 @@
 package org.apache.openmeetings.web.user.profile;
 
 import static org.apache.openmeetings.db.util.FormatHelper.formatUser;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 
 import java.util.Iterator;
 import java.util.Set;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
index a231adbc9..a44951231 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
@@ -21,11 +21,11 @@ package org.apache.openmeetings.web.user.profile;
 import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
 import static org.apache.openmeetings.db.entity.user.PrivateMessage.SENT_FOLDER_ID;
 import static org.apache.openmeetings.db.entity.user.PrivateMessage.TRASH_FOLDER_ID;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_VALUE;
 import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_VALUE;
 
 import java.util.ArrayList;
 import java.util.HashSet;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
index 6d20f4441..1621178f7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
@@ -19,8 +19,8 @@
 package org.apache.openmeetings.web.user.profile;
 
 import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 
 import java.util.Collections;
 import java.util.Iterator;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
index 2c7160cd8..8e1322281 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
@@ -19,11 +19,11 @@
 package org.apache.openmeetings.web.user.profile;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS;
 import static org.apache.openmeetings.web.app.Application.getDashboardContext;
 import static org.apache.openmeetings.web.app.WebSession.getDashboard;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
index a98a39521..0811a5090 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openmeetings.web.user.record;
 
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.util.OmFileHelper.getHumanSize;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingChunk;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.util.List;
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java
index 0507b73eb..fdab17da1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openmeetings.web.user.rooms;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CLICK;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
 
 import java.io.Serializable;
 import java.util.List;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
index cee177c5c..6e6275bd4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java
@@ -27,9 +27,9 @@ import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.web.app.ClientManager;
 import org.apache.openmeetings.web.common.UserPanel;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
index f27116fed..db2d18565 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
@@ -18,11 +18,11 @@
  */
 package org.apache.openmeetings.web.user.rooms;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.util.OmUrlFragment.TYPE_GROUP;
 import static org.apache.openmeetings.web.util.OmUrlFragment.TYPE_MY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.web.app.Application;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java
index 6cdee3776..4dd72328d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/GroupLogoResourceReference.java
@@ -19,10 +19,10 @@
 package org.apache.openmeetings.web.util;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
-import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
-import static org.apache.openmeetings.util.OmFileHelper.getGroupLogo;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
+import static org.apache.openmeetings.util.OmFileHelper.getGroupLogo;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
index 8b3f45b69..34397c17e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java
@@ -20,8 +20,8 @@ package org.apache.openmeetings.web.util;
 
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.wicket.injection.Injector;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -35,14 +35,15 @@ import org.slf4j.LoggerFactory;
 
 import jakarta.inject.Inject;
 import jakarta.servlet.http.HttpServletResponse;
+
+import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
+import static org.apache.openmeetings.util.OmFileHelper.SIP_USER_ID;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.net.URI;
 
-import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
-import static org.apache.openmeetings.util.OmFileHelper.SIP_USER_ID;
-
 public class ProfileImageResourceReference extends ResourceReference {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(ProfileImageResourceReference.class);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
index 5b468ede9..71274b924 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
@@ -19,8 +19,8 @@
 package org.apache.openmeetings.web.util;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.openmeetings.util.OmFileHelper.getUserDashboard;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.util.OmFileHelper.getUserDashboard;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/openmeetings-web/src/main/java/module-info.java b/openmeetings-web/src/test/java/module-info.test
similarity index 59%
copy from openmeetings-web/src/main/java/module-info.java
copy to openmeetings-web/src/test/java/module-info.test
index 346ccc2c1..2873bcb6b 100644
--- a/openmeetings-web/src/main/java/module-info.java
+++ b/openmeetings-web/src/test/java/module-info.test
@@ -18,12 +18,38 @@
  */
 
 module org.apache.openmeetings.web {
+	// This one should be in-sync with module-info.java
+	requires org.apache.openmeetings.core;
+	requires org.apache.openmeetings.db;
 	requires org.apache.openmeetings.install;
 	requires org.apache.openmeetings.mediaserver;
+	requires org.apache.openmeetings.service;
+	requires org.apache.openmeetings.util;
 	requires org.apache.openmeetings.webservice;
 
+	requires com.github.openjson;
+
+	requires totp;
+
+	requires org.apache.commons.io;
+	requires org.apache.commons.fileupload2.core;
+	requires org.apache.commons.fileupload2.jakarta;
+	requires org.apache.commons.lang3;
+
+	requires org.apache.openjpa;
+
+	requires org.apache.httpcomponents.httpclient;
+
 	requires org.apache.wicket.auth.roles;
+	requires org.apache.wicket.core;
 	requires org.apache.wicket.devutils;
+	requires org.apache.wicket.extensions;
+	requires org.apache.wicket.ioc;
+	requires org.apache.wicket.request;
+	requires org.apache.wicket.spring;
+	requires org.apache.wicket.util;
+	requires org.apache.wicket.websocket.core;
+
 	requires wicketstuff.dashboard.core;
 	requires wicketstuff.datastore.hazelcast;
 	requires wicketstuff.select2;
@@ -39,12 +65,29 @@ module org.apache.openmeetings.web {
 	requires wicket.jquery.ui.core;
 	requires wicket.jquery.ui.plugins;
 
+	requires jakarta.annotation;
+	requires jakarta.inject;
+	requires jakarta.servlet;
+	requires jakarta.websocket.client;
+	requires jakarta.ws.rs;
+
 	requires java.net.http;
+	requires java.management;
 	requires java.sql;
-	requires javax.websocket.api;
+
 	requires com.hazelcast.core;
 	requires org.danekja.jdk.serializable.functional;
+	requires simpleclient.servlet.jakarta;
+	requires xstream;
+
+	requires spring.beans;
+	requires spring.context;
 	requires spring.orm;
-	requires java.management;
-	requires simpleclient.servlet;
+	requires spring.web;
+
+	requires org.slf4j;
+
+	//tests
+	requires org.junit.jupiter.engine;
+	requires org.junit.jupiter.api;
 }
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentAddAppointment.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentAddAppointment.java
index 796085cab..cd639d3ad 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentAddAppointment.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentAddAppointment.java
@@ -29,7 +29,7 @@ import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentSchedulerTask.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentSchedulerTask.java
index ec8ad9b45..565b2280b 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentSchedulerTask.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestAppointmentSchedulerTask.java
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.getBaseUrl;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setBaseUrl;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.apache.openmeetings.service.calendar.AppointmentLogic;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestDatabaseStructureAppointment.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestDatabaseStructureAppointment.java
index 85a615328..ed6cc6df2 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestDatabaseStructureAppointment.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestDatabaseStructureAppointment.java
@@ -26,7 +26,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.TimeZone;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.util.CalendarHelper;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestDatabaseStructureGetAppointmentByRange.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestDatabaseStructureGetAppointmentByRange.java
index 33f9a5766..28c5dc22a 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestDatabaseStructureGetAppointmentByRange.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestDatabaseStructureGetAppointmentByRange.java
@@ -23,7 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import java.util.ArrayList;
 import java.util.Calendar;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
index 33acec44b..aff1d1af6 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestGetAppointment.java
@@ -24,7 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 import java.util.Calendar;
 import java.util.Date;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestOmCalendar.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestOmCalendar.java
index 99b11c02c..2d1ca639e 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestOmCalendar.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestOmCalendar.java
@@ -21,7 +21,7 @@ package org.apache.openmeetings.calendar;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.calendar.OmCalendarDao;
 import org.apache.openmeetings.db.entity.calendar.OmCalendar;
 import org.apache.openmeetings.db.entity.user.User;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
index eecb2f388..7b402f609 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
@@ -27,7 +27,7 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.TimeZone;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.core.mail.MailHandler;
 import org.apache.openmeetings.util.mail.ByteArrayDataSource;
 import org.apache.openmeetings.util.mail.IcalHandler;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/config/TestConfig.java b/openmeetings-web/src/test/java/org/apache/openmeetings/config/TestConfig.java
index 56bce75c9..67711e434 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/config/TestConfig.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/config/TestConfig.java
@@ -24,7 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 
 import java.util.List;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java b/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java
index f68796405..b25ee254c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/core/file/TestFileProcessor.java
@@ -28,7 +28,7 @@ import java.io.FileInputStream;
 import java.io.InputStream;
 import java.util.Optional;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.core.data.file.FileProcessor;
 import org.apache.openmeetings.db.dto.file.FileItemDTO;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestAddGroup.java b/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestAddGroup.java
index 18bc5c023..a0498ade7 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestAddGroup.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestAddGroup.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.domain;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestUserGroupAggregation.java b/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestUserGroupAggregation.java
index 3aec7e8ad..c15b7cad1 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestUserGroupAggregation.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/domain/TestUserGroupAggregation.java
@@ -21,7 +21,7 @@ package org.apache.openmeetings.domain;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java b/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java
index 8c7803447..3c6732038 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java
@@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 import java.time.LocalDateTime;
 import java.util.Date;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/ldap/TestLdap.java b/openmeetings-web/src/test/java/org/apache/openmeetings/ldap/TestLdap.java
index 1f853c5fd..a48b09428 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/ldap/TestLdap.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/ldap/TestLdap.java
@@ -52,13 +52,13 @@ import org.apache.directory.server.core.annotations.ApplyLdifFiles;
 import org.apache.directory.server.core.annotations.CreateDS;
 import org.apache.directory.server.core.annotations.CreatePartition;
 import org.apache.directory.server.protocol.shared.transport.Transport;
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.core.ldap.LdapLoginManager;
 import org.apache.openmeetings.db.dao.server.LdapConfigDao;
 import org.apache.openmeetings.db.entity.server.LdapConfig;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.util.OmException;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/smoke/TestSmokeBasic.java b/openmeetings-web/src/test/java/org/apache/openmeetings/smoke/TestSmokeBasic.java
index 073daec9d..462daf3c6 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/smoke/TestSmokeBasic.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/smoke/TestSmokeBasic.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.smoke;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.junit.jupiter.api.Test;
 
 class TestSmokeBasic extends AbstractOmServerTest {
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserContact.java b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserContact.java
index 28316994b..29274a63a 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserContact.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserContact.java
@@ -19,9 +19,9 @@
 package org.apache.openmeetings.user;
 
 import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.isSipEnabled;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setSipEnabled;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
@@ -29,7 +29,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Test;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserCount.java b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserCount.java
index 73957e21c..2a3b5a4e9 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserCount.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserCount.java
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java
index 8a8cc6bf4..b99704520 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/user/TestUserGroup.java
@@ -30,7 +30,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.GroupUser;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestAuth.java b/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestAuth.java
index 749d49c6c..2b6716163 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestAuth.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestAuth.java
@@ -22,7 +22,7 @@ import static java.util.UUID.randomUUID;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestLogin.java b/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestLogin.java
index 5b905b546..3a080f80a 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestLogin.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/userdata/TestLogin.java
@@ -23,7 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.util.Locale;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.util.OmException;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractOmServerTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/AbstractOmServerTest.java
similarity index 99%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/AbstractOmServerTest.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/AbstractOmServerTest.java
index 9c471535e..fbe47be24 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractOmServerTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/AbstractOmServerTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings;
+package org.apache.openmeetings.web;
 
 import static java.util.UUID.randomUUID;
 import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
@@ -41,8 +41,8 @@ import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
-import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.tomcat.util.scan.Constants;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTesterTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/AbstractWicketTesterTest.java
similarity index 99%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTesterTest.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/AbstractWicketTesterTest.java
index 3f2da25c9..1338fb00d 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/AbstractWicketTesterTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/AbstractWicketTesterTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings;
+package org.apache.openmeetings.web;
 
 import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static org.apache.openmeetings.web.common.OmWebSocketPanel.CONNECTED_MSG;
@@ -33,10 +33,10 @@ import java.util.function.Consumer;
 
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
-import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.util.OmException;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.apache.wicket.feedback.ExactLevelFeedbackMessageFilter;
 import org.apache.wicket.feedback.FeedbackMessage;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/IsolatedTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/IsolatedTest.java
similarity index 96%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/IsolatedTest.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/IsolatedTest.java
index 85a526a8e..01cd846e0 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/IsolatedTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/IsolatedTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings;
+package org.apache.openmeetings.web;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/RegularTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/RegularTest.java
similarity index 96%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/RegularTest.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/RegularTest.java
index 73a8e948e..3766a307c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/RegularTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/RegularTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings;
+package org.apache.openmeetings.web;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
index 31d8026d3..aa41ad9c2 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
@@ -25,11 +25,11 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 import java.time.LocalDateTime;
 import java.util.List;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.web.user.calendar.CalendarPanel;
+import org.apache.openmeetings.util.OmException;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.apache.wicket.util.tester.FormTester;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestMainAreas.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestMainAreas.java
index 09855380c..0f189264e 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestMainAreas.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestMainAreas.java
@@ -40,8 +40,7 @@ import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.function.Consumer;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
-import org.apache.openmeetings.util.OmException;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.web.admin.backup.BackupPanel;
 import org.apache.openmeetings.web.admin.configurations.ConfigsPanel;
 import org.apache.openmeetings.web.admin.connection.ConnectionsPanel;
@@ -66,6 +65,7 @@ import org.apache.openmeetings.web.user.profile.EditProfilePanel;
 import org.apache.openmeetings.web.user.profile.MessagesContactsPanel;
 import org.apache.openmeetings.web.user.record.RecordingsPanel;
 import org.apache.openmeetings.web.user.rooms.RoomsSelectorPanel;
+import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.web.util.OmUrlFragment.AreaKeys;
 import org.apache.wicket.authorization.UnauthorizedInstantiationException;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestMainMenu.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestMainMenu.java
index eb9cf4ebc..bd2be7d93 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestMainMenu.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestMainMenu.java
@@ -20,8 +20,7 @@ package org.apache.openmeetings.web;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
-import org.apache.openmeetings.util.OmException;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.web.admin.backup.BackupPanel;
 import org.apache.openmeetings.web.admin.configurations.ConfigsPanel;
 import org.apache.openmeetings.web.admin.connection.ConnectionsPanel;
@@ -42,6 +41,7 @@ import org.apache.openmeetings.web.user.profile.UserSearchPanel;
 import org.apache.openmeetings.web.user.profile.WidgetsPanel;
 import org.apache.openmeetings.web.user.record.RecordingsPanel;
 import org.apache.openmeetings.web.user.rooms.RoomsSelectorPanel;
+import org.apache.openmeetings.util.OmException;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.junit.jupiter.api.Test;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestApplication.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestApplication.java
index 23c477889..fe62bd0eb 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestApplication.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestApplication.java
@@ -28,7 +28,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map.Entry;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.junit.jupiter.api.Test;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestApplicationMocked.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestApplicationMocked.java
index c3c487caf..6b3de9c23 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestApplicationMocked.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestApplicationMocked.java
@@ -21,7 +21,7 @@ package org.apache.openmeetings.web.app;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
-import org.apache.openmeetings.RegularTest;
+import org.apache.openmeetings.web.RegularTest;
 import org.apache.wicket.request.Url;
 import org.junit.jupiter.api.Test;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java
index 66929f191..de3565101 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java
@@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 
 import jakarta.servlet.http.Cookie;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Test;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestUserManagerMocked.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestUserManagerMocked.java
index 6ac16bc39..a08977497 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestUserManagerMocked.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestUserManagerMocked.java
@@ -36,7 +36,7 @@ import java.io.IOException;
 import java.net.http.HttpRequest;
 import java.security.NoSuchAlgorithmException;
 
-import org.apache.openmeetings.RegularTest;
+import org.apache.openmeetings.web.RegularTest;
 import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.server.OAuthServer;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestWebSession.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestWebSession.java
index 0c1ab7b0c..24f5af187 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestWebSession.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestWebSession.java
@@ -22,7 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.util.OmException;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/AbstractTestImport.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/AbstractTestImport.java
similarity index 93%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/backup/AbstractTestImport.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/AbstractTestImport.java
index 0b3b076f6..9b23cb45b 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/AbstractTestImport.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/AbstractTestImport.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.backup;
+package org.apache.openmeetings.web.backup;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CRYPT;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_FFMPEG;
@@ -26,8 +26,9 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_SOX
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getCryptClassName;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.backup.BackupImport;
 import org.apache.openmeetings.db.entity.basic.Configuration;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestExport.java
similarity index 95%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestExport.java
index 877c26431..8513ecb8c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestExport.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.backup;
+package org.apache.openmeetings.web.backup;
 
 import static java.util.UUID.randomUUID;
 import static org.apache.openmeetings.db.bind.Constants.FILE_LIST_NODE;
@@ -34,7 +34,8 @@ import jakarta.inject.Inject;
 import jakarta.xml.bind.JAXBContext;
 import jakarta.xml.bind.Marshaller;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
+import org.apache.openmeetings.backup.BackupExport;
 import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.file.FileItem;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImport.java
similarity index 97%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImport.java
index b5b125884..6ffc85f12 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImport.java
@@ -16,13 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.backup;
+package org.apache.openmeetings.web.backup;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LDAP_ID;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.File;
 
+import org.apache.openmeetings.backup.BackupImport;
+import org.apache.openmeetings.backup.BackupVersion;
 import org.apache.openmeetings.db.dao.basic.ChatDao;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.room.ExtraMenuDao;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportCalendar.java
similarity index 95%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportCalendar.java
index 8c8f36167..6fa6bfd07 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportCalendar.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportCalendar.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.backup;
+package org.apache.openmeetings.web.backup;
 
-import static org.apache.openmeetings.backup.TestImport.BACKUP_ROOT;
+import static org.apache.openmeetings.web.backup.TestImport.BACKUP_ROOT;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.File;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportConfig.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportConfig.java
similarity index 96%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportConfig.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportConfig.java
index cedb67562..2f35410fb 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportConfig.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportConfig.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.backup;
+package org.apache.openmeetings.web.backup;
 
-import static org.apache.openmeetings.backup.TestImport.BACKUP_ROOT;
+import static org.apache.openmeetings.web.backup.TestImport.BACKUP_ROOT;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_FRONTEND;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_OAUTH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_SOAP;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportOld.java
similarity index 97%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportOld.java
index a8a4d4363..3f4921000 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportOld.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportOld.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.backup;
+package org.apache.openmeetings.web.backup;
 
-import static org.apache.openmeetings.backup.TestImport.BACKUP_ROOT;
+import static org.apache.openmeetings.web.backup.TestImport.BACKUP_ROOT;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportRoom.java
similarity index 94%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportRoom.java
index 60006b7e4..abe80b614 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportRoom.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportRoom.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.backup;
+package org.apache.openmeetings.web.backup;
 
-import static org.apache.openmeetings.backup.TestImport.BACKUP_ROOT;
+import static org.apache.openmeetings.web.backup.TestImport.BACKUP_ROOT;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportUser.java
similarity index 95%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportUser.java
index 8b0270700..568e1c966 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImportUser.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/backup/TestImportUser.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.backup;
+package org.apache.openmeetings.web.backup;
 
-import static org.apache.openmeetings.backup.TestImport.BACKUP_ROOT;
+import static org.apache.openmeetings.web.backup.TestImport.BACKUP_ROOT;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
@@ -28,6 +28,7 @@ import java.util.List;
 import org.apache.openmeetings.db.dao.server.LdapConfigDao;
 import org.apache.openmeetings.db.entity.server.LdapConfig;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.backup.BackupException;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/cli/TestAdmin.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/cli/TestAdmin.java
similarity index 89%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/cli/TestAdmin.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/cli/TestAdmin.java
index c7ddeefe4..5e6acdd85 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/cli/TestAdmin.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/cli/TestAdmin.java
@@ -16,23 +16,23 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.cli;
+package org.apache.openmeetings.web.cli;
 
 import static org.apache.commons.io.FileUtils.deleteQuietly;
-import static org.apache.openmeetings.AbstractOmServerTest.adminUsername;
-import static org.apache.openmeetings.AbstractOmServerTest.email;
-import static org.apache.openmeetings.AbstractOmServerTest.group;
-import static org.apache.openmeetings.AbstractOmServerTest.setOmHome;
-import static org.apache.openmeetings.AbstractOmServerTest.userpass;
+import static org.apache.openmeetings.web.AbstractOmServerTest.adminUsername;
+import static org.apache.openmeetings.web.AbstractOmServerTest.email;
+import static org.apache.openmeetings.web.AbstractOmServerTest.group;
+import static org.apache.openmeetings.web.AbstractOmServerTest.setOmHome;
+import static org.apache.openmeetings.web.AbstractOmServerTest.userpass;
 import static org.apache.openmeetings.cli.Admin.OM_HOME;
 import static org.apache.openmeetings.db.util.ApplicationHelper.destroyApplication;
+import static org.apache.openmeetings.web.pages.install.TestInstall.resetH2Home;
+import static org.apache.openmeetings.web.pages.install.TestInstall.setH2Home;
 import static org.apache.openmeetings.util.OmFileHelper.getOmHome;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_CONTEXT_NAME;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.getWicketApplicationName;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setInitComplete;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setWicketApplicationName;
-import static org.apache.openmeetings.web.pages.install.TestInstall.resetH2Home;
-import static org.apache.openmeetings.web.pages.install.TestInstall.setH2Home;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
@@ -42,7 +42,9 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
-import org.apache.openmeetings.IsolatedTest;
+import org.apache.openmeetings.cli.Admin;
+import org.apache.openmeetings.cli.ExitException;
+import org.apache.openmeetings.web.IsolatedTest;
 import org.apache.wicket.Application;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.junit.jupiter.api.AfterEach;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/cli/TestPatcher.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/cli/TestPatcher.java
similarity index 91%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/cli/TestPatcher.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/cli/TestPatcher.java
index 194572cb3..d2f67459d 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/cli/TestPatcher.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/cli/TestPatcher.java
@@ -16,19 +16,20 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.cli;
+package org.apache.openmeetings.web.cli;
 
-import static org.apache.openmeetings.AbstractOmServerTest.setOmHome;
+import static org.apache.openmeetings.web.AbstractOmServerTest.setOmHome;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.IOException;
 import java.util.TimeZone;
 
 import org.apache.openjpa.lib.util.Files;
-import org.apache.openmeetings.IsolatedTest;
+import org.apache.openmeetings.cli.ConnectionPropertiesPatcher;
+import org.apache.openmeetings.web.IsolatedTest;
 import org.apache.openmeetings.util.ConnectionProperties;
-import org.apache.openmeetings.util.ConnectionProperties.DbType;
 import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.ConnectionProperties.DbType;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestFileDao.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/db/dao/TestFileDao.java
similarity index 95%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestFileDao.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/db/dao/TestFileDao.java
index db8d0fb45..2edb021fb 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestFileDao.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/db/dao/TestFileDao.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.db.dao;
+package org.apache.openmeetings.web.db.dao;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.util.List;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestMessageDao.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/db/dao/TestMessageDao.java
similarity index 94%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestMessageDao.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/db/dao/TestMessageDao.java
index 6b8f5198b..e2f54827e 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestMessageDao.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/db/dao/TestMessageDao.java
@@ -16,13 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.db.dao;
+package org.apache.openmeetings.web.db.dao;
 
 import static org.junit.Assert.assertFalse;
 
 import java.util.List;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
 import org.apache.openmeetings.db.entity.user.PrivateMessageFolder;
 import org.apache.openmeetings.db.entity.user.User;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/db/dao/TestRoomDao.java
similarity index 96%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/db/dao/TestRoomDao.java
index ee24c2ec4..72eaa5ff3 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/db/dao/TestRoomDao.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/db/dao/TestRoomDao.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.db.dao;
+package org.apache.openmeetings.web.db.dao;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -26,7 +26,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
index c1e09c739..c7be79a20 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
@@ -30,7 +30,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import java.util.Date;
 import java.util.UUID;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/auth/TestLoginUI.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/auth/TestLoginUI.java
index 7d943b116..9bccde6c8 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/auth/TestLoginUI.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/auth/TestLoginUI.java
@@ -32,7 +32,7 @@ import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Locale;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.WebSession;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java
index a2f5d4155..1dc7dddf5 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java
@@ -19,14 +19,14 @@
 package org.apache.openmeetings.web.pages.install;
 
 import static org.apache.commons.io.FileUtils.deleteQuietly;
-import static org.apache.openmeetings.AbstractOmServerTest.adminUsername;
-import static org.apache.openmeetings.AbstractOmServerTest.email;
-import static org.apache.openmeetings.AbstractOmServerTest.group;
-import static org.apache.openmeetings.AbstractOmServerTest.setOmHome;
-import static org.apache.openmeetings.AbstractOmServerTest.userpass;
-import static org.apache.openmeetings.AbstractWicketTesterTest.checkErrors;
-import static org.apache.openmeetings.AbstractWicketTesterTest.countErrors;
-import static org.apache.openmeetings.AbstractWicketTesterTest.getWicketTester;
+import static org.apache.openmeetings.web.AbstractOmServerTest.adminUsername;
+import static org.apache.openmeetings.web.AbstractOmServerTest.email;
+import static org.apache.openmeetings.web.AbstractOmServerTest.group;
+import static org.apache.openmeetings.web.AbstractOmServerTest.setOmHome;
+import static org.apache.openmeetings.web.AbstractOmServerTest.userpass;
+import static org.apache.openmeetings.web.AbstractWicketTesterTest.checkErrors;
+import static org.apache.openmeetings.web.AbstractWicketTesterTest.countErrors;
+import static org.apache.openmeetings.web.AbstractWicketTesterTest.getWicketTester;
 import static org.apache.openmeetings.cli.ConnectionPropertiesPatcher.DEFAULT_DB_NAME;
 import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_APP_NAME;
@@ -42,13 +42,13 @@ import java.util.Locale;
 import java.util.Random;
 import java.util.TimeZone;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
-import org.apache.openmeetings.IsolatedTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.IsolatedTest;
 import org.apache.openmeetings.cli.ConnectionPropertiesPatcher;
-import org.apache.openmeetings.util.ConnectionProperties.DbType;
 import org.apache.openmeetings.util.crypt.SCryptImplementation;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.util.ConnectionProperties.DbType;
 import org.apache.wicket.ajax.AjaxClientInfoBehavior;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.apache.wicket.extensions.wizard.WizardButton;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/service/mail/template/TestEmailTemplate.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/service/mail/template/TestEmailTemplate.java
similarity index 80%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/service/mail/template/TestEmailTemplate.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/service/mail/template/TestEmailTemplate.java
index 1476a8ba5..591176318 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/service/mail/template/TestEmailTemplate.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/service/mail/template/TestEmailTemplate.java
@@ -16,14 +16,20 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.service.mail.template;
+package org.apache.openmeetings.web.service.mail.template;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.UserContact;
 import org.apache.wicket.util.string.Strings;
+import org.apache.openmeetings.service.mail.template.InvitationTemplate;
+import org.apache.openmeetings.service.mail.template.FeedbackTemplate;
+import org.apache.openmeetings.service.mail.template.RegisterUserTemplate;
+import org.apache.openmeetings.service.mail.template.RequestContactConfirmTemplate;
+import org.apache.openmeetings.service.mail.template.RequestContactTemplate;
+import org.apache.openmeetings.service.mail.template.ResetPasswordTemplate;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/service/mail/template/subject/TestSubjTemplate.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/service/mail/template/subject/TestSubjTemplate.java
similarity index 80%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/service/mail/template/subject/TestSubjTemplate.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/service/mail/template/subject/TestSubjTemplate.java
index e7ed63470..2bfb744fc 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/service/mail/template/subject/TestSubjTemplate.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/service/mail/template/subject/TestSubjTemplate.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.service.mail.template.subject;
+package org.apache.openmeetings.web.service.mail.template.subject;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -29,11 +29,19 @@ import java.util.Locale;
 import java.util.TimeZone;
 import java.util.function.Consumer;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.service.mail.template.subject.SubjectEmailTemplate;
+import org.apache.openmeetings.service.mail.template.subject.CreatedAppointmentTemplate;
+import org.apache.openmeetings.service.mail.template.subject.CanceledAppointmentTemplate;
+import org.apache.openmeetings.service.mail.template.subject.UpdatedAppointmentTemplate;
+import org.apache.openmeetings.service.mail.template.subject.AppointmentReminderTemplate;
+import org.apache.openmeetings.service.mail.template.subject.RecordingExpiringTemplate;
+import org.apache.openmeetings.service.mail.template.subject.NewGroupUsersNotificationTemplate;
+import org.apache.openmeetings.service.mail.template.subject.InvitedAppointmentTemplate;
 import org.apache.wicket.util.string.Strings;
 import org.junit.jupiter.api.Test;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/service/scheduler/TestJob.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/service/scheduler/TestJob.java
similarity index 95%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/service/scheduler/TestJob.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/service/scheduler/TestJob.java
index 626c00d2e..8acbe8d21 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/service/scheduler/TestJob.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/service/scheduler/TestJob.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.service.scheduler;
+package org.apache.openmeetings.web.service.scheduler;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.setInitComplete;
@@ -32,12 +32,14 @@ import java.time.ZoneId;
 import java.util.Date;
 import java.util.List;
 
-import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.web.AbstractWicketTesterTest;
 import org.apache.openmeetings.core.mail.MailHandler;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.service.scheduler.CleanupJob;
+import org.apache.openmeetings.service.scheduler.ReminderJob;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/util/TestDateTime.java
similarity index 97%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/util/TestDateTime.java
index 397d06cd5..12c619f77 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/util/TestDateTime.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.util;
+package org.apache.openmeetings.web.util;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -29,7 +29,7 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.Locale;
 
-import org.apache.openmeetings.RegularTest;
+import org.apache.openmeetings.web.RegularTest;
 import org.apache.openmeetings.web.common.datetime.AbstractOmDateTimePicker;
 import org.junit.jupiter.api.Test;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestStoredFile.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/util/TestStoredFile.java
similarity index 91%
rename from openmeetings-web/src/test/java/org/apache/openmeetings/util/TestStoredFile.java
rename to openmeetings-web/src/test/java/org/apache/openmeetings/web/util/TestStoredFile.java
index 4529a418f..f91ee9dc3 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestStoredFile.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/util/TestStoredFile.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.util;
+package org.apache.openmeetings.web.util;
 
 import static org.apache.openmeetings.util.OmFileHelper.getDefaultProfilePicture;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -25,7 +25,8 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
+import org.apache.openmeetings.util.StoredFile;
 import org.junit.jupiter.api.Test;
 
 class TestStoredFile extends AbstractOmServerTest {
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
index 3e40e1a2a..a05a69f92 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/AbstractWebServiceTest.java
@@ -19,10 +19,10 @@
 package org.apache.openmeetings.webservice;
 
 import static java.util.UUID.randomUUID;
-import static org.apache.openmeetings.AbstractOmServerTest.createPass;
-import static org.apache.openmeetings.AbstractOmServerTest.ensureSchema;
-import static org.apache.openmeetings.AbstractOmServerTest.soapUsername;
-import static org.apache.openmeetings.AbstractOmServerTest.userpass;
+import static org.apache.openmeetings.web.AbstractOmServerTest.createPass;
+import static org.apache.openmeetings.web.AbstractOmServerTest.ensureSchema;
+import static org.apache.openmeetings.web.AbstractOmServerTest.soapUsername;
+import static org.apache.openmeetings.web.AbstractOmServerTest.userpass;
 import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/CreateTomcatExtension.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/CreateTomcatExtension.java
index b3bc92743..b327dd57c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/CreateTomcatExtension.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/CreateTomcatExtension.java
@@ -28,7 +28,7 @@ import java.nio.file.Files;
 import org.apache.catalina.LifecycleState;
 import org.apache.catalina.connector.Connector;
 import org.apache.catalina.startup.Tomcat;
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
index c4f6420f3..515460c4c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
@@ -19,11 +19,11 @@
 package org.apache.openmeetings.webservice;
 
 import static java.util.UUID.randomUUID;
-import static org.apache.openmeetings.AbstractOmServerTest.ONE_HOUR;
-import static org.apache.openmeetings.AbstractOmServerTest.createPass;
-import static org.apache.openmeetings.AbstractOmServerTest.createUser;
-import static org.apache.openmeetings.AbstractOmServerTest.getAppointment;
-import static org.apache.openmeetings.AbstractOmServerTest.getUser;
+import static org.apache.openmeetings.web.AbstractOmServerTest.ONE_HOUR;
+import static org.apache.openmeetings.web.AbstractOmServerTest.createPass;
+import static org.apache.openmeetings.web.AbstractOmServerTest.createUser;
+import static org.apache.openmeetings.web.AbstractOmServerTest.getAppointment;
+import static org.apache.openmeetings.web.AbstractOmServerTest.getUser;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotEquals;
@@ -37,7 +37,7 @@ import java.util.List;
 import jakarta.ws.rs.core.Form;
 import jakarta.ws.rs.core.Response;
 
-import org.apache.openmeetings.AbstractOmServerTest;
+import org.apache.openmeetings.web.AbstractOmServerTest;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.calendar.MeetingMemberDao;
 import org.apache.openmeetings.db.dao.room.InvitationDao;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java
index 02e27cdbd..956e56e0c 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestErrorService.java
@@ -19,7 +19,7 @@
 package org.apache.openmeetings.webservice;
 
 import static java.util.UUID.randomUUID;
-import static org.apache.openmeetings.AbstractOmServerTest.rnd;
+import static org.apache.openmeetings.web.AbstractOmServerTest.rnd;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestFileService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestFileService.java
index 2a0c97341..3b827d0da 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestFileService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestFileService.java
@@ -20,9 +20,9 @@ package org.apache.openmeetings.webservice;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.UUID.randomUUID;
-import static org.apache.openmeetings.AbstractOmServerTest.UNIT_TEST_ARAB_EXT_TYPE;
-import static org.apache.openmeetings.AbstractOmServerTest.createUser;
-import static org.apache.openmeetings.AbstractOmServerTest.getUser;
+import static org.apache.openmeetings.web.AbstractOmServerTest.UNIT_TEST_ARAB_EXT_TYPE;
+import static org.apache.openmeetings.web.AbstractOmServerTest.createUser;
+import static org.apache.openmeetings.web.AbstractOmServerTest.getUser;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestGroupService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestGroupService.java
index 1c2ff2127..6df7df769 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestGroupService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestGroupService.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openmeetings.webservice;
 
-import static org.apache.openmeetings.AbstractOmServerTest.adminUsername;
-import static org.apache.openmeetings.AbstractOmServerTest.userpass;
+import static org.apache.openmeetings.web.AbstractOmServerTest.adminUsername;
+import static org.apache.openmeetings.web.AbstractOmServerTest.userpass;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRecordingService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRecordingService.java
index e3f7ffe21..421b8d8e8 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRecordingService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestRecordingService.java
@@ -19,7 +19,7 @@
 package org.apache.openmeetings.webservice;
 
 import static java.util.UUID.randomUUID;
-import static org.apache.openmeetings.AbstractOmServerTest.getUser;
+import static org.apache.openmeetings.web.AbstractOmServerTest.getUser;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java
index 932eceb94..433920b11 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestUserService.java
@@ -20,10 +20,10 @@ package org.apache.openmeetings.webservice;
 
 import static java.util.UUID.randomUUID;
 import static jakarta.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED;
-import static org.apache.openmeetings.AbstractOmServerTest.adminUsername;
-import static org.apache.openmeetings.AbstractOmServerTest.createPass;
-import static org.apache.openmeetings.AbstractOmServerTest.rnd;
-import static org.apache.openmeetings.AbstractOmServerTest.userpass;
+import static org.apache.openmeetings.web.AbstractOmServerTest.adminUsername;
+import static org.apache.openmeetings.web.AbstractOmServerTest.createPass;
+import static org.apache.openmeetings.web.AbstractOmServerTest.rnd;
+import static org.apache.openmeetings.web.AbstractOmServerTest.userpass;
 import static org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -46,8 +46,8 @@ import org.apache.openmeetings.db.dto.user.ExternalUserDTO;
 import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.util.OmException;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
 import org.junit.jupiter.api.Test;
diff --git a/openmeetings-webservice/pom.xml b/openmeetings-webservice/pom.xml
index fedb97db1..d1758e1e7 100644
--- a/openmeetings-webservice/pom.xml
+++ b/openmeetings-webservice/pom.xml
@@ -34,7 +34,7 @@
 	</properties>
 	<build>
 		<plugins>
-			<plugin>
+			<!--plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-javadoc-plugin</artifactId>
 				<executions>
@@ -54,7 +54,7 @@
 						<phase>generate-resources</phase>
 					</execution>
 				</executions>
-			</plugin>
+			</plugin-->
 			<plugin>
 				<groupId>io.openapitools.swagger</groupId>
 				<artifactId>swagger-maven-plugin</artifactId>
diff --git a/openmeetings-webservice/src/main/java/module-info.java b/openmeetings-webservice/src/main/java/module-info.java
index 9fa9d844d..3d62da8ca 100644
--- a/openmeetings-webservice/src/main/java/module-info.java
+++ b/openmeetings-webservice/src/main/java/module-info.java
@@ -18,15 +18,36 @@
  */
 
 module org.apache.openmeetings.webservice {
-	requires transitive org.apache.openmeetings.service;
+	exports org.apache.openmeetings.webservice.util;
 
-	requires transitive java.ws.rs;
+	requires org.apache.openmeetings.core;
+	requires org.apache.openmeetings.db;
+	requires org.apache.openmeetings.service;
+	requires org.apache.openmeetings.util;
+
+	requires org.apache.commons.lang3;
+
+	requires jakarta.annotation;
+	requires jakarta.inject;
+	requires jakarta.jws;
+	requires jakarta.servlet;
+	requires jakarta.xml.ws;
+	requires jakarta.ws.rs;
 
-	requires java.jws;
 	requires org.apache.cxf.core;
-	requires io.swagger.v3.oas.annotations;
 	requires org.apache.cxf.frontend.jaxrs;
+
 	requires org.apache.pdfbox;
+
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.extensions;
+	requires org.apache.wicket.util;
+
+	requires io.swagger.v3.oas.annotations;
 	requires java.desktop;
-	requires java.xml.ws;
+
+	requires spring.beans;
+	requires spring.context;
+
+	requires org.slf4j;
 }
diff --git a/openmeetings-webservice/src/main/java/module-info.java b/openmeetings-webservice/src/test/java/module-info.test
similarity index 58%
copy from openmeetings-webservice/src/main/java/module-info.java
copy to openmeetings-webservice/src/test/java/module-info.test
index 9fa9d844d..a64ca3edc 100644
--- a/openmeetings-webservice/src/main/java/module-info.java
+++ b/openmeetings-webservice/src/test/java/module-info.test
@@ -18,15 +18,41 @@
  */
 
 module org.apache.openmeetings.webservice {
-	requires transitive org.apache.openmeetings.service;
+	// This one should be in-sync with module-info.java
+	exports org.apache.openmeetings.webservice.util;
 
-	requires transitive java.ws.rs;
+	requires org.apache.openmeetings.core;
+	requires org.apache.openmeetings.db;
+	requires org.apache.openmeetings.service;
+	requires org.apache.openmeetings.util;
+
+	requires org.apache.commons.lang3;
+
+	requires jakarta.annotation;
+	requires jakarta.inject;
+	requires jakarta.jws;
+	requires jakarta.servlet;
+	requires jakarta.xml.ws;
+	requires jakarta.ws.rs;
 
-	requires java.jws;
 	requires org.apache.cxf.core;
-	requires io.swagger.v3.oas.annotations;
 	requires org.apache.cxf.frontend.jaxrs;
+
 	requires org.apache.pdfbox;
+
+	requires org.apache.wicket.core;
+	requires org.apache.wicket.extensions;
+	requires org.apache.wicket.util;
+
+	requires io.swagger.v3.oas.annotations;
 	requires java.desktop;
-	requires java.xml.ws;
+
+	requires spring.beans;
+	requires spring.context;
+
+	requires org.slf4j;
+
+	//tests
+	requires org.junit.jupiter.engine;
+	requires org.junit.jupiter.api;
 }
diff --git a/pom.xml b/pom.xml
index e4ca044f5..5061049eb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -103,6 +103,7 @@
 		<jakarta.persistence.version>3.1.0</jakarta.persistence.version>
 		<jakarta.transaction.version>2.0.1</jakarta.transaction.version>
 		<jakarta.annotation.version>2.1.1</jakarta.annotation.version>
+		<jakarta.websocket-api.version>2.1.1</jakarta.websocket-api.version>
 		<asterisk-java.version>3.39.0</asterisk-java.version>
 		<commons-lang3.version>3.13.0</commons-lang3.version>
 		<commons-dbcp.version>2.10.0</commons-dbcp.version>
@@ -121,7 +122,7 @@
 		<xstream.version>1.4.20</xstream.version>
 		<api-all.version>2.1.5</api-all.version>
 		<caldav4j.version>1.0.5</caldav4j.version>
-		<jackrabbit-webdav.version>2.21.16-SNAPSHOT</jackrabbit-webdav.version>
+		<jackrabbit-webdav.version>2.21.19-SNAPSHOT</jackrabbit-webdav.version>
 		<tika-parsers.version>3.0.0-SNAPSHOT</tika-parsers.version>
 		<slf4j.version>2.0.9</slf4j.version>
 		<logback.version>1.4.11</logback.version>
@@ -656,6 +657,7 @@
 				<artifactId>wicketstuff-datastore-hazelcast</artifactId>
 				<version>${wicketstuff.version}</version>
 			</dependency>
+			<dependency>
 				<groupId>jakarta.servlet</groupId>
 				<artifactId>jakarta.servlet-api</artifactId>
 				<version>${jakarta.servlet-api.version}</version>
@@ -724,9 +726,9 @@
 				<version>${tika-parsers.version}</version>
 			</dependency>
 			<dependency>
-				<groupId>javax.websocket</groupId>
-				<artifactId>javax.websocket-api</artifactId>
-				<version>1.1</version>
+				<groupId>jakarta.websocket</groupId>
+				<artifactId>jakarta.websocket-client-api</artifactId>
+				<version>${jakarta.websocket-api.version}</version>
 				<scope>provided</scope>
 			</dependency>
 			<dependency>


[openmeetings] 18/27: [OPENMEETINGS-2756] jackrabbit-webdav maven coordinates are updated, bcprov is updated

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit fa02e741b957f413924bd9ec1c71108bafe4a84e
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Apr 13 15:07:55 2023 +0700

    [OPENMEETINGS-2756] jackrabbit-webdav maven coordinates are updated, bcprov is updated
---
 openmeetings-service/pom.xml | 3 +--
 pom.xml                      | 8 ++++----
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/openmeetings-service/pom.xml b/openmeetings-service/pom.xml
index 2a42181fe..9d7bece7a 100644
--- a/openmeetings-service/pom.xml
+++ b/openmeetings-service/pom.xml
@@ -55,8 +55,7 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.jackrabbit</groupId>
-			<artifactId>jackrabbit-webdav</artifactId>
-			<classifier>jakarta</classifier>
+			<artifactId>jackrabbit-webdav-jakarta</artifactId>
 		</dependency>
 </dependencies>
 </project>
diff --git a/pom.xml b/pom.xml
index 6f7109744..bdf6026a7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -121,7 +121,8 @@
 		<xstream.version>1.4.20</xstream.version>
 		<api-all.version>2.1.5</api-all.version>
 		<caldav4j.version>1.0.5</caldav4j.version>
-		<tika-parsers.version>2.9.0</tika-parsers.version>
+		<jackrabbit-webdav.version>2.21.16-SNAPSHOT</jackrabbit-webdav.version>
+		<tika-parsers.version>3.0.0-SNAPSHOT</tika-parsers.version>
 		<slf4j.version>2.0.9</slf4j.version>
 		<logback.version>1.4.11</logback.version>
 		<jetty.version>11.0.15</jetty.version>
@@ -897,9 +898,8 @@
 			</dependency>
 			<dependency>
 				<groupId>org.apache.jackrabbit</groupId>
-				<artifactId>jackrabbit-webdav</artifactId>
-				<version>2.21.15-SNAPSHOT</version>
-				<classifier>jakarta</classifier>
+				<artifactId>jackrabbit-webdav-jakarta</artifactId>
+				<version>${jackrabbit-webdav.version}</version>
 			</dependency>
 			<dependency>
 				<groupId>com.mysql</groupId>


[openmeetings] 17/27: [OPENMEETINGS-2756] prometheus is back, code clean-up

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 60885b3c514058b5d8ad15f99304b9f825eec197
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Wed Jan 18 12:32:23 2023 +0700

    [OPENMEETINGS-2756] prometheus is back, code clean-up
---
 openmeetings-core/pom.xml                                           | 6 ------
 openmeetings-util/pom.xml                                           | 2 +-
 .../openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java   | 4 ++--
 openmeetings-web/src/main/webapp/WEB-INF/web.xml                    | 2 +-
 pom.xml                                                             | 2 +-
 5 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 7ad0bbb78..c7d997381 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -113,12 +113,6 @@
 			<groupId>javax.sip</groupId>
 			<artifactId>jain-sip-ri</artifactId>
 		</dependency>
-		<!-- FIXME TODO -->
-		<dependency>
-			<groupId>com.sun.activation</groupId>
-			<artifactId>jakarta.activation</artifactId> <!-- required for jakarta.mail -->
-			<version>2.0.1</version>
-		</dependency>
 		<!-- Test dependencies -->
 		<dependency>
 			<groupId>org.junit.jupiter</groupId>
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index 98ba695de..9989d3894 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -132,7 +132,7 @@
 		</dependency>
 		<dependency>
 			<groupId>io.prometheus</groupId>
-			<artifactId>simpleclient_servlet</artifactId>
+			<artifactId>simpleclient_servlet_jakarta</artifactId>
 		</dependency>
 	</dependencies>
 </project>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
index ed6375beb..f068ddbbc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/OpenMeetingsMetricsServlet.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openmeetings.web.util.logging;
 
-//INCOMPATIBLE with Jackarta! import io.prometheus.client.exporter.MetricsServlet;
+import io.prometheus.client.servlet.jakarta.exporter.MetricsServlet;
 
-public class OpenMeetingsMetricsServlet /*extends MetricsServlet*/ {
+public class OpenMeetingsMetricsServlet extends MetricsServlet {
 	private static final long serialVersionUID = 1L;
 
 	public OpenMeetingsMetricsServlet() {
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/web.xml b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
index 6877a51da..7dbe3091b 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/web.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
@@ -60,7 +60,7 @@
 	<!-- Start Prometheus Filter HTTP Servlet metrics
 	<filter>
 		<filter-name>prometheusFilter</filter-name>
-		<filter-class>io.prometheus.client.filter.MetricsFilter</filter-class>
+		<filter-class>io.prometheus.client.servlet.jakarta.filter.MetricsFilter</filter-class>
 		<init-param>
 			<param-name>metric-name</param-name>
 			<param-value>webapp_metrics_filter</param-value>
diff --git a/pom.xml b/pom.xml
index 675a9d73a..6f7109744 100644
--- a/pom.xml
+++ b/pom.xml
@@ -586,7 +586,7 @@
 			</dependency>
 			<dependency>
 				<groupId>io.prometheus</groupId>
-				<artifactId>simpleclient_servlet</artifactId>
+				<artifactId>simpleclient_servlet_jakarta</artifactId>
 				<version>${io.prometheus.version}</version>
 			</dependency>
 			<dependency>


[openmeetings] 04/27: some compilation errors are resolved

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit d17a6ab17c7691106a4274cdd3c8c58cf560ab7e
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sat Jul 3 13:00:04 2021 +0700

    some compilation errors are resolved
---
 openmeetings-core/src/main/java/module-info.java | 11 +++++++++--
 openmeetings-db/src/main/java/module-info.java   |  5 ++---
 openmeetings-util/src/main/java/module-info.java | 12 ++++++++----
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/openmeetings-core/src/main/java/module-info.java b/openmeetings-core/src/main/java/module-info.java
index 833be8717..7b874cd9c 100644
--- a/openmeetings-core/src/main/java/module-info.java
+++ b/openmeetings-core/src/main/java/module-info.java
@@ -30,11 +30,18 @@ module apache.openmeetings.core {
 	requires java.activation;
 	requires com.google.gson;
 	requires java.mail;
-	requires api.all;
-	requires org.apache.tika.parsers;
 	requires java.xml;
 	requires xstream;
 
 	requires jodconverter.core;
 	requires jodconverter.local;
+	requires org.apache.directory.ldap.api.all;
+	requires tika.core;
+	requires tika.parsers;
+	requires javax.inject;
+	requires wicket.ioc;
+	requires java.annotation;
+	requires apache.openmeetings.util;
+	requires asterisk.java;
+	requires jain.sip.ri;
 }
diff --git a/openmeetings-db/src/main/java/module-info.java b/openmeetings-db/src/main/java/module-info.java
index 120187f78..d8849cf89 100644
--- a/openmeetings-db/src/main/java/module-info.java
+++ b/openmeetings-db/src/main/java/module-info.java
@@ -49,8 +49,8 @@ module apache.openmeetings.db {
 	exports org.apache.openmeetings.db.util.ws;
 
 	requires transitive apache.openmeetings.util;
-	requires transitive org.apache.wicket.request;
-	requires transitive org.apache.wicket.websocket.core;
+	requires transitive wicket.request;
+	requires transitive wicket.native.websocket.core;
 	requires transitive spring.beans;
 	requires transitive spring.web;
 	requires transitive spring.core;
@@ -59,7 +59,6 @@ module apache.openmeetings.db {
 	requires spring.context;
 	requires javax.persistence;
 	requires openjpa;
-	requires asterisk.java;
 	requires java.xml.bind;
 	requires org.apache.commons.text;
 }
diff --git a/openmeetings-util/src/main/java/module-info.java b/openmeetings-util/src/main/java/module-info.java
index 72dfb3c61..65ecb4f2b 100644
--- a/openmeetings-util/src/main/java/module-info.java
+++ b/openmeetings-util/src/main/java/module-info.java
@@ -22,16 +22,16 @@ module apache.openmeetings.util {
 	exports org.apache.openmeetings.util.mail;
 	exports org.apache.openmeetings.util.process;
 	exports org.apache.openmeetings.util.ws;
+	exports org.apache.openmeetings.util.logging;
 
 	requires transitive javax.servlet.api;
 
-	requires transitive org.apache.wicket.util;
-	requires transitive org.apache.wicket.core;
-	requires transitive org.apache.wicket.extensions;
+	requires transitive wicket.util;
+	requires transitive wicket.core;
+	requires transitive wicket.extensions;
 
 	requires transitive org.apache.commons.codec;
 	requires transitive org.apache.commons.lang3;
-	requires transitive org.apache.tika.core;
 
 	requires transitive com.github.openjson;
 	requires transitive org.slf4j;
@@ -42,4 +42,8 @@ module apache.openmeetings.util {
 	requires transitive org.bouncycastle.provider;
 	requires transitive java.activation;
 	requires transitive org.mnode.ical4j.core;
+	requires transitive tika.core;
+	requires org.aspectj.tools;
+	requires spring.context;
+	requires simpleclient;
 }


[openmeetings] 23/27: [OPENMEETINGS-2756] audio/video is fixed; version is bumped

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit b30fb2c2d802456346a8a3af2cbed8db9ea554ba
Author: Maxim Solodovnik <so...@apache.org>
AuthorDate: Wed Sep 27 18:54:43 2023 +0700

    [OPENMEETINGS-2756] audio/video is fixed; version is bumped
---
 openmeetings-core/pom.xml                          |  2 +-
 openmeetings-db/pom.xml                            |  2 +-
 openmeetings-install/pom.xml                       |  2 +-
 openmeetings-mediaserver/pom.xml                   |  2 +-
 .../src/main/java/module-info.java                 |  1 +
 .../openmeetings/mediaserver/IStreamProcessor.java | 24 ------------
 .../org/apache/openmeetings/mediaserver/KRoom.java |  2 +-
 .../openmeetings/mediaserver/KurentoHandler.java   | 44 ++++++++++++++++------
 .../openmeetings/mediaserver/StreamProcessor.java  | 18 +++++----
 .../mediaserver/StreamProcessorActions.java        |  7 ++--
 .../mediaserver/TestStreamProcessor.java           | 11 +++---
 .../src/test/java/module-info.test                 |  1 +
 openmeetings-screenshare/pom.xml                   |  2 +-
 openmeetings-server/pom.xml                        |  2 +-
 openmeetings-service/pom.xml                       |  2 +-
 openmeetings-util/pom.xml                          |  2 +-
 openmeetings-web/pom.xml                           |  2 +-
 openmeetings-webservice/pom.xml                    |  2 +-
 pom.xml                                            |  4 +-
 19 files changed, 67 insertions(+), 65 deletions(-)

diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 7b3e47fa1..54a96621f 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>7.2.0-SNAPSHOT</version>
+		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-core</artifactId>
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 416b02239..3ba12399c 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>7.2.0-SNAPSHOT</version>
+		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-db</artifactId>
diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index f01dd5faa..3e37d0ed7 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>7.2.0-SNAPSHOT</version>
+		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-install</artifactId>
diff --git a/openmeetings-mediaserver/pom.xml b/openmeetings-mediaserver/pom.xml
index 017679e2f..a38173417 100644
--- a/openmeetings-mediaserver/pom.xml
+++ b/openmeetings-mediaserver/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>7.2.0-SNAPSHOT</version>
+		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-mediaserver</artifactId>
diff --git a/openmeetings-mediaserver/src/main/java/module-info.java b/openmeetings-mediaserver/src/main/java/module-info.java
index 42f766fac..45dee43fb 100644
--- a/openmeetings-mediaserver/src/main/java/module-info.java
+++ b/openmeetings-mediaserver/src/main/java/module-info.java
@@ -36,6 +36,7 @@ module org.apache.openmeetings.mediaserver {
 
 	requires spring.beans;
 	requires spring.context;
+	requires spring.core;
 
 	requires kurento.client;
 	requires kurento.jsonrpc.client;
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/IStreamProcessor.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/IStreamProcessor.java
deleted file mode 100644
index 6d6e65f96..000000000
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/IStreamProcessor.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.mediaserver;
-
-public interface IStreamProcessor {
-	void release(AbstractStream stream, boolean releaseStream);
-	void destroy();
-}
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
index abffc893a..e7edc4771 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
@@ -76,7 +76,7 @@ public class KRoom {
 	private JSONObject recordingUser = new JSONObject();
 	private JSONObject sharingUser = new JSONObject();
 
-	public KRoom(Room r) {
+	KRoom(Room r) {
 		this.room = r;
 		Injector.get().inject(this);
 		log.info("ROOM {} has been created", room.getId());
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
index 957d33abe..d3989f7fe 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
@@ -57,6 +57,7 @@ import org.kurento.client.Continuation;
 import org.kurento.client.Endpoint;
 import org.kurento.client.EventListener;
 import org.kurento.client.KurentoClient;
+import org.kurento.client.ListenerSubscription;
 import org.kurento.client.MediaObject;
 import org.kurento.client.MediaPipeline;
 import org.kurento.client.ObjectCreatedEvent;
@@ -69,16 +70,17 @@ import org.kurento.client.WebRtcEndpoint;
 import org.kurento.jsonrpc.client.JsonRpcClientNettyWebSocket;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
 
 import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
 
-@Component
+@Singleton
+@Named
 public class KurentoHandler {
 	private static final Logger log = LoggerFactory.getLogger(KurentoHandler.class);
 	public static final String PARAM_ICE = "iceServers";
@@ -115,6 +117,8 @@ public class KurentoHandler {
 	private String kuid;
 	private CertificateKeyType certificateType;
 	private KurentoClient client;
+	private ListenerSubscription objectCreatedListener;
+	private ListenerSubscription objectDestroyedListener;
 	private final AtomicBoolean connected = new AtomicBoolean(false);
 	private final Map<Long, KRoom> rooms = new ConcurrentHashMap<>();
 	private final Set<String> ignoredKuids = new HashSet<>();
@@ -138,6 +142,7 @@ public class KurentoHandler {
 
 	@PostConstruct
 	public void init() {
+		log.trace("KurentoHandler::PostConstruct");
 		Runnable check = () -> {
 			try {
 				if (client != null) {
@@ -178,8 +183,8 @@ public class KurentoHandler {
 							notifyRooms(true);
 						}
 					});
-				client.getServerManager().addObjectCreatedListener(new KWatchDogCreate());
-				client.getServerManager().addObjectDestroyedListener(event ->
+				objectCreatedListener = client.getServerManager().addObjectCreatedListener(new KWatchDogCreate());
+				objectDestroyedListener = client.getServerManager().addObjectDestroyedListener(event ->
 					log.debug("Kurento::ObjectDestroyedEvent objectId {}, tags {}, source {}", event.getObjectId(), event.getTags(), event.getSource())
 				);
 			} catch (Exception e) {
@@ -204,6 +209,14 @@ public class KurentoHandler {
 				client = null;
 				if (!copy.isClosed()) {
 					log.debug("Client will be destroyed ...");
+					if (objectCreatedListener != null) {
+						copy.getServerManager().removeObjectCreatedListener(objectCreatedListener);
+						objectCreatedListener = null;
+					}
+					if (objectDestroyedListener != null) {
+						copy.getServerManager().removeObjectDestroyedListener(objectDestroyedListener);
+						objectDestroyedListener = null;
+					}
 					copy.destroy();
 					log.debug(".... Client is destroyed");
 				}
@@ -304,7 +317,8 @@ public class KurentoHandler {
 		return rooms.computeIfAbsent(roomId, k -> {
 			log.debug("Room {} does not exist. Will create now!", roomId);
 			Room r = roomDao.get(roomId);
-			return new KRoom(r);
+			KRoom kRoom = new KRoom(r);
+			return kRoom;
 		});
 	}
 
@@ -382,7 +396,7 @@ public class KurentoHandler {
 		this.certificateType = CertificateKeyType.valueOf(certificateType);
 	}
 
-	public CertificateKeyType getCertificateType() {
+	CertificateKeyType getCertificateType() {
 		return certificateType;
 	}
 
@@ -412,6 +426,7 @@ public class KurentoHandler {
 		private void checkPipeline(String roomOid) {
 			scheduler.schedule(() -> {
 				if (client == null) {
+					log.trace("KWatchDog::checkPipeline Client is NULL");
 					return;
 				}
 				// still alive
@@ -420,17 +435,24 @@ public class KurentoHandler {
 				try {
 					final String inKuid = tags.get(TAG_KUID);
 					if (inKuid != null && ignoredKuids.contains(inKuid)) {
+						log.trace("KWatchDog::checkPipeline KUID in ignore list");
 						return;
 					}
 					if (validTestPipeline(tags)) {
+						log.trace("KWatchDog::checkPipeline test pipeline detected");
 						return;
 					}
 					if (kuid.equals(inKuid)) {
-						KStream stream = streamProcessor.getByUid(tags.get(TAG_STREAM_UID));
+						String streamUId = tags.get(TAG_STREAM_UID);
+						log.trace("KWatchDog::checkPipeline kuid matched, streamId: {}", streamUId);
+						KStream stream = streamProcessor.getByUid(streamUId);
 						if (stream != null) {
-							if (stream.getRoomId().equals(Long.valueOf(tags.get(TAG_ROOM)))
-									&& stream.getPipeline().getId().equals(pipe.getId()))
-							{
+							Long sRoomId = stream.getRoomId();
+							Long tRoomId = Long.valueOf(tags.get(TAG_ROOM));
+							String pipeId = stream.getPipeline().getId();
+							log.trace("KWatchDog::checkPipeline stream found! Room match ? {}, Pipe match ? {}"
+									, sRoomId.equals(tRoomId), pipeId.equals(pipe.getId()));
+							if (sRoomId.equals(tRoomId) && pipeId.equals(pipe.getId())) {
 								return;
 							} else {
 								stream.release();
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
index e5116d70c..ee09c7545 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
@@ -35,11 +35,11 @@ import org.apache.openmeetings.core.converter.RecordingConverter;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.basic.ScreenStreamDesc;
 import org.apache.openmeetings.db.entity.basic.Client.Activity;
+import org.apache.openmeetings.db.entity.basic.Client.StreamType;
+import org.apache.openmeetings.db.entity.basic.ScreenStreamDesc;
 import org.apache.openmeetings.db.entity.basic.StreamDesc;
 import org.apache.openmeetings.db.entity.basic.WebcamStreamDesc;
-import org.apache.openmeetings.db.entity.basic.Client.StreamType;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.Right;
@@ -52,17 +52,19 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.springframework.core.task.TaskExecutor;
-import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONObject;
 
 import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
 
-@Component
-public class StreamProcessor implements IStreamProcessor {
+@Singleton
+@Named
+public class StreamProcessor {
 	private static final Logger log = LoggerFactory.getLogger(StreamProcessor.class);
 	/**
-	 * Holds a reference to the current streams available on the server instance
+	 * Holds references to the current streams available on the server instance
 	 */
 	private final Map<String, KStream> streamByUid = new ConcurrentHashMap<>();
 
@@ -465,7 +467,6 @@ public class StreamProcessor implements IStreamProcessor {
 		return recDao;
 	}
 
-	@Override
 	public void release(AbstractStream stream, boolean releaseStream) {
 		final String uid = stream.getUid();
 		if (releaseStream) {
@@ -480,11 +481,12 @@ public class StreamProcessor implements IStreamProcessor {
 				WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.RIGHT_UPDATED, c.getUid()));
 			}
 		}
+		log.trace("StreamProcessor::release uid: {}", uid);
 		streamByUid.remove(uid);
 	}
 
-	@Override
 	public void destroy() {
+		log.trace("StreamProcessor::destroy !!!!");
 		for (Map.Entry<String, KStream> e : streamByUid.entrySet()) {
 			release(e.getValue(), true);
 		}
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
index ea8f7d63e..d74da8d40 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
@@ -35,13 +35,14 @@ import org.kurento.client.internal.server.KurentoServerException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.springframework.stereotype.Component;
-
 import com.github.openjson.JSONObject;
 
 import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
 
-@Component
+@Singleton
+@Named
 public class StreamProcessorActions {
 	private static final Logger log = LoggerFactory.getLogger(StreamProcessorActions.class);
 
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
index a7309d122..42ce6fd1e 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
@@ -32,14 +32,15 @@ import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.entity.basic.IWsClient;
 import org.kurento.client.IceCandidate;
 
-import org.springframework.stereotype.Component;
-
 import com.github.openjson.JSONObject;
 
 import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
 
-@Component
-class TestStreamProcessor implements IStreamProcessor {
+@Singleton
+@Named
+class TestStreamProcessor {
 	private final Map<String, KTestStream> streamByUid = new ConcurrentHashMap<>();
 
 	@Inject
@@ -101,12 +102,10 @@ class TestStreamProcessor implements IStreamProcessor {
 		}
 	}
 
-	@Override
 	public void release(AbstractStream stream, boolean releaseStream) {
 		streamByUid.remove(stream.getUid());
 	}
 
-	@Override
 	public void destroy() {
 		for (Entry<String, KTestStream> e : streamByUid.entrySet()) {
 			e.getValue().release();
diff --git a/openmeetings-mediaserver/src/test/java/module-info.test b/openmeetings-mediaserver/src/test/java/module-info.test
index deaf32995..5f839623c 100644
--- a/openmeetings-mediaserver/src/test/java/module-info.test
+++ b/openmeetings-mediaserver/src/test/java/module-info.test
@@ -37,6 +37,7 @@ module org.apache.openmeetings.mediaserver {
 
 	requires spring.beans;
 	requires spring.context;
+	requires spring.core;
 
 	requires kurento.client;
 	requires kurento.jsonrpc.client;
diff --git a/openmeetings-screenshare/pom.xml b/openmeetings-screenshare/pom.xml
index c7c819935..05b9e9035 100644
--- a/openmeetings-screenshare/pom.xml
+++ b/openmeetings-screenshare/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>7.2.0-SNAPSHOT</version>
+		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-screenshare</artifactId>
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index e51a40415..696978a04 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>7.2.0-SNAPSHOT</version>
+		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-server</artifactId>
diff --git a/openmeetings-service/pom.xml b/openmeetings-service/pom.xml
index 9d7bece7a..d3524fab7 100644
--- a/openmeetings-service/pom.xml
+++ b/openmeetings-service/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>7.2.0-SNAPSHOT</version>
+		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-service</artifactId>
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index 9989d3894..b4388d9a5 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>7.2.0-SNAPSHOT</version>
+		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-util</artifactId>
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index ee8ad5190..dda3a619f 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>7.2.0-SNAPSHOT</version>
+		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-web</artifactId>
diff --git a/openmeetings-webservice/pom.xml b/openmeetings-webservice/pom.xml
index d1758e1e7..acb255775 100644
--- a/openmeetings-webservice/pom.xml
+++ b/openmeetings-webservice/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>7.2.0-SNAPSHOT</version>
+		<version>8.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-webservice</artifactId>
diff --git a/pom.xml b/pom.xml
index ac19ddee9..adf9bff6e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,13 +26,13 @@
 	</parent>
 	<groupId>org.apache.openmeetings</groupId>
 	<artifactId>openmeetings-parent</artifactId>
-	<version>7.2.0-SNAPSHOT</version>
+	<version>8.0.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	<name>Openmeetings</name>
 	<description>Parent project for all OpenMeetings Maven modules. Required to hold general settings</description>
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<project.build.outputTimestamp>2023-05-10T02:44:22Z</project.build.outputTimestamp>
+		<project.build.outputTimestamp>2023-09-27T11:15:33Z</project.build.outputTimestamp>
 		<wicket.configuration>DEPLOYMENT</wicket.configuration>
 		<om.quick.build>false</om.quick.build>
 		<om.notquick.build>true</om.notquick.build>


[openmeetings] 22/27: [OPENMEETINGS-2756] property name is updated

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit af089f59863f7882e638c051d2f5e3701a321c31
Author: Maxim Solodovnik <so...@apache.org>
AuthorDate: Mon Sep 25 17:06:13 2023 +0700

    [OPENMEETINGS-2756] property name is updated
---
 .../src/main/java/org/apache/openmeetings/web/app/Application.java      | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 9b90e162e..34c850eb7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -167,7 +167,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 	private static final Logger log = LoggerFactory.getLogger(Application.class);
 	private static boolean isInstalled;
 	private static final String INVALID_SESSIONS_KEY = "INVALID_SESSIONS_KEY";
-	private static final String SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE = "javax.websocket.server.ServerContainer";
+	private static final String SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE = "jakarta.websocket.server.ServerContainer";
 	public static final String NAME_ATTR_KEY = "name";
 	public static final String SERVER_URL_ATTR_KEY = "server.url";
 	//additional maps for faster searching should be created


[openmeetings] 11/27: no jira: unmerged file is fixed

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit d9b7d015de6702bb5eed4c5416543fd39e3b8a9a
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Dec 29 13:52:15 2022 +0700

    no jira: unmerged file is fixed
---
 .../src/main/java/org/apache/openmeetings/backup/BackupImport.java  | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 8eeb5ab19..5f1d85126 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -986,12 +986,8 @@ public class BackupImport {
 	/*
 	 * ##################### Import Recordings
 	 */
-<<<<<<< HEAD
-	void importRecordings(File base) {
-=======
 	// public for testing
-	public void importRecordings(File base) throws Exception {
->>>>>>> 2590e5123 (The build is green)
+	public void importRecordings(File base) {
 		log.info("Meeting members import complete, starting recordings server import");
 		final Map<Long, Long> folders = new HashMap<>();
 		saveTree(base, "flvRecordings.xml", RECORDING_LIST_NODE, RECORDING_NODE, Recording.class, folders, r -> {


[openmeetings] 16/27: [OPENMEETINGS-2756] build is green for me; trublemakers so far: wicket-ioc, prometheus, jackrabbit-webdav

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit a65ee70ac8be7f1eea449f79679eb3b7cc3640f1
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue Jan 17 20:55:46 2023 +0700

    [OPENMEETINGS-2756] build is green for me; trublemakers so far: wicket-ioc, prometheus, jackrabbit-webdav
---
 LICENSE                                            | 124 ---------------------
 openmeetings-core/pom.xml                          |   4 -
 openmeetings-install/pom.xml                       |   6 -
 .../src/site/xdoc/BuildInstructions.xml            |   6 +-
 openmeetings-web/pom.xml                           |   4 -
 pom.xml                                            |  12 --
 6 files changed, 3 insertions(+), 153 deletions(-)

diff --git a/LICENSE b/LICENSE
index 036575ded..3fd7d6e20 100644
--- a/LICENSE
+++ b/LICENSE
@@ -299,130 +299,6 @@ conditions of the following licenses.
 
 ======================================================================================================================
 
-For GlassFish components
-
-webapps/openmeetings/WEB-INF/lib/activation-*.jar
-webapps/openmeetings/WEB-INF/lib/javax.mail-1.6.0.jar
-
-
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-
-1. Definitions.
-
-1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
-
-1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
-
-1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
-
-1.4. Executable means the Covered Software in any form other than Source Code.
-
-1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
-
-1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
-
-1.7. License means this document.
-
-1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
-
-1.9. Modifications means the Source Code and Executable form of any of the following:
-
-A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
-
-B. Any new file that contains any part of the Original Software or previous Modification; or
-
-C. Any new file that is contributed or otherwise made available under the terms of this License.
-
-1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
-
-1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
-
-1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
-
-1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a)�the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b)�ownership of more than fifty percent (50%) of the outstanding sh [...]
-
-2. License Grants.
-
-2.1. The Initial Developer Grant.
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
-(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
-(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
-(c) The licenses granted in Sections�2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
-(d) Notwithstanding Section�2.1(b) above, no patent license is granted: (1)�for code that You delete from the Original Software, or (2)�for infringements caused by: (i)�the modification of the Original Software, or (ii)�the combination of the Original Software with other software or devices.
-
-2.2. Contributor Grant.
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
-(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
-(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)�Modifications made by that Contributor (or portions thereof); and (2)�the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
-(c) The licenses granted in Sections�2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
-(d) Notwithstanding Section�2.2(b) above, no patent license is granted: (1)�for any code that Contributor has deleted from the Contributor Version; (2)�for infringements caused by: (i)�third party modifications of Contributor Version, or (ii)�the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3)�under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
-
-3. Distribution Obligations.
-
-3.1. Availability of Source Code.
-
-Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software i [...]
-
-3.2. Modifications.
-
-The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
-
-3.3. Required Notices.
-You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
-
-3.4. Application of Additional Terms.
-You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such  [...]
-
-3.5. Distribution of Executable Versions.
-You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form un [...]
-
-3.6. Larger Works.
-You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
-
-4. Versions of the License.
-
-4.1. New Versions.
-Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
-
-4.2. Effect of New Versions.
-
-You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which [...]
-4.3. Modified Versions.
-
-When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)�rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)�otherwise make it clear that the license contains terms which differ from this License.
-
-5. DISCLAIMER OF WARRANTY.
-
-COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE C [...]
-
-6. TERMINATION.
-
-6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
-
-6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights gran [...]
-
-6.3. In the event of termination under Sections�6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
-
-7. LIMITATION OF LIABILITY.
-
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL O [...]
-
-8. U.S. GOVERNMENT END USERS.
-
-The Covered Software is a commercial item, as that term is defined in 48�C.F.R.�2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. �252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48�C.F.R.�12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. T [...]
-
-9. MISCELLANEOUS.
-
-This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation r [...]
-
-10. RESPONSIBILITY FOR CLAIMS.
-
-As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
-
-NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
-The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
-
-======================================================================================================================
 
 For SLF4J:
 
diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 5c3f80689..7ad0bbb78 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -119,10 +119,6 @@
 			<artifactId>jakarta.activation</artifactId> <!-- required for jakarta.mail -->
 			<version>2.0.1</version>
 		</dependency>
-		<dependency>
-			<groupId>javax.annotation</groupId>
-			<artifactId>javax.annotation-api</artifactId>
-		</dependency>
 		<!-- Test dependencies -->
 		<dependency>
 			<groupId>org.junit.jupiter</groupId>
diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index 963bf8cd4..f01dd5faa 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -53,12 +53,6 @@
 			<groupId>commons-cli</groupId>
 			<artifactId>commons-cli</artifactId>
 		</dependency>
-		<!-- FIXME TODO -->
-		<dependency>
-			<groupId>javax.activation</groupId>
-			<artifactId>activation</artifactId> <!-- required for CXF and for backup import/export (jaxb 2)-->
-			<version>1.1.1</version>
-		</dependency>
 		<dependency>
 			<groupId>org.apache.openmeetings</groupId>
 			<artifactId>openmeetings-util</artifactId>
diff --git a/openmeetings-server/src/site/xdoc/BuildInstructions.xml b/openmeetings-server/src/site/xdoc/BuildInstructions.xml
index c02c972e0..ed29ab634 100644
--- a/openmeetings-server/src/site/xdoc/BuildInstructions.xml
+++ b/openmeetings-server/src/site/xdoc/BuildInstructions.xml
@@ -63,10 +63,10 @@
 		<section name="Tips and Gotchas">
 			<p>Eclipse ANSI colors plugin for colors in console</p>
 			<source><![CDATA[
-MAVEN_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n' mvn clean -P allModules,quick,mysql jetty:run-exploded -Dwicket.configuration=DEVELOPMENT -Dwicket.ioc.useByteBuddy=true
+MAVEN_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n' mvn clean -P allModules,quick,mysql jetty:run-exploded -Dwicket.configuration=DEVELOPMENT
 
 #Quick rebuild and run
-cd ..; mvn clean install -PallModules,quick,mysql -pl openmeetings-util,openmeetings-core; cd openmeetings-web; MAVEN_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n' mvn clean -P allModules,quick,mysql jetty:run-exploded -Dwicket.configuration=DEVELOPMENT -Dwicket.ioc.useByteBuddy=true
+cd ..; mvn clean install -PallModules,quick,mysql -pl openmeetings-util,openmeetings-core; cd openmeetings-web; MAVEN_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n' mvn clean -P allModules,quick,mysql jetty:run-exploded -Dwicket.configuration=DEVELOPMENT
 
 			]]></source>
 			<p>Run OpenMeetings with Embedded Jetty for Development purpose in JDK17</p>
@@ -77,7 +77,7 @@ export MAVEN_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,s
 
 # Just run Webapp, requires other modules to be compiled separated if changed
 cd openmeetings-webapp
-mvn install -P allModules,quick,mysql jetty:run-exploded -Dwicket.configuration=DEVELOPMENT -Dwicket.ioc.useByteBuddy=true
+mvn install -P allModules,quick,mysql jetty:run-exploded -Dwicket.configuration=DEVELOPMENT
 
 # OpenMeetings logs for embedded jetty are in
 cd openmeetings-webapp
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 74a95744c..85fcd5966 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -46,10 +46,6 @@
 					<groupId>com.mysql</groupId>
 					<artifactId>mysql-connector-j</artifactId>
 				</dependency>
-				<dependency>
-					<groupId>net.bytebuddy</groupId>
-					<artifactId>byte-buddy</artifactId>
-				</dependency>
 			</dependencies>
 		</profile>
 		<profile>
diff --git a/pom.xml b/pom.xml
index 930c107f5..675a9d73a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -138,8 +138,6 @@
 		<jquery-ui-touch-punch.version>0.2.3-2</jquery-ui-touch-punch.version>
 		<apacheds-test-framework.version>2.0.0.AM26</apacheds-test-framework.version>
 		<swagger.version>2.2.16</swagger.version>
-		<bytebuddy.version>1.14.9</bytebuddy.version>
-		<annotation-api.version>1.3.2</annotation-api.version>
 		<jsr305.version>3.0.2</jsr305.version>
 		<totp.version>1.7.1</totp.version>
 		<!--  Exclude all generated code  -->
@@ -908,11 +906,6 @@
 				<artifactId>mysql-connector-j</artifactId>
 				<version>${mysql.version}</version>
 			</dependency>
-			<dependency>
-				<groupId>net.bytebuddy</groupId>
-				<artifactId>byte-buddy</artifactId>
-				<version>${bytebuddy.version}</version>
-			</dependency>
 			<dependency>
 				<groupId>org.webjars</groupId>
 				<artifactId>jasny-bootstrap</artifactId>
@@ -984,11 +977,6 @@
 				<artifactId>swagger-annotations</artifactId>
 				<version>${swagger.version}</version>
 			</dependency>
-			<dependency>
-				<groupId>javax.annotation</groupId>
-				<artifactId>javax.annotation-api</artifactId>
-				<version>${annotation-api.version}</version>
-			</dependency>
 			<dependency>
 				<!-- required for @NonNull, temporary -->
 				<groupId>com.google.code.findbugs</groupId>


[openmeetings] 01/27: no jira: project is partially converted to use java11 modules

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit d95ae0a86e80b616871bda88ecfcaf60fa9cefcc
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue Feb 18 00:32:32 2020 +0700

    no jira: project is partially converted to use java11 modules
---
 openmeetings-core/src/main/java/module-info.java   | 40 +++++++++++++
 openmeetings-db/src/main/java/module-info.java     | 66 ++++++++++++++++++++++
 .../apache/openmeetings/db/dao/label/LabelDao.java |  4 +-
 openmeetings-util/src/main/java/module-info.java   | 45 +++++++++++++++
 4 files changed, 153 insertions(+), 2 deletions(-)

diff --git a/openmeetings-core/src/main/java/module-info.java b/openmeetings-core/src/main/java/module-info.java
new file mode 100644
index 000000000..833be8717
--- /dev/null
+++ b/openmeetings-core/src/main/java/module-info.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+module apache.openmeetings.core {
+	requires transitive apache.openmeetings.db;
+
+	requires transitive org.apache.commons.io;
+
+	requires transitive spring.context;
+
+	requires kurento.client;
+	requires kurento.commons;
+	requires kurento.jsonrpc.client;
+	requires java.activation;
+	requires com.google.gson;
+	requires java.mail;
+	requires api.all;
+	requires org.apache.tika.parsers;
+	requires java.xml;
+	requires xstream;
+
+	requires jodconverter.core;
+	requires jodconverter.local;
+}
diff --git a/openmeetings-db/src/main/java/module-info.java b/openmeetings-db/src/main/java/module-info.java
new file mode 100644
index 000000000..2d01a8c92
--- /dev/null
+++ b/openmeetings-db/src/main/java/module-info.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+module apache.openmeetings.db {
+	exports org.apache.openmeetings;
+	exports org.apache.openmeetings.db.dao;
+	exports org.apache.openmeetings.db.dao.basic;
+	exports org.apache.openmeetings.db.dao.calendar;
+	exports org.apache.openmeetings.db.dao.file;
+	exports org.apache.openmeetings.db.dao.label;
+	exports org.apache.openmeetings.db.dao.log;
+	exports org.apache.openmeetings.db.dao.record;
+	exports org.apache.openmeetings.db.dao.room;
+	exports org.apache.openmeetings.db.dao.server;
+	exports org.apache.openmeetings.db.dao.user;
+	exports org.apache.openmeetings.db.dto.basic;
+	exports org.apache.openmeetings.db.dto.calendar;
+	exports org.apache.openmeetings.db.dto.file;
+	exports org.apache.openmeetings.db.dto.record;
+	exports org.apache.openmeetings.db.dto.room;
+	exports org.apache.openmeetings.db.dto.user;
+	exports org.apache.openmeetings.db.entity;
+	exports org.apache.openmeetings.db.entity.basic;
+	exports org.apache.openmeetings.db.entity.calendar;
+	exports org.apache.openmeetings.db.entity.file;
+	exports org.apache.openmeetings.db.entity.label;
+	exports org.apache.openmeetings.db.entity.log;
+	exports org.apache.openmeetings.db.entity.record;
+	exports org.apache.openmeetings.db.entity.room;
+	exports org.apache.openmeetings.db.entity.server;
+	exports org.apache.openmeetings.db.entity.user;
+	exports org.apache.openmeetings.db.manager;
+	exports org.apache.openmeetings.db.util;
+	exports org.apache.openmeetings.db.util.ws;
+
+	requires transitive apache.openmeetings.util;
+	requires transitive org.apache.wicket.request;
+	requires transitive org.apache.wicket.websocket.core;
+	requires transitive spring.beans;
+	requires transitive simple.xml;
+	requires transitive spring.web;
+	requires transitive spring.core;
+
+	requires spring.tx;
+	requires spring.context;
+	requires java.persistence;
+	requires openjpa;
+	requires asterisk.java;
+	requires java.xml.bind;
+	requires org.apache.commons.text;
+}
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
index 150e434a8..aabe63062 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/label/LabelDao.java
@@ -47,7 +47,6 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.entity.label.OmLanguage;
 import org.apache.openmeetings.db.entity.label.StringLabel;
@@ -194,7 +193,8 @@ public class LabelDao implements IDataProviderDao<StringLabel>{
 		}
 		List<StringLabel> result = new ArrayList<>(labelCache.containsKey(l) ? labelCache.get(l) : new ArrayList<StringLabel>());
 		if (!Strings.isEmpty(search)) {
-			CollectionUtils.filter(result, o -> o != null && (o.getKey().contains(search) || o.getValue().contains(search)));
+			result = result.stream().filter(o -> o != null && (o.getKey().contains(search) || o.getValue().contains(search)))
+					.collect(Collectors.toList());
 		}
 		return result;
 	}
diff --git a/openmeetings-util/src/main/java/module-info.java b/openmeetings-util/src/main/java/module-info.java
new file mode 100644
index 000000000..72dfb3c61
--- /dev/null
+++ b/openmeetings-util/src/main/java/module-info.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+module apache.openmeetings.util {
+	exports org.apache.openmeetings.util;
+	exports org.apache.openmeetings.util.crypt;
+	exports org.apache.openmeetings.util.mail;
+	exports org.apache.openmeetings.util.process;
+	exports org.apache.openmeetings.util.ws;
+
+	requires transitive javax.servlet.api;
+
+	requires transitive org.apache.wicket.util;
+	requires transitive org.apache.wicket.core;
+	requires transitive org.apache.wicket.extensions;
+
+	requires transitive org.apache.commons.codec;
+	requires transitive org.apache.commons.lang3;
+	requires transitive org.apache.tika.core;
+
+	requires transitive com.github.openjson;
+	requires transitive org.slf4j;
+	requires transitive logback.classic;
+	requires transitive logback.core;
+	requires transitive dom4j;
+	requires transitive jcip.annotations;
+	requires transitive org.bouncycastle.provider;
+	requires transitive java.activation;
+	requires transitive org.mnode.ical4j.core;
+}


[openmeetings] 06/27: Some more work on modules

Posted by so...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 747de4dfb43df14e772dd14e39d8a9f74e4b9d65
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Jul 23 10:22:37 2021 +0700

    Some more work on modules
---
 openmeetings-db/src/main/java/module-info.java   |  4 +--
 openmeetings-util/src/main/java/module-info.java | 37 ++++++++++++------------
 openmeetings-util/src/test/java/module-info.test | 25 ++++++++++++++++
 pom.xml                                          | 10 +++++++
 4 files changed, 55 insertions(+), 21 deletions(-)

diff --git a/openmeetings-db/src/main/java/module-info.java b/openmeetings-db/src/main/java/module-info.java
index 671932f9f..aa1690d87 100644
--- a/openmeetings-db/src/main/java/module-info.java
+++ b/openmeetings-db/src/main/java/module-info.java
@@ -49,8 +49,8 @@ module apache.openmeetings.db {
 	exports org.apache.openmeetings.db.util.ws;
 
 	requires transitive apache.openmeetings.util;
-	requires transitive wicket.request;
-	requires transitive wicket.native.websocket.core;
+	requires transitive org.apache.wicket.request;
+	requires transitive org.apache.wicket.websocket.core;
 	requires transitive spring.beans;
 	requires transitive spring.web;
 	requires transitive spring.core;
diff --git a/openmeetings-util/src/main/java/module-info.java b/openmeetings-util/src/main/java/module-info.java
index 3032e41b1..ecd52506e 100644
--- a/openmeetings-util/src/main/java/module-info.java
+++ b/openmeetings-util/src/main/java/module-info.java
@@ -16,34 +16,33 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-module apache.openmeetings.util {
-	exports org.apache.openmeetings.util;
-	exports org.apache.openmeetings.util.crypt;
-	exports org.apache.openmeetings.util.mail;
-	exports org.apache.openmeetings.util.process;
-	exports org.apache.openmeetings.util.ws;
-	exports org.apache.openmeetings.util.logging;
-
-	requires transitive javax.servlet.api;
-
-	requires transitive wicket.util;
-	requires transitive wicket.core;
-	requires transitive wicket.extensions;
+module org.apache.openmeetings.util {
+	requires transitive org.apache.wicket.util;
+	requires transitive org.apache.wicket.core;
+	requires transitive org.apache.wicket.extensions;
 
 	requires transitive org.apache.commons.codec;
 	requires transitive org.apache.commons.lang3;
 
 	requires transitive com.github.openjson;
 	requires transitive org.slf4j;
-	requires transitive logback.classic;
-	requires transitive logback.core;
-	requires transitive dom4j;
-	requires transitive jcip.annotations;
 	requires transitive org.bouncycastle.provider;
-	requires transitive java.activation;
+	requires transitive jakarta.activation;
 	requires transitive org.mnode.ical4j.core;
-	requires transitive tika.core;
 	requires org.aspectj.tools;
+	requires transitive javax.servlet.api;
+	requires transitive tika.core;
 	requires transitive spring.context;
+	requires transitive logback.classic;
+	requires transitive logback.core;
+	requires transitive dom4j;
+	requires transitive jcip.annotations;
 	requires simpleclient;
+
+	exports org.apache.openmeetings.util;
+	exports org.apache.openmeetings.util.crypt;
+	exports org.apache.openmeetings.util.mail;
+	exports org.apache.openmeetings.util.process;
+	exports org.apache.openmeetings.util.ws;
+	exports org.apache.openmeetings.util.logging;
 }
diff --git a/openmeetings-util/src/test/java/module-info.test b/openmeetings-util/src/test/java/module-info.test
new file mode 100644
index 000000000..5987c837c
--- /dev/null
+++ b/openmeetings-util/src/test/java/module-info.test
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+module org.apache.openmeetings.util.test {
+	requires transitive org.apache.openmeetings.util;
+
+	//tests
+	requires org.junit.jupiter.engine;
+	requires org.junit.jupiter.api;
+}
diff --git a/pom.xml b/pom.xml
index 456a9d279..d7e08cad8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -650,6 +650,16 @@
 				<artifactId>wicket-spring</artifactId>
 				<version>${wicket.version}</version>
 			</dependency>
+			<dependency>
+				<groupId>org.wicketstuff</groupId>
+				<artifactId>wicketstuff-datastore-hazelcast</artifactId>
+				<version>${wicketstuff.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>com.googlecode.wicket-jquery-ui</groupId>
+				<artifactId>wicket-jquery-ui-calendar</artifactId>
+				<version>${wicket-jquery-ui.version}</version>
+			</dependency>
 			<dependency>
 				<groupId>javax.servlet</groupId>
 				<artifactId>javax.servlet-api</artifactId>