diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpSessionWrapper.java b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpSessionWrapper.java
index dba883e..821dbe7 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpSessionWrapper.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/handler/HttpSessionWrapper.java
@@ -147,6 +147,10 @@
 
     /**
      * Creates a new {@link HttpSessionWrapper} instance.
+     * @param session The internal session
+     * @param context The servlet context
+     * @param config The configuration
+     * @param terminate Whether to terminate the session
      */
     public HttpSessionWrapper(final HttpSession session,
             final ExtServletContext context,
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistry.java b/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistry.java
index 9deee6b..83fc1b2 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistry.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ErrorPageRegistry.java
@@ -241,6 +241,7 @@
     /**
      * Remove the servlet from error handling
      * @param info The servlet info.
+     * @param destroy Unused
      */
     public synchronized void removeServlet(@NotNull final ServletInfo info, final boolean destroy)
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/registry/EventListenerRegistry.java b/http/base/src/main/java/org/apache/felix/http/base/internal/registry/EventListenerRegistry.java
index 1efabfd..3d541f0 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/registry/EventListenerRegistry.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/registry/EventListenerRegistry.java
@@ -126,8 +126,7 @@
 
     /**
      * Remove listeners
-     *
-     * @param info
+     * @param info The listener info
      */
     public void removeListeners(@NotNull final ListenerInfo info)
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/registry/HandlerRegistry.java b/http/base/src/main/java/org/apache/felix/http/base/internal/registry/HandlerRegistry.java
index 82b0c0a..869bfe1 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/registry/HandlerRegistry.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/registry/HandlerRegistry.java
@@ -120,6 +120,7 @@
 
     /**
      * Add a new context registration.
+     * @param registry The registry
      */
     public void add(@NotNull PerContextHandlerRegistry registry)
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/registry/PerContextHandlerRegistry.java b/http/base/src/main/java/org/apache/felix/http/base/internal/registry/PerContextHandlerRegistry.java
index a7dfe63..7867391 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/registry/PerContextHandlerRegistry.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/registry/PerContextHandlerRegistry.java
@@ -65,6 +65,7 @@
 
     /**
      * Default http service registry
+     * @param config The configuration
      */
     public PerContextHandlerRegistry(@NotNull final HttpConfig config)
     {
@@ -78,6 +79,7 @@
     /**
      * Registry for a servlet context helper (whiteboard support)
      * @param info The servlet context helper info
+     * @param config The configuration
      */
     public PerContextHandlerRegistry(@NotNull final ServletContextHelperInfo info, @NotNull final HttpConfig config)
     {
@@ -250,7 +252,7 @@
 
     /**
      * Register listeners
-     * @param listenerHandler
+     * @param listenerHandler The listener handler
      */
     public void registerListeners(@NotNull final ListenerHandler listenerHandler)
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java b/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java
index 78ebd0c..649fc2e 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/registry/ServletRegistry.java
@@ -251,6 +251,7 @@
     /**
      * Remove a servlet
      * @param info The servlet info
+     * @param destroy Unused
      */
     public synchronized void removeServlet(@NotNull final ServletInfo info, final boolean destroy)
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/AbstractInfo.java b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/AbstractInfo.java
index cfa29d3..dd86bb4 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/AbstractInfo.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/AbstractInfo.java
@@ -101,6 +101,8 @@
 
     /**
      * Compare two info objects 
+     * @param other The other info object
+     * @return {@code true} if the objects are the same
      */
     public boolean isSame(final AbstractInfo<T> other) {
         if (this.serviceId != other.serviceId) {
@@ -183,6 +185,9 @@
 
     /**
      * Get the init parameters.
+     * @param ref The service reference
+     * @param prefix The prefix
+     * @return The map of init parameters
      */
     protected Map<String, String> getInitParams(final ServiceReference<T> ref, final String prefix)
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/FilterInfo.java b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/FilterInfo.java
index 2e25c44..0c75f80 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/FilterInfo.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/FilterInfo.java
@@ -205,6 +205,7 @@
 
     /**
      * Returns an immutable map of the init parameters.
+     * @return The init parameters
      */
     public Map<String, String> getInitParameters()
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/PreprocessorInfo.java b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/PreprocessorInfo.java
index 46c3a15..ce12ed6 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/PreprocessorInfo.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/PreprocessorInfo.java
@@ -49,6 +49,7 @@
 
     /**
      * Returns an immutable map of the init parameters.
+     * @return The init parameters
      */
     public Map<String, String> getInitParameters()
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletContextHelperInfo.java b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletContextHelperInfo.java
index 5a7b068..cfafee9 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletContextHelperInfo.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletContextHelperInfo.java
@@ -102,7 +102,7 @@
 
     /**
      * Returns an unmodifiable map of the parameters.
-     * @return
+     * @return The init parameters
      */
     public Map<String, String> getInitParameters()
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
index db40f06..ca9b6e3 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/ServletInfo.java
@@ -175,6 +175,9 @@
 
     /**
      * Constructor for Http Service
+     * @param name The servlet name
+     * @param pattern The pattern
+     * @param initParams The init parameters
      */
     public ServletInfo(final String name,
             final String pattern,
@@ -236,7 +239,7 @@
 
     /**
      * Returns an unmodifiable map of the init parameters.
-     * @return
+     * @return The init parameters
      */
     public Map<String, String> getInitParameters()
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ErrorPageDTOBuilder.java b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ErrorPageDTOBuilder.java
index af4169a..a76b03b 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ErrorPageDTOBuilder.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ErrorPageDTOBuilder.java
@@ -48,6 +48,7 @@
     /**
      * Build a servlet DTO from a servlet info
      * @param info The servlet info
+     * @param failed Whether the servlet registration failed
      * @return A servlet DTO
      */
     public static ErrorPageDTO build(final ServletInfo info, final boolean failed)
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/FilterDTOBuilder.java b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/FilterDTOBuilder.java
index 528dcef..e1b6e45 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/FilterDTOBuilder.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/FilterDTOBuilder.java
@@ -51,6 +51,7 @@
     /**
      * Build a filter DTO from a filter handler
      * @param handler The filter handler
+     * @param reason The reason for the failure
      * @return A filter DTO
      */
     public static @NotNull FilterDTO build(@NotNull final FilterHandler handler, final int reason)
@@ -66,6 +67,7 @@
     /**
      * Build a filter DTO from a filter info
      * @param info The filter info
+     * @param reason The reason for the failure
      * @return A filter DTO
      */
     public static @NotNull FilterDTO build(@NotNull final FilterInfo info, final int reason)
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/PreprocessorDTOBuilder.java b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/PreprocessorDTOBuilder.java
index 2964719..0bf7dac 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/PreprocessorDTOBuilder.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/PreprocessorDTOBuilder.java
@@ -30,6 +30,7 @@
     /**
      * Build a preprocessor DTO from a filter info
      * @param info The preprocessor info
+     * @param reason The reason for the failure or -1 if the preprocessor was registered successfully
      * @return A preprocessor DTO
      */
     public static @NotNull PreprocessorDTO build(@NotNull final PreprocessorInfo info, final int reason)
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ResourceDTOBuilder.java b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ResourceDTOBuilder.java
index 579f3ba..70e137a 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ResourceDTOBuilder.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ResourceDTOBuilder.java
@@ -49,6 +49,7 @@
     /**
      * Build a servlet DTO from a servlet info
      * @param info The servlet info
+     * @param failed Whether the registration failed
      * @return A servlet DTO
      */
     public static ResourceDTO build(final ServletInfo info, final boolean failed)
@@ -65,6 +66,7 @@
     /**
      * Build a servlet DTO from a servlet info
      * @param info The servlet info
+     * @param failed Whether the registration failed
      * @return A servlet DTO
      */
     public static ResourceDTO build(final ResourceInfo info, final boolean failed)
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ServletDTOBuilder.java b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ServletDTOBuilder.java
index 9346aad..8ee0fd6 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ServletDTOBuilder.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/runtime/dto/ServletDTOBuilder.java
@@ -44,6 +44,7 @@
     /**
      * Build a servlet DTO from a servlet info
      * @param info The servlet info
+     * @param reason The reason for the failure or -1 if the servlet was registered successfully
      * @return A servlet DTO
      */
     public static ServletDTO build(final ServletInfo info, final int reason)
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/util/ServiceUtils.java b/http/base/src/main/java/org/apache/felix/http/base/internal/util/ServiceUtils.java
index 3cb8b24..d3646ea 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/util/ServiceUtils.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/util/ServiceUtils.java
@@ -31,6 +31,9 @@
 
     /**
      * Get the service
+     * @param ctx The bundle context
+     * @param ref The service reference
+     * @param <T> The service type
      * @return The service or {@code null}
      */
     public static <T> T safeGetService(final BundleContext ctx, final ServiceReference<T> ref) {
@@ -44,6 +47,9 @@
 
     /**
      * Unget the service
+     * @param ctx The bundle context
+     * @param ref The service reference
+     * @param <T> The service type
      */
     public static <T> void safeUngetService(final BundleContext ctx, final ServiceReference<T> ref) {
         try {
@@ -55,6 +61,9 @@
 
     /**
      * Get the service using {@code ServiceObjects}
+     * @param ctx The bundle context
+     * @param ref The service reference
+     * @param <T> The service type
      * @return The service or {@code null}
      */
     public static <T> T safeGetServiceObjects(final BundleContext ctx, final ServiceReference<T> ref) {
@@ -72,6 +81,10 @@
 
     /**
      * Unget the service using {@code ServiceObjects}
+     * @param ctx The bundle context
+     * @param ref The service reference
+     * @param service The service
+     * @param <T> The service type
      */
     public static <T> void safeUngetServiceObjects(final BundleContext ctx, final ServiceReference<T> ref, final T service) {
         if ( ctx != null && service != null ) {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardContextHandler.java b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardContextHandler.java
index 7764faa..1544cff 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardContextHandler.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardContextHandler.java
@@ -108,6 +108,7 @@
 
     /**
      * Deactivate this context.
+     * @param registry The handler registry
      */
     public void deactivate(@NotNull final HandlerRegistry registry)
     {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
index 7d95499..cb48cb9 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
@@ -141,6 +141,7 @@
     /**
      * Start the whiteboard manager
      * @param containerContext The servlet context
+     * @param httpServiceProps Service registration properties
      */
     public void start(final ServletContext containerContext, @NotNull final Dictionary<String, Object> httpServiceProps)
     {
@@ -929,8 +930,8 @@
      * @param req The request
      * @param res The response
      * @param dispatcher The dispatcher
-     * @throws IOException
-     * @throws ServletException
+     * @throws IOException If the invocation throws an IOException
+     * @throws ServletException If the invocation throws a ServletException
      */
     public void invokePreprocessors(final HttpServletRequest req,
     		final HttpServletResponse res,
diff --git a/http/jetty12/src/main/java/org/apache/felix/http/jetty/LoadBalancerCustomizerFactory.java b/http/jetty12/src/main/java/org/apache/felix/http/jetty/LoadBalancerCustomizerFactory.java
index 8a7b78d..0b03aec 100644
--- a/http/jetty12/src/main/java/org/apache/felix/http/jetty/LoadBalancerCustomizerFactory.java
+++ b/http/jetty12/src/main/java/org/apache/felix/http/jetty/LoadBalancerCustomizerFactory.java
@@ -38,7 +38,6 @@
     /**
      * Creates new Jetty {@code Customizer} instances.
      *
-     * <p>
      * @return A configured Jetty {@code Customizer} instance or {@code null}
      *         if the customizer can't be created.
      */
diff --git a/http/jetty12/src/main/java/org/apache/felix/http/jetty/package-info.java b/http/jetty12/src/main/java/org/apache/felix/http/jetty/package-info.java
index 342f9e0..41d6849 100644
--- a/http/jetty12/src/main/java/org/apache/felix/http/jetty/package-info.java
+++ b/http/jetty12/src/main/java/org/apache/felix/http/jetty/package-info.java
@@ -16,6 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+/**
+ * This package provides the Jetty-based implementation of the HTTP service.
+ */
 @Version("4.0")
 package org.apache.felix.http.jetty;
 
