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

janhoy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 38c56e77d15 SOLR-17161 Create the solrj-jetty module (#4038)
38c56e77d15 is described below

commit 38c56e77d153b8df684d4065f597f38a8f26ee56
Author: Jan Høydahl <[email protected]>
AuthorDate: Mon Jan 12 21:19:09 2026 +0100

    SOLR-17161 Create the solrj-jetty module (#4038)
    
    Co-authored-by: Kevin Risden <[email protected]>
    Co-authored-by: David Smiley <[email protected]>
---
 .../unreleased/SOLR-17161-separate-jetty-solrj.yml |  9 +++
 gradle/maven/defaults-maven.gradle                 |  1 +
 settings.gradle                                    |  1 +
 solr/benchmark/build.gradle                        |  1 +
 solr/core/build.gradle                             |  1 +
 .../apache/solr/update/StreamingSolrClients.java   |  5 +-
 solr/cross-dc-manager/build.gradle                 |  1 +
 solr/cross-dc-manager/gradle.lockfile              |  8 +--
 solr/modules/analysis-extras/build.gradle          |  2 +-
 solr/modules/analysis-extras/gradle.lockfile       | 14 ++---
 solr/modules/clustering/gradle.lockfile            | 14 ++---
 solr/modules/cross-dc/build.gradle                 |  1 +
 solr/modules/cuvs/gradle.lockfile                  | 14 ++---
 solr/modules/extraction/gradle.lockfile            |  6 +-
 solr/modules/gcs-repository/gradle.lockfile        | 14 ++---
 solr/modules/jwt-auth/build.gradle                 | 13 ++++-
 solr/modules/langid/gradle.lockfile                | 14 ++---
 solr/modules/language-models/gradle.lockfile       | 14 ++---
 solr/modules/ltr/gradle.lockfile                   | 14 ++---
 solr/modules/opentelemetry/gradle.lockfile         | 14 ++---
 solr/modules/s3-repository/gradle.lockfile         | 14 ++---
 solr/modules/scripting/gradle.lockfile             | 14 ++---
 solr/modules/sql/gradle.lockfile                   | 14 ++---
 solr/solr-ref-guide/build.gradle                   |  1 +
 .../pages/basic-authentication-plugin.adoc         |  2 +
 .../modules/deployment-guide/pages/solrj.adoc      | 30 +++++++++-
 .../pages/major-changes-in-solr-10.adoc            |  2 +-
 solr/solrj-jetty/build.gradle                      | 67 ++++++++++++++++++++++
 solr/{solrj => solrj-jetty}/gradle.lockfile        | 50 ++++------------
 .../solrj/jetty/AuthenticationStoreHolder.java     |  0
 .../client/solrj/jetty/CloudJettySolrClient.java   |  0
 .../jetty/ConcurrentUpdateJettySolrClient.java     | 46 +++++++++++++--
 .../client/solrj/jetty/HttpJettySolrClient.java    |  0
 .../client/solrj/jetty/HttpListenerFactory.java    |  0
 .../solr/client/solrj/jetty/LBJettySolrClient.java |  0
 .../jetty/PreemptiveBasicAuthClientCustomizer.java |  0
 .../apache/solr/client/solrj/jetty/SSLConfig.java  |  0
 .../solrj/jetty/SolrBasicAuthentication.java       |  0
 .../solr/client/solrj/jetty/package-info.java      |  0
 ...oncurrentUpdateJettySolrClientBadInputTest.java |  0
 ...ntUpdateJettySolrClientMultiCollectionTest.java |  0
 .../jetty/ConcurrentUpdateJettySolrClientTest.java |  3 +-
 .../HttpJettySolrClientCompatibilityTest.java      |  0
 .../solrj/jetty/HttpJettySolrClientProxyTest.java  |  0
 .../solrj/jetty/HttpJettySolrClientTest.java       |  0
 solr/solrj-streaming/build.gradle                  |  1 +
 solr/solrj-zookeeper/build.gradle                  |  1 +
 solr/solrj/build.gradle                            | 43 +++++++++++---
 solr/solrj/gradle.lockfile                         | 39 ++++++-------
 .../solrj/impl/ConcurrentUpdateBaseSolrClient.java | 67 ++++++++++++++++++----
 .../client/solrj/impl/SolrClientCustomizer.java    |  3 +-
 solr/test-framework/build.gradle                   |  1 +
 52 files changed, 383 insertions(+), 176 deletions(-)

diff --git a/changelog/unreleased/SOLR-17161-separate-jetty-solrj.yml 
b/changelog/unreleased/SOLR-17161-separate-jetty-solrj.yml
new file mode 100644
index 00000000000..219a0ba6871
--- /dev/null
+++ b/changelog/unreleased/SOLR-17161-separate-jetty-solrj.yml
@@ -0,0 +1,9 @@
+title: Separate out a new solrj-jetty module, meaning users can opt in to the 
jetty http client only if they need it. Also makes 
ConcurrentUpdateBaseSolrClient client independent.
+type: changed
+authors:
+  - name: Jan Høydahl
+  - name: David Smiley
+  - name: Kevin Risden
+links:
+  - name: SOLR-17161
+    url: https://issues.apache.org/jira/browse/SOLR-17161
diff --git a/gradle/maven/defaults-maven.gradle 
b/gradle/maven/defaults-maven.gradle
index fa47290feef..2b2da08d198 100644
--- a/gradle/maven/defaults-maven.gradle
+++ b/gradle/maven/defaults-maven.gradle
@@ -28,6 +28,7 @@ configure(rootProject) {
         ":solr:cross-dc-manager",
         ":solr:core",
         ":solr:solrj",
+        ":solr:solrj-jetty",
         ":solr:solrj-streaming",
         ":solr:solrj-zookeeper",
         ":solr:test-framework",
diff --git a/settings.gradle b/settings.gradle
index 08cee48a39a..dfbc62b5654 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -38,6 +38,7 @@ includeBuild("build-tools/missing-doclet")
 include ":platform"
 include "solr:api"
 include "solr:solrj"
+include "solr:solrj-jetty"
 include "solr:solrj-zookeeper"
 include "solr:solrj-streaming"
 include "solr:core"
diff --git a/solr/benchmark/build.gradle b/solr/benchmark/build.gradle
index 48c97747f04..eeb67b7dbf7 100644
--- a/solr/benchmark/build.gradle
+++ b/solr/benchmark/build.gradle
@@ -44,6 +44,7 @@ dependencies {
   implementation project(':solr:test-framework')
   implementation project(':solr:core')
   implementation project(':solr:solrj')
+  implementation project(':solr:solrj-jetty')
   implementation project(':solr:solrj-streaming')
 
   implementation libs.apache.lucene.core
diff --git a/solr/core/build.gradle b/solr/core/build.gradle
index 7662b8af3b6..ea97b09eba6 100644
--- a/solr/core/build.gradle
+++ b/solr/core/build.gradle
@@ -48,6 +48,7 @@ dependencies {
 
   api project(':solr:api')
   api project(':solr:solrj')
+  implementation project(':solr:solrj-jetty')
   api project(':solr:solrj-zookeeper')
   api project(':solr:solrj-streaming')
 
diff --git 
a/solr/core/src/java/org/apache/solr/update/StreamingSolrClients.java 
b/solr/core/src/java/org/apache/solr/update/StreamingSolrClients.java
index 1b281abf802..dc0b5d77556 100644
--- a/solr/core/src/java/org/apache/solr/update/StreamingSolrClients.java
+++ b/solr/core/src/java/org/apache/solr/update/StreamingSolrClients.java
@@ -151,8 +151,9 @@ class ErrorReportingConcurrentUpdateSolrClient extends 
ConcurrentUpdateJettySolr
   }
 
   @Override
-  public void onSuccess(Response resp, InputStream respBody) {
-    req.trackRequestResult(resp, respBody, true);
+  public void onSuccess(Object responseMetadata, InputStream respBody) {
+    Response jettyResponse = (Response) responseMetadata;
+    req.trackRequestResult(jettyResponse, respBody, true);
   }
 
   static class Builder extends ConcurrentUpdateJettySolrClient.Builder {
diff --git a/solr/cross-dc-manager/build.gradle 
b/solr/cross-dc-manager/build.gradle
index f037f8b85f9..e6b120190f2 100644
--- a/solr/cross-dc-manager/build.gradle
+++ b/solr/cross-dc-manager/build.gradle
@@ -46,6 +46,7 @@ dependencies {
   runtimeOnly libs.lmax.disruptor
 
   testImplementation project(':solr:test-framework')
+  testImplementation project(':solr:solrj-jetty')
   testImplementation libs.apache.lucene.testframework
   testImplementation libs.carrotsearch.randomizedtesting.runner
   testImplementation libs.junit.junit
diff --git a/solr/cross-dc-manager/gradle.lockfile 
b/solr/cross-dc-manager/gradle.lockfile
index 0525d371c69..6d9a1f75569 100644
--- a/solr/cross-dc-manager/gradle.lockfile
+++ b/solr/cross-dc-manager/gradle.lockfile
@@ -157,11 +157,11 @@ 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=compileClasspath,jarValidation
 org.eclipse.jetty.ee10:jetty-ee10-servlets:12.0.27=solrPlatformLibs
 org.eclipse.jetty.ee10:jetty-ee10-webapp:12.0.27=solrPlatformLibs
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/analysis-extras/build.gradle 
b/solr/modules/analysis-extras/build.gradle
index f7fa13c8f76..5b4d13a038f 100644
--- a/solr/modules/analysis-extras/build.gradle
+++ b/solr/modules/analysis-extras/build.gradle
@@ -28,7 +28,7 @@ dependencies {
   implementation libs.apache.lucene.analysis.icu
   runtimeOnly libs.apache.lucene.analysis.morfologik
   implementation libs.apache.lucene.analysis.opennlp
-  
+
   implementation libs.onnxruntime
   runtimeOnly libs.apache.lucene.analysis.smartcn
   runtimeOnly libs.apache.lucene.analysis.stempel
diff --git a/solr/modules/analysis-extras/gradle.lockfile 
b/solr/modules/analysis-extras/gradle.lockfile
index dbe29ed75be..468e0bf930f 100644
--- a/solr/modules/analysis-extras/gradle.lockfile
+++ b/solr/modules/analysis-extras/gradle.lockfile
@@ -132,22 +132,22 @@ 
org.carrot2:morfologik-stemming:2.1.9=jarValidation,runtimeClasspath,runtimeLibs
 
org.codehaus.woodstox:stax2-api:4.2.2=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-locator:3.1.1=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/clustering/gradle.lockfile 
b/solr/modules/clustering/gradle.lockfile
index b24313a58e9..30dc522b34a 100644
--- a/solr/modules/clustering/gradle.lockfile
+++ b/solr/modules/clustering/gradle.lockfile
@@ -120,22 +120,22 @@ 
org.carrot2:carrot2-core:4.8.1=compileClasspath,jarValidation,runtimeClasspath,r
 
org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-locator:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/cross-dc/build.gradle 
b/solr/modules/cross-dc/build.gradle
index bfcb128ce59..4d90227db79 100644
--- a/solr/modules/cross-dc/build.gradle
+++ b/solr/modules/cross-dc/build.gradle
@@ -32,6 +32,7 @@ dependencies {
   api project(':solr:core')
   implementation project(':solr:solrj')
   implementation project(':solr:solrj-zookeeper')
+  implementation project(':solr:solrj-jetty')
 
   implementation libs.slf4j.api
   implementation libs.apache.kafka.clients
diff --git a/solr/modules/cuvs/gradle.lockfile 
b/solr/modules/cuvs/gradle.lockfile
index f5acba5c1d9..b7bbc6672ae 100644
--- a/solr/modules/cuvs/gradle.lockfile
+++ b/solr/modules/cuvs/gradle.lockfile
@@ -121,22 +121,22 @@ 
org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
 
org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-locator:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/extraction/gradle.lockfile 
b/solr/modules/extraction/gradle.lockfile
index 6d2d54df0c6..1d826f5a82d 100644
--- a/solr/modules/extraction/gradle.lockfile
+++ b/solr/modules/extraction/gradle.lockfile
@@ -125,9 +125,9 @@ 
org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
 
org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/gcs-repository/gradle.lockfile 
b/solr/modules/gcs-repository/gradle.lockfile
index d06f7741d3b..12be94a7176 100644
--- a/solr/modules/gcs-repository/gradle.lockfile
+++ b/solr/modules/gcs-repository/gradle.lockfile
@@ -172,22 +172,22 @@ 
org.codehaus.woodstox:stax2-api:4.2.2=apiHelper,jarValidation,runtimeClasspath,r
 
org.conscrypt:conscrypt-openjdk-uber:2.5.2=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-locator:3.1.1=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/jwt-auth/build.gradle 
b/solr/modules/jwt-auth/build.gradle
index 7cf05aa2cef..80cb694fb3a 100644
--- a/solr/modules/jwt-auth/build.gradle
+++ b/solr/modules/jwt-auth/build.gradle
@@ -19,12 +19,21 @@ apply plugin: 'java-library'
 
 description = 'JWT / OpenID Connect / OAuth2 authentication plugin'
 
+// This is a hacky way to use permitTestUnusedDeclared with bom declared 
dependencies.
+// See 
https://github.com/gradle-dependency-analyze/gradle-dependency-analyze/issues/108
+configurations {
+  constraintsOnly
+  permitTestUnusedDeclared.extendsFrom constraintsOnly
+  implementation.extendsFrom constraintsOnly
+}
+
 dependencies {
-  implementation platform(project(':platform'))
-  implementation platform(libs.fasterxml.jackson.bom)
+  constraintsOnly platform(project(':platform'))
+  constraintsOnly platform(libs.fasterxml.jackson.bom)
 
   implementation project(':solr:core')
   implementation project(':solr:solrj')
+  implementation project(':solr:solrj-jetty')
 
   implementation libs.bc.jose4j
 
diff --git a/solr/modules/langid/gradle.lockfile 
b/solr/modules/langid/gradle.lockfile
index 3977ee35d6c..9a63aaa0d63 100644
--- a/solr/modules/langid/gradle.lockfile
+++ b/solr/modules/langid/gradle.lockfile
@@ -122,22 +122,22 @@ 
org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
 
org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-locator:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/language-models/gradle.lockfile 
b/solr/modules/language-models/gradle.lockfile
index 219a3da0757..99e1a7c62c7 100644
--- a/solr/modules/language-models/gradle.lockfile
+++ b/solr/modules/language-models/gradle.lockfile
@@ -134,22 +134,22 @@ 
org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
 
org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-locator:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/ltr/gradle.lockfile b/solr/modules/ltr/gradle.lockfile
index 27d3b90b3e6..a8952d51b54 100644
--- a/solr/modules/ltr/gradle.lockfile
+++ b/solr/modules/ltr/gradle.lockfile
@@ -120,22 +120,22 @@ 
org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
 
org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-locator:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/opentelemetry/gradle.lockfile 
b/solr/modules/opentelemetry/gradle.lockfile
index 3ab5d6b9260..5212ab9c137 100644
--- a/solr/modules/opentelemetry/gradle.lockfile
+++ b/solr/modules/opentelemetry/gradle.lockfile
@@ -153,22 +153,22 @@ 
org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
 
org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-locator:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/s3-repository/gradle.lockfile 
b/solr/modules/s3-repository/gradle.lockfile
index 27fa7ef3dc5..d5527e8ea27 100644
--- a/solr/modules/s3-repository/gradle.lockfile
+++ b/solr/modules/s3-repository/gradle.lockfile
@@ -157,28 +157,28 @@ 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClass
 
org.eclipse.jetty.ee10:jetty-ee10-servlets:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-webapp:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty.websocket:jetty-websocket-core-client:12.0.12=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.websocket:jetty-websocket-core-common:12.0.12=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.websocket:jetty-websocket-core-server:12.0.12=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.websocket:jetty-websocket-jetty-api:12.0.12=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.websocket:jetty-websocket-jetty-common:12.0.12=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 org.eclipse.jetty:jetty-ee:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-xml:12.0.27=jarValidation,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=apiHelper,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/scripting/gradle.lockfile 
b/solr/modules/scripting/gradle.lockfile
index 84b57b5c595..17c9ca30769 100644
--- a/solr/modules/scripting/gradle.lockfile
+++ b/solr/modules/scripting/gradle.lockfile
@@ -119,22 +119,22 @@ 
org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
 
org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-locator:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/modules/sql/gradle.lockfile b/solr/modules/sql/gradle.lockfile
index b092272424c..3476553f483 100644
--- a/solr/modules/sql/gradle.lockfile
+++ b/solr/modules/sql/gradle.lockfile
@@ -143,22 +143,22 @@ 
org.codehaus.janino:janino:3.1.11=jarValidation,runtimeClasspath,runtimeLibs,tes
 
org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-server:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-api:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
 
org.glassfish.hk2:hk2-locator:3.1.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
diff --git a/solr/solr-ref-guide/build.gradle b/solr/solr-ref-guide/build.gradle
index 2893ab70b4d..3876671f080 100644
--- a/solr/solr-ref-guide/build.gradle
+++ b/solr/solr-ref-guide/build.gradle
@@ -546,6 +546,7 @@ dependencies {
     // For the SolrJ examples
     testImplementation project(":solr:core")
     testImplementation project(":solr:solrj")
+    testImplementation project(":solr:solrj-jetty")
     testRuntimeOnly project(":solr:modules:sql")
     testImplementation project(":solr:test-framework")
     testImplementation libs.junit.junit
diff --git 
a/solr/solr-ref-guide/modules/deployment-guide/pages/basic-authentication-plugin.adoc
 
b/solr/solr-ref-guide/modules/deployment-guide/pages/basic-authentication-plugin.adoc
index 9121f0046fd..f84361e0e94 100644
--- 
a/solr/solr-ref-guide/modules/deployment-guide/pages/basic-authentication-plugin.adoc
+++ 
b/solr/solr-ref-guide/modules/deployment-guide/pages/basic-authentication-plugin.adoc
@@ -339,6 +339,8 @@ It also doesn't work with the many `SolrClient` methods 
which don't consume `Sol
 HttpJettySolrClient & HttpJdkSolrClient support setting the credentials at the 
client level when building it.
 This will ensure all requests issued with this particular client get the Basic 
Authentication headers set.
 
+NOTE: The examples below use `HttpJettySolrClient`, which requires the 
`solr-solrj-jetty` maven dependency.
+
 [source,java]
 ----
 var client = new HttpJettySolrClient.Builder(solrUrl)
diff --git a/solr/solr-ref-guide/modules/deployment-guide/pages/solrj.adoc 
b/solr/solr-ref-guide/modules/deployment-guide/pages/solrj.adoc
index c96421826cc..40f2dea68d9 100644
--- a/solr/solr-ref-guide/modules/deployment-guide/pages/solrj.adoc
+++ b/solr/solr-ref-guide/modules/deployment-guide/pages/solrj.adoc
@@ -54,6 +54,32 @@ For projects built with Gradle, place the following in your 
`build.gradle`:
 compile group: 'org.apache.solr', name: 'solr-solrj', version: 
'{solr-full-version}'
 ----
 
+==== Optional Jetty Module
+
+If you want to use Jetty-based HTTP clients (`HttpJettySolrClient`, 
`ConcurrentUpdateJettySolrClient`,
+`LBJettySolrClient`, or `CloudJettySolrClient`), you need to add the maven 
dependency `solr-solrj-jetty`:
+
+[source,xml,subs="verbatim,attributes"]
+----
+<dependency>
+  <groupId>org.apache.solr</groupId>
+  <artifactId>solr-solrj-jetty</artifactId>
+  <version>{solr-full-version}</version>
+</dependency>
+----
+
+For Gradle:
+
+[source,groovy,subs="attributes"]
+----
+compile group: 'org.apache.solr', name: 'solrj-solrj-jetty', version: 
'{solr-full-version}'
+----
+
+Alternatively, you can use `HttpJdkSolrClient` from the base `solr-solrj` 
artifact,
+which uses Java's built-in HTTP client and has no additional dependencies.
+
+==== Other Optional Modules
+
 If you want to use `CloudSolrClient` _and_ have it talk directly to ZooKeeper, 
you will need to add a dependency on the `solr-solrj-zookeeper` artifact.
 
 If you want to build and use 
xref:query-guide:streaming-expressions.adoc[Streaming Expressions] classes in 
your Java code, you will need to add a dependency on the `solr-solrj-streaming` 
artifact.
@@ -95,11 +121,11 @@ Requests are sent in the form of 
{solr-javadocs}/solrj/org/apache/solr/client/so
 
 `SolrClient` has a few concrete implementations, each geared towards a 
different usage-pattern or resiliency model:
 
-- 
{solr-javadocs}/solrj/org/apache/solr/client/solrj/jetty/HttpJettySolrClient.html[`HttpJettySolrClient`]
 - a general purpose client based on Jetty HttpClient.  Supports HTTP/2 and 
HTTP/1.1, async, non-blocking.  Most used & tested.
+- 
{solr-javadocs}/solrj-jetty/org/apache/solr/client/solrj/jetty/HttpJettySolrClient.html[`HttpJettySolrClient`]
 - a general purpose client based on Jetty HttpClient.  Supports HTTP/2 and 
HTTP/1.1, async, non-blocking.  Most used & tested.
 - 
{solr-javadocs}/solrj/org/apache/solr/client/solrj/impl/HttpJdkSolrClient.html[`HttpJdkSolrClient`]
 - a general purpose client based on JDK HttpClient.  Supports HTTP/2 and 
HTTP/1.1, async, non-blocking.  Has no dependencies.
 - 
{solr-javadocs}/solrj/org/apache/solr/client/solrj/impl/LBSolrClient.html[`LBSolrClient`]
 - an internal client that delegates to other clients pointed at different URLs 
for fail-over/availability.  Adjusts the list of "in-service" nodes based on 
node health.
 - 
{solr-javadocs}/solrj/org/apache/solr/client/solrj/impl/CloudSolrClient.html[`CloudSolrClient`]
 - the ideal client for SolrCloud.  Using the "cluster state", it routes 
requests to the optimal nodes, including splitting out the documents in an 
UpdateRequest to different nodes.
-- 
{solr-javadocs}/solrj/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClient.html[`ConcurrentUpdateJettySolrClient`]
 - geared towards indexing-centric workloads.
+- 
{solr-javadocs}/solrj-jetty/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClient.html[`ConcurrentUpdateJettySolrClient`]
 - geared towards indexing-centric workloads.
 Buffers documents internally before sending larger batches to Solr.
 
 === Common Configuration Options
diff --git 
a/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc 
b/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
index c058e7e47c2..5ae6b996e25 100644
--- 
a/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
+++ 
b/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
@@ -73,7 +73,7 @@ That no longer happens in Solr 10.  It is only used to load a 
configuration as a
 
 * Starting in 10, the Maven POM for SolrJ does not refer to SolrJ modules like 
ZooKeeper.  If you require such functionality, you need to add additional 
dependencies.
 
-* Classes using Jetty HttpClient have been moved to a new package 
`org.apache.solr.solrj.jetty`.
+* Classes using Jetty HttpClient have been moved to a new package 
`org.apache.solr.solrj.jetty`. To use them from your application, you need to 
include the new `solr-solrj-jetty` artifact.
 The following classes were renamed with some refactorings: `Http2SolrClient` 
to `HttpJettySolrClient`, `ConcurrentUpdateHttp2SolrClient` to 
`ConcurrentUpdateJettySolrClient`, `LBHttp2SolrClient` to `LBJettySolrClient`.
 `CloudHttp2SolrClient.Builder` has moved to `CloudSolrClient`; users should 
generally have no need to refer to `CloudHttp2SolrClient` or any class/member 
with "http2" in it.
 The builder will check if Jetty `HttpClient` is available and use that, 
otherwise fallback on a JDK based `HttpClient`.
diff --git a/solr/solrj-jetty/build.gradle b/solr/solrj-jetty/build.gradle
new file mode 100644
index 00000000000..6f3f6eda4e2
--- /dev/null
+++ b/solr/solrj-jetty/build.gradle
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+
+plugins {
+  id 'java-library'
+}
+
+description = 'Solrj-Jetty - Jetty-based HTTP clients for SolrJ'
+
+dependencies {
+  // Core dependencies on solr-solrj (without Jetty)
+  api project(':solr:solrj')
+
+  // Jetty dependencies - moved from solr-solrj
+  api libs.eclipse.jetty.http2.client
+  implementation libs.eclipse.jetty.http2.httpclienttransport
+  implementation libs.eclipse.jetty.http
+  implementation libs.eclipse.jetty.client
+  implementation libs.eclipse.jetty.util
+  implementation libs.eclipse.jetty.io
+  runtimeOnly libs.eclipse.jetty.alpnjavaclient
+
+  // Inherited from solr-solrj
+  implementation libs.slf4j.api
+
+  compileOnly libs.stephenc.jcip.annotations
+
+  // Test dependencies
+
+  testImplementation project(':solr:test-framework')
+  testImplementation project(':solr:core')
+  testImplementation project(':solr:solrj')
+  // Access to solrj test classes (e.g., HttpSolrClientTestBase)
+  testImplementation project(path: ':solr:solrj', configuration: 
'testArtifacts')
+  // Test classes use main classes from this module
+  testImplementation project(':solr:solrj-jetty')
+
+  testImplementation libs.apache.lucene.testframework
+
+  testImplementation libs.carrotsearch.randomizedtesting.runner
+  testImplementation libs.junit.junit
+  testImplementation libs.hamcrest.hamcrest
+
+  testImplementation libs.jakarta.servlet.api
+
+  testImplementation libs.eclipse.jetty.ee10.servlet
+  testRuntimeOnly(libs.eclipse.jetty.alpnjavaserver, {
+    exclude group: "org.eclipse.jetty.alpn", module: "alpn-api"
+  })
+  testRuntimeOnly(libs.apache.log4j.slf4j2impl, {
+    exclude group: "org.apache.logging.log4j", module: "log4j-api"
+  })
+}
diff --git a/solr/solrj/gradle.lockfile b/solr/solrj-jetty/gradle.lockfile
similarity index 82%
copy from solr/solrj/gradle.lockfile
copy to solr/solrj-jetty/gradle.lockfile
index 2af80f358a8..5bfbdee0db7 100644
--- a/solr/solrj/gradle.lockfile
+++ b/solr/solrj-jetty/gradle.lockfile
@@ -4,9 +4,9 @@
 
com.carrotsearch.randomizedtesting:randomizedtesting-runner:2.8.3=jarValidation,testCompileClasspath,testRuntimeClasspath
 com.carrotsearch:hppc:0.10.0=jarValidation,testRuntimeClasspath
 
com.fasterxml.jackson.core:jackson-annotations:2.20=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-com.fasterxml.jackson.core:jackson-core:2.20.1=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-com.fasterxml.jackson.core:jackson-databind:2.20.1=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.20.1=jarValidation,testCompileClasspath,testRuntimeClasspath
+com.fasterxml.jackson.core:jackson-core:2.20.1=apiHelper,jarValidation,runtimeClasspath,testRuntimeClasspath
+com.fasterxml.jackson.core:jackson-databind:2.20.1=apiHelper,jarValidation,runtimeClasspath,testRuntimeClasspath
+com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.20.1=jarValidation,testRuntimeClasspath
 
com.fasterxml.jackson.dataformat:jackson-dataformat-smile:2.20.1=jarValidation,testRuntimeClasspath
 
com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations:2.20.1=jarValidation,testRuntimeClasspath
 
com.fasterxml.jackson:jackson-bom:2.20.1=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
@@ -17,18 +17,12 @@ 
com.github.stephenc.jcip:jcip-annotations:1.0-1=compileClasspath,compileOnlyHelp
 
com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor
 
com.google.auto.value:auto-value-annotations:1.11.0=annotationProcessor,errorprone,testAnnotationProcessor
 
com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor
-com.google.code.findbugs:jsr305:3.0.2=spotless865458226
 
com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor
-com.google.errorprone:error_prone_annotations:2.18.0=spotless865458226
 
com.google.errorprone:error_prone_annotations:2.41.0=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
 
com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor
 
com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor
-com.google.googlejavaformat:google-java-format:1.18.1=spotless865458226
 
com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor
-com.google.guava:failureaccess:1.0.1=spotless865458226
 
com.google.guava:failureaccess:1.0.3=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
-com.google.guava:guava-parent:32.1.1-jre=spotless865458226
-com.google.guava:guava:32.1.1-jre=spotless865458226
 
com.google.guava:guava:33.4.8-jre=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
 
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
 
com.google.j2objc:j2objc-annotations:3.1=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
@@ -37,8 +31,7 @@ 
com.j256.simplemagic:simplemagic:1.17=jarValidation,testRuntimeClasspath
 com.jayway.jsonpath:json-path:2.9.0=jarValidation,testRuntimeClasspath
 com.tdunning:t-digest:3.3=jarValidation,testRuntimeClasspath
 commons-cli:commons-cli:1.10.0=jarValidation,testRuntimeClasspath
-commons-codec:commons-codec:1.19.0=jarValidation,testCompileClasspath,testRuntimeClasspath
-commons-io:commons-io:2.17.0=permitTestUnusedDeclared
+commons-codec:commons-codec:1.19.0=jarValidation,testRuntimeClasspath
 
commons-io:commons-io:2.20.0=jarValidation,testCompileClasspath,testRuntimeClasspath
 
io.dropwizard.metrics:metrics-annotation:4.2.26=jarValidation,testRuntimeClasspath
 io.dropwizard.metrics:metrics-core:4.2.26=jarValidation,testRuntimeClasspath
@@ -46,25 +39,16 @@ 
io.dropwizard.metrics:metrics-jetty12-ee10:4.2.26=jarValidation,testRuntimeClass
 io.dropwizard.metrics:metrics-jetty12:4.2.26=jarValidation,testRuntimeClasspath
 
io.github.eisop:dataflow-errorprone:3.41.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor
 
io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,errorprone,testAnnotationProcessor
-io.netty:netty-buffer:4.1.119.Final=permitTestUnusedDeclared
 
io.netty:netty-buffer:4.2.6.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
 
io.netty:netty-codec-base:4.2.6.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
-io.netty:netty-codec:4.1.119.Final=permitTestUnusedDeclared
-io.netty:netty-common:4.1.119.Final=permitTestUnusedDeclared
 
io.netty:netty-common:4.2.6.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
-io.netty:netty-handler:4.1.119.Final=permitTestUnusedDeclared
 
io.netty:netty-handler:4.2.6.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
-io.netty:netty-resolver:4.1.119.Final=permitTestUnusedDeclared
 
io.netty:netty-resolver:4.2.6.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
-io.netty:netty-tcnative-boringssl-static:2.0.70.Final=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
-io.netty:netty-tcnative-classes:2.0.70.Final=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
-io.netty:netty-transport-classes-epoll:4.1.119.Final=permitTestUnusedDeclared
+io.netty:netty-tcnative-boringssl-static:2.0.70.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
+io.netty:netty-tcnative-classes:2.0.70.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
 
io.netty:netty-transport-classes-epoll:4.2.6.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
-io.netty:netty-transport-native-epoll:4.1.119.Final=permitTestUnusedDeclared
 
io.netty:netty-transport-native-epoll:4.2.6.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
-io.netty:netty-transport-native-unix-common:4.1.119.Final=permitTestUnusedDeclared
 
io.netty:netty-transport-native-unix-common:4.2.6.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
-io.netty:netty-transport:4.1.119.Final=permitTestUnusedDeclared
 
io.netty:netty-transport:4.2.6.Final=jarValidation,testCompileClasspath,testRuntimeClasspath
 
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-incubator:2.22.0-alpha=jarValidation,testRuntimeClasspath
 
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:2.22.0=jarValidation,testRuntimeClasspath
@@ -91,7 +75,6 @@ 
jakarta.validation:jakarta.validation-api:3.0.2=jarValidation,testRuntimeClasspa
 
jakarta.ws.rs:jakarta.ws.rs-api:3.1.0=apiHelper,jarValidation,runtimeClasspath,testRuntimeClasspath
 
javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor
 junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath
-net.bytebuddy:byte-buddy:1.18.3=jarValidation,testCompileClasspath,testRuntimeClasspath
 org.antlr:antlr4-runtime:4.13.2=jarValidation,testRuntimeClasspath
 org.apache.commons:commons-exec:1.5.0=jarValidation,testRuntimeClasspath
 org.apache.commons:commons-lang3:3.20.0=jarValidation,testRuntimeClasspath
@@ -99,8 +82,8 @@ 
org.apache.commons:commons-math3:3.6.1=jarValidation,testRuntimeClasspath
 
org.apache.curator:curator-client:5.9.0=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.apache.curator:curator-framework:5.9.0=jarValidation,testCompileClasspath,testRuntimeClasspath
 org.apache.curator:curator-test:5.9.0=jarValidation,testRuntimeClasspath
-org.apache.httpcomponents:httpclient:4.5.14=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.apache.httpcomponents:httpcore:4.4.16=jarValidation,testCompileClasspath,testRuntimeClasspath
+org.apache.httpcomponents:httpclient:4.5.14=jarValidation,testRuntimeClasspath
+org.apache.httpcomponents:httpcore:4.4.16=jarValidation,testRuntimeClasspath
 org.apache.httpcomponents:httpmime:4.5.14=jarValidation,testRuntimeClasspath
 org.apache.logging.log4j:log4j-api:2.25.3=jarValidation,testRuntimeClasspath
 org.apache.logging.log4j:log4j-core:2.25.3=jarValidation,testRuntimeClasspath
@@ -127,14 +110,11 @@ 
org.apache.lucene:lucene-spatial-extras:10.3.2=jarValidation,testRuntimeClasspat
 org.apache.lucene:lucene-spatial3d:10.3.2=jarValidation,testRuntimeClasspath
 org.apache.lucene:lucene-suggest:10.3.2=jarValidation,testRuntimeClasspath
 
org.apache.lucene:lucene-test-framework:10.3.2=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.apache.yetus:audience-annotations:0.12.0=permitTestUnusedDeclared
-org.apache.zookeeper:zookeeper-jute:3.9.4=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
-org.apache.zookeeper:zookeeper:3.9.4=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.apache.zookeeper:zookeeper-jute:3.9.4=jarValidation,testCompileClasspath,testRuntimeClasspath
+org.apache.zookeeper:zookeeper:3.9.4=jarValidation,testCompileClasspath,testRuntimeClasspath
 org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
-org.checkerframework:checker-qual:3.33.0=spotless865458226
 org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.ee10:jetty-ee10-webapp:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-client:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-common:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
@@ -145,7 +125,6 @@ 
org.eclipse.jetty:jetty-alpn-java-client:12.0.27=compileClasspath,jarValidation,
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-ee:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-http:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-io:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
@@ -153,7 +132,6 @@ 
org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,test
 
org.eclipse.jetty:jetty-server:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty:jetty-util:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-xml:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=jarValidation,testRuntimeClasspath
 org.glassfish.hk2:hk2-api:3.1.1=jarValidation,testRuntimeClasspath
 org.glassfish.hk2:hk2-locator:3.1.1=jarValidation,testRuntimeClasspath
@@ -173,17 +151,13 @@ 
org.junit.jupiter:junit-jupiter-api:5.6.2=jarValidation,testRuntimeClasspath
 
org.junit.platform:junit-platform-commons:1.6.2=jarValidation,testRuntimeClasspath
 org.junit:junit-bom:5.6.2=jarValidation,testRuntimeClasspath
 org.locationtech.spatial4j:spatial4j:0.8=jarValidation,testRuntimeClasspath
-org.mockito:mockito-core:5.19.0=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.mockito:mockito-subclass:5.19.0=jarValidation,testRuntimeClasspath
-org.objenesis:objenesis:3.3=jarValidation,testRuntimeClasspath
 org.opentest4j:opentest4j:1.2.0=jarValidation,testRuntimeClasspath
 org.ow2.asm:asm-commons:9.8=jarValidation,testRuntimeClasspath
 org.ow2.asm:asm-tree:9.8=jarValidation,testRuntimeClasspath
 org.ow2.asm:asm:9.8=jarValidation,testRuntimeClasspath
 
org.pcollections:pcollections:4.0.1=annotationProcessor,errorprone,testAnnotationProcessor
 
org.semver4j:semver4j:6.0.0=apiHelper,jarValidation,runtimeClasspath,testRuntimeClasspath
-org.slf4j:jcl-over-slf4j:2.0.17=jarValidation,runtimeClasspath,testRuntimeClasspath
-org.slf4j:slf4j-api:2.0.13=permitTestUnusedDeclared
+org.slf4j:jcl-over-slf4j:2.0.17=apiHelper,jarValidation,runtimeClasspath,testRuntimeClasspath
 
org.slf4j:slf4j-api:2.0.17=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.xerial.snappy:snappy-java:1.1.10.8=jarValidation,testRuntimeClasspath
-empty=apiHelperTest,compileOnlyHelperTest,missingdoclet,openApiSpecFile,permitAggregatorUse,permitTestAggregatorUse,permitTestUsedUndeclared,permitUnusedDeclared,permitUsedUndeclared,signatures
+empty=apiHelperTest,compileOnlyHelperTest,missingdoclet,permitAggregatorUse,permitTestAggregatorUse,permitTestUnusedDeclared,permitTestUsedUndeclared,permitUnusedDeclared,permitUsedUndeclared,signatures
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/AuthenticationStoreHolder.java
 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/AuthenticationStoreHolder.java
similarity index 100%
rename from 
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/AuthenticationStoreHolder.java
rename to 
solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/AuthenticationStoreHolder.java
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/CloudJettySolrClient.java
 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/CloudJettySolrClient.java
similarity index 100%
rename from 
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/CloudJettySolrClient.java
rename to 
solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/CloudJettySolrClient.java
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClient.java
 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClient.java
similarity index 85%
rename from 
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClient.java
rename to 
solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClient.java
index 2ac6577d8b2..2275976eefc 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClient.java
+++ 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClient.java
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.jetty;
 
 import java.io.Closeable;
 import java.io.IOException;
+import java.io.InputStream;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.Locale;
@@ -35,6 +36,7 @@ import org.apache.solr.common.params.UpdateParams;
 import org.eclipse.jetty.client.InputStreamResponseListener;
 import org.eclipse.jetty.client.OutputStreamRequestContent;
 import org.eclipse.jetty.client.Request;
+import org.eclipse.jetty.client.Response;
 import org.eclipse.jetty.http.HttpMethod;
 
 /** A ConcurrentUpdate SolrClient using {@link HttpJettySolrClient}. */
@@ -73,9 +75,9 @@ public class ConcurrentUpdateJettySolrClient extends 
ConcurrentUpdateBaseSolrCli
   }
 
   @Override
-  protected InputStreamResponseListener doSendUpdateStream(
-      ConcurrentUpdateBaseSolrClient.Update update) throws IOException, 
InterruptedException {
-    InputStreamResponseListener responseListener;
+  protected StreamingResponse 
doSendUpdateStream(ConcurrentUpdateBaseSolrClient.Update update)
+      throws IOException, InterruptedException {
+    InputStreamResponseListener jettyListener;
     try (OutStream out = initOutStream(basePath, update.request(), 
update.collection())) {
       ConcurrentUpdateBaseSolrClient.Update upd = update;
       while (upd != null) {
@@ -91,9 +93,9 @@ public class ConcurrentUpdateJettySolrClient extends 
ConcurrentUpdateBaseSolrCli
         notifyQueueAndRunnersIfEmptyQueue();
         upd = queue.poll(pollQueueTimeMillis, TimeUnit.MILLISECONDS);
       }
-      responseListener = out.getResponseListener();
+      jettyListener = out.getResponseListener();
     }
-    return responseListener;
+    return new JettyStreamingResponse(jettyListener);
   }
 
   private static class OutStream implements Closeable {
@@ -143,6 +145,40 @@ public class ConcurrentUpdateJettySolrClient extends 
ConcurrentUpdateBaseSolrCli
     }
   }
 
+  /**
+   * Jetty-specific implementation of StreamingResponse that wraps Jetty's
+   * InputStreamResponseListener.
+   */
+  private static class JettyStreamingResponse implements StreamingResponse {
+    private final InputStreamResponseListener listener;
+    private Response response;
+
+    JettyStreamingResponse(InputStreamResponseListener listener) {
+      this.listener = listener;
+    }
+
+    @Override
+    public int awaitResponse(long timeoutMillis) throws Exception {
+      response = listener.get(timeoutMillis, TimeUnit.MILLISECONDS);
+      return response.getStatus();
+    }
+
+    @Override
+    public InputStream getInputStream() {
+      return listener.getInputStream();
+    }
+
+    @Override
+    public Object getUnderlyingResponse() {
+      return response;
+    }
+
+    @Override
+    public void close() throws IOException {
+      // Jetty handles cleanup automatically
+    }
+  }
+
   private OutStream initOutStream(String baseUrl, UpdateRequest updateRequest, 
String collection)
       throws IOException {
     String contentType = client.getRequestWriter().getUpdateContentType();
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/HttpJettySolrClient.java
 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/HttpJettySolrClient.java
similarity index 100%
rename from 
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/HttpJettySolrClient.java
rename to 
solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/HttpJettySolrClient.java
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/HttpListenerFactory.java
 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/HttpListenerFactory.java
similarity index 100%
rename from 
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/HttpListenerFactory.java
rename to 
solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/HttpListenerFactory.java
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/LBJettySolrClient.java 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/LBJettySolrClient.java
similarity index 100%
rename from 
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/LBJettySolrClient.java
rename to 
solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/LBJettySolrClient.java
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientCustomizer.java
 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientCustomizer.java
similarity index 100%
rename from 
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientCustomizer.java
rename to 
solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientCustomizer.java
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/SSLConfig.java 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/SSLConfig.java
similarity index 100%
rename from 
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/SSLConfig.java
rename to 
solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/SSLConfig.java
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/SolrBasicAuthentication.java
 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/SolrBasicAuthentication.java
similarity index 100%
rename from 
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/SolrBasicAuthentication.java
rename to 
solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/SolrBasicAuthentication.java
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/package-info.java 
b/solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/package-info.java
similarity index 100%
rename from 
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/package-info.java
rename to 
solr/solrj-jetty/src/java/org/apache/solr/client/solrj/jetty/package-info.java
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientBadInputTest.java
 
b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientBadInputTest.java
similarity index 100%
rename from 
solr/solrj/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientBadInputTest.java
rename to 
solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientBadInputTest.java
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientMultiCollectionTest.java
 
b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientMultiCollectionTest.java
similarity index 100%
rename from 
solr/solrj/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientMultiCollectionTest.java
rename to 
solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientMultiCollectionTest.java
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientTest.java
 
b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientTest.java
similarity index 99%
rename from 
solr/solrj/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientTest.java
rename to 
solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientTest.java
index bb2d3c5cef8..9c89cf3d27b 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientTest.java
+++ 
b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientTest.java
@@ -47,7 +47,6 @@ import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.apache.solr.embedded.JettyConfig;
 import org.apache.solr.util.SolrJettyTestRule;
-import org.eclipse.jetty.client.Response;
 import org.eclipse.jetty.ee10.servlet.ServletHolder;
 import org.junit.BeforeClass;
 import org.junit.ClassRule;
@@ -363,7 +362,7 @@ public class ConcurrentUpdateJettySolrClientTest extends 
SolrTestCaseJ4 {
     }
 
     @Override
-    public void onSuccess(Response resp, InputStream respBody) {
+    public void onSuccess(Object responseMetadata, InputStream respBody) {
       successCounter.incrementAndGet();
     }
 
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientCompatibilityTest.java
 
b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientCompatibilityTest.java
similarity index 100%
rename from 
solr/solrj/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientCompatibilityTest.java
rename to 
solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientCompatibilityTest.java
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientProxyTest.java
 
b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientProxyTest.java
similarity index 100%
rename from 
solr/solrj/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientProxyTest.java
rename to 
solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientProxyTest.java
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientTest.java
 
b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientTest.java
similarity index 100%
rename from 
solr/solrj/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientTest.java
rename to 
solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientTest.java
diff --git a/solr/solrj-streaming/build.gradle 
b/solr/solrj-streaming/build.gradle
index 4ea3110e203..ee33ad8041a 100644
--- a/solr/solrj-streaming/build.gradle
+++ b/solr/solrj-streaming/build.gradle
@@ -21,6 +21,7 @@ description = 'Solrj-Streaming - SolrJ requiring Streaming 
Expressions'
 
 dependencies {
   implementation project(':solr:solrj')
+  implementation project(':solr:solrj-jetty')
 
   // declare dependencies we use even though already declared by solrj-core
   implementation libs.slf4j.api
diff --git a/solr/solrj-zookeeper/build.gradle 
b/solr/solrj-zookeeper/build.gradle
index c4c776095d1..e04f230b30e 100644
--- a/solr/solrj-zookeeper/build.gradle
+++ b/solr/solrj-zookeeper/build.gradle
@@ -31,6 +31,7 @@ dependencies {
     }
 
     implementation project(':solr:solrj')
+    implementation project(':solr:solrj-jetty')
     implementation project(':solr:api')
 
     implementation libs.slf4j.api
diff --git a/solr/solrj/build.gradle b/solr/solrj/build.gradle
index 70106db2a80..f2a9e8b0445 100644
--- a/solr/solrj/build.gradle
+++ b/solr/solrj/build.gradle
@@ -36,14 +36,6 @@ dependencies {
   implementation libs.slf4j.api
   runtimeOnly libs.slf4j.jcloverslf4j
 
-  api libs.eclipse.jetty.http2.client
-  implementation libs.eclipse.jetty.http2.httpclienttransport
-  implementation libs.eclipse.jetty.http
-  implementation libs.eclipse.jetty.client
-  implementation libs.eclipse.jetty.util
-  implementation libs.eclipse.jetty.io
-  runtimeOnly libs.eclipse.jetty.alpnjavaclient
-
   compileOnly libs.stephenc.jcip.annotations
 
   testImplementation libs.apache.httpcomponents.httpclient
@@ -52,6 +44,7 @@ dependencies {
   testImplementation project(':solr:test-framework')
   testImplementation project(':solr:core')
   testImplementation project(':solr:solrj')
+  testImplementation project(':solr:solrj-jetty')
 
   // ideally ZK centric tests move to solrj-zookeeper but sometimes we depend 
on ZK here anyway
   testImplementation project(':solr:solrj-zookeeper')
@@ -73,13 +66,28 @@ dependencies {
 
   testImplementation libs.jakarta.servlet.api
 
+  // Jetty test dependencies - needed for solrj's own tests
+  // Client libraries
+  testImplementation libs.eclipse.jetty.http2.client
+  permitTestUnusedDeclared libs.eclipse.jetty.http2.client
+  testImplementation libs.eclipse.jetty.client
+  permitTestUnusedDeclared libs.eclipse.jetty.client
+  testImplementation libs.eclipse.jetty.http
+  permitTestUnusedDeclared libs.eclipse.jetty.http
+  // Server libraries
   testImplementation libs.eclipse.jetty.server
+  permitTestUnusedDeclared libs.eclipse.jetty.server
   testImplementation libs.eclipse.jetty.ee10.servlet
+  permitTestUnusedDeclared libs.eclipse.jetty.ee10.servlet
   testImplementation libs.eclipse.jetty.ee10.webapp
+  permitTestUnusedDeclared libs.eclipse.jetty.ee10.webapp
   testRuntimeOnly(libs.eclipse.jetty.alpnjavaserver, {
     exclude group: "org.eclipse.jetty.alpn", module: "alpn-api"
   })
   testImplementation libs.eclipse.jetty.session
+  permitTestUnusedDeclared libs.eclipse.jetty.session
+  permitTestUnusedDeclared libs.jakarta.servlet.api
+
   testImplementation(libs.mockito.core, {
     exclude group: "net.bytebuddy", module: "byte-buddy-agent"
   })
@@ -162,3 +170,22 @@ sourceSets {
     }
   }
 }
+
+// Configuration to share test classes with other modules (solrj-jetty)
+configurations {
+  testArtifacts {
+    canBeConsumed = true
+    canBeResolved = false
+  }
+}
+
+// Create a JAR of test classes
+task testJar(type: Jar) {
+  archiveClassifier = 'tests'
+  from sourceSets.test.output
+}
+
+// Make test classes available as an artifact
+artifacts {
+  testArtifacts testJar
+}
diff --git a/solr/solrj/gradle.lockfile b/solr/solrj/gradle.lockfile
index 2af80f358a8..2da955a56c5 100644
--- a/solr/solrj/gradle.lockfile
+++ b/solr/solrj/gradle.lockfile
@@ -86,7 +86,7 @@ 
io.sgr:s2-geometry-library-java:1.0.0=jarValidation,testRuntimeClasspath
 
io.swagger.core.v3:swagger-annotations-jakarta:2.2.22=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 
jakarta.annotation:jakarta.annotation-api:2.1.1=jarValidation,testRuntimeClasspath
 jakarta.inject:jakarta.inject-api:2.0.1=jarValidation,testRuntimeClasspath
-jakarta.servlet:jakarta.servlet-api:6.1.0=jarValidation,testCompileClasspath,testRuntimeClasspath
+jakarta.servlet:jakarta.servlet-api:6.1.0=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
 
jakarta.validation:jakarta.validation-api:3.0.2=jarValidation,testRuntimeClasspath
 
jakarta.ws.rs:jakarta.ws.rs-api:3.1.0=apiHelper,jarValidation,runtimeClasspath,testRuntimeClasspath
 
javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor
@@ -133,27 +133,27 @@ 
org.apache.zookeeper:zookeeper:3.9.4=jarValidation,permitTestUnusedDeclared,test
 org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
 org.checkerframework:checker-qual:3.33.0=spotless865458226
 org.codehaus.woodstox:stax2-api:4.2.2=jarValidation,testRuntimeClasspath
-org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.ee10:jetty-ee10-webapp:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.ee10:jetty-ee10-webapp:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.27=jarValidation,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
 
org.eclipse.jetty.http2:jetty-http2-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-java-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-java-client:12.0.27=jarValidation,testRuntimeClasspath
 
org.eclipse.jetty:jetty-alpn-java-server:12.0.27=jarValidation,testRuntimeClasspath
 org.eclipse.jetty:jetty-alpn-server:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-client:12.0.27=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-ee:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-client:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-ee:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
 org.eclipse.jetty:jetty-rewrite:12.0.27=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-security:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-server:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-session:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.27=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-xml:12.0.27=jarValidation,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-security:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-server:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-session:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-xml:12.0.27=jarValidation,permitTestUnusedDeclared,testCompileClasspath,testRuntimeClasspath
 
org.glassfish.hk2.external:aopalliance-repackaged:3.1.1=jarValidation,testRuntimeClasspath
 org.glassfish.hk2:hk2-api:3.1.1=jarValidation,testRuntimeClasspath
 org.glassfish.hk2:hk2-locator:3.1.1=jarValidation,testRuntimeClasspath
@@ -183,7 +183,6 @@ org.ow2.asm:asm:9.8=jarValidation,testRuntimeClasspath
 
org.pcollections:pcollections:4.0.1=annotationProcessor,errorprone,testAnnotationProcessor
 
org.semver4j:semver4j:6.0.0=apiHelper,jarValidation,runtimeClasspath,testRuntimeClasspath
 
org.slf4j:jcl-over-slf4j:2.0.17=jarValidation,runtimeClasspath,testRuntimeClasspath
-org.slf4j:slf4j-api:2.0.13=permitTestUnusedDeclared
-org.slf4j:slf4j-api:2.0.17=apiHelper,compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
+org.slf4j:slf4j-api:2.0.17=apiHelper,compileClasspath,jarValidation,permitTestUnusedDeclared,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.xerial.snappy:snappy-java:1.1.10.8=jarValidation,testRuntimeClasspath
 
empty=apiHelperTest,compileOnlyHelperTest,missingdoclet,openApiSpecFile,permitAggregatorUse,permitTestAggregatorUse,permitTestUsedUndeclared,permitUnusedDeclared,permitUsedUndeclared,signatures
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateBaseSolrClient.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateBaseSolrClient.java
index 16bac664891..25f24de0ed8 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateBaseSolrClient.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateBaseSolrClient.java
@@ -20,6 +20,7 @@ package org.apache.solr.client.solrj.impl;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
+import java.net.HttpURLConnection;
 import java.util.ArrayDeque;
 import java.util.Iterator;
 import java.util.Queue;
@@ -42,9 +43,6 @@ import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.IOUtils;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SolrNamedThreadFactory;
-import org.eclipse.jetty.client.InputStreamResponseListener;
-import org.eclipse.jetty.client.Response;
-import org.eclipse.jetty.http.HttpStatus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.MDC;
@@ -246,15 +244,14 @@ public abstract class ConcurrentUpdateBaseSolrClient 
extends SolrClient {
               break;
             }
 
-            InputStreamResponseListener responseListener = null;
+            StreamingResponse responseListener = null;
             responseListener = doSendUpdateStream(update);
 
             // just wait for the headers, so the idle timeout is sensible
-            Response response = responseListener.get(idleTimeoutMillis, 
TimeUnit.MILLISECONDS);
+            int statusCode = responseListener.awaitResponse(idleTimeoutMillis);
             rspBody = responseListener.getInputStream();
 
-            int statusCode = response.getStatus();
-            if (statusCode != HttpStatus.OK_200) {
+            if (statusCode != HttpURLConnection.HTTP_OK) {
               SolrException solrExc;
               Object remoteError = null;
               // parse out the metadata from the SolrException
@@ -271,7 +268,7 @@ public abstract class ConcurrentUpdateBaseSolrClient 
extends SolrClient {
 
               handleError(solrExc);
             } else {
-              onSuccess(response, rspBody);
+              onSuccess(responseListener.getUnderlyingResponse(), rspBody);
             }
             stallDetection.incrementProcessedCount();
 
@@ -290,7 +287,7 @@ public abstract class ConcurrentUpdateBaseSolrClient 
extends SolrClient {
     }
   }
 
-  protected abstract InputStreamResponseListener doSendUpdateStream(Update 
update)
+  protected abstract StreamingResponse doSendUpdateStream(Update update)
       throws IOException, InterruptedException;
 
   private void consumeFully(InputStream is) {
@@ -550,9 +547,11 @@ public abstract class ConcurrentUpdateBaseSolrClient 
extends SolrClient {
   /**
    * Intended to be used as an extension point for doing post-processing after 
a request completes.
    *
+   * @param responseMetadata implementation-specific response object (e.g., 
Jetty Response), may be
+   *     null
    * @param respBody the body of the response, subclasses must not close this 
stream.
    */
-  public void onSuccess(Response resp, InputStream respBody) {
+  public void onSuccess(Object responseMetadata, InputStream respBody) {
     // no-op by design, override to add functionality
   }
 
@@ -773,4 +772,52 @@ public abstract class ConcurrentUpdateBaseSolrClient 
extends SolrClient {
       return client;
     }
   }
+
+  /**
+   * Abstraction for streaming HTTP response handling in {@link 
ConcurrentUpdateBaseSolrClient}.
+   * This allows the base class to work with different HTTP client 
implementations without direct
+   * dependencies on specific client libraries (e.g., Jetty, JDK HttpClient).
+   *
+   * <p>Implementations should wrap the underlying HTTP client's response 
mechanism and provide
+   * access to response status and body stream.
+   */
+  public interface StreamingResponse extends AutoCloseable {
+
+    /**
+     * Wait for response headers to arrive and return the HTTP status code.
+     *
+     * @param timeoutMillis maximum time to wait in milliseconds
+     * @return HTTP status code (e.g., 200, 404, 500)
+     * @throws Exception if timeout occurs, connection fails, or other error
+     */
+    int awaitResponse(long timeoutMillis) throws Exception;
+
+    /**
+     * Get the response body as an InputStream for parsing.
+     *
+     * <p>This should be called after {@link #awaitResponse(long)} has 
successfully returned.
+     *
+     * @return response body stream, never null
+     */
+    InputStream getInputStream();
+
+    /**
+     * Get the underlying implementation-specific response object.
+     *
+     * <p>This is used by the {@link 
ConcurrentUpdateBaseSolrClient#onSuccess(Object, InputStream)}
+     * hook method to allow subclasses access to implementation-specific 
metadata. The returned
+     * object type depends on the HTTP client implementation being used.
+     *
+     * @return underlying response object (implementation-specific), may be 
null
+     */
+    Object getUnderlyingResponse();
+
+    /**
+     * Release resources associated with this response.
+     *
+     * @throws IOException if cleanup fails
+     */
+    @Override
+    void close() throws IOException;
+  }
 }
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientCustomizer.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientCustomizer.java
index 98dc2d57564..e61213df8c5 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientCustomizer.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientCustomizer.java
@@ -22,8 +22,9 @@ import org.apache.solr.client.solrj.SolrClient;
  * A config hook for post-configuration of a {@linkplain SolrClient} by its 
builder. It is not
  * supported by all builders.
  *
+ * <p>Implementations can be specified via system property in some client 
builders.
+ *
  * @param <T> type of SolrClient this customizer targets
- * @see 
org.apache.solr.client.solrj.jetty.HttpJettySolrClient#CLIENT_CUSTOMIZER_SYSPROP
  * @lucene.experimental
  */
 public interface SolrClientCustomizer<T extends SolrClient> {
diff --git a/solr/test-framework/build.gradle b/solr/test-framework/build.gradle
index dfe4044e476..9a6ca030350 100644
--- a/solr/test-framework/build.gradle
+++ b/solr/test-framework/build.gradle
@@ -32,6 +32,7 @@ dependencies {
 
   api project(':solr:core')
   api project(':solr:solrj')
+  api project(':solr:solrj-jetty')
   api project(':solr:api')
   implementation project(':solr:solrj-zookeeper')
 

Reply via email to