diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
index 6a8d6a2..6ddfb97 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
@@ -79,6 +79,15 @@
     /** Felix specific property to configure the session timeout in minutes (same session-timout in web.xml). Default is servlet container specific */
     public static final String FELIX_SESSION_TIMEOUT = "org.apache.felix.http.session.timeout";
 
+    /** Felix speicific property to configure the request buffer size. Default is 16KB (instead of Jetty's default of 4KB) */
+    public static final String FELIX_JETTY_HEADER_BUFFER_SIZE = "org.apache.felix.http.jetty.headerBufferSize";
+
+    /** Felix speicific property to configure the request buffer size. Default is 8KB */
+    public static final String FELIX_JETTY_REQUEST_BUFFER_SIZE = "org.apache.felix.http.jetty.requestBufferSize";
+
+    /** Felix speicific property to configure the request buffer size. Default is 24KB */
+    public static final String FELIX_JETTY_RESPONSE_BUFFER_SIZE = "org.apache.felix.http.jetty.responseBufferSize";
+
     /** Felix specific property to enable Jetty MBeans. Valid values are "true", "false". Default is false */
     public static final String  FELIX_HTTP_MBEANS = "org.apache.felix.http.mbeans";
 
@@ -100,6 +109,9 @@
     private boolean useHttpsNio;
     private boolean registerMBeans;
     private int sessionTimeout;
+    private int headerBufferSize;
+    private int requestBufferSize;
+    private int responseBufferSize;
 
     /**
      * Properties from the configuration not matching any of the
@@ -216,6 +228,21 @@
         return this.sessionTimeout;
     }
 
+    public int getHeaderBufferSize()
+    {
+        return this.headerBufferSize;
+    }
+
+    public int getRequestBufferSize()
+    {
+        return this.requestBufferSize;
+    }
+
+    public int getResponseBufferSize()
+    {
+        return this.responseBufferSize;
+    }
+
     public void reset()
     {
         update(null);
@@ -244,6 +271,9 @@
         this.useHttpsNio = getBooleanProperty(props, FELIX_HTTPS_NIO, this.useHttpNio);
         this.registerMBeans = getBooleanProperty(props, FELIX_HTTP_MBEANS, false);
         this.sessionTimeout = getIntProperty(props, FELIX_SESSION_TIMEOUT, 0);
+        this.headerBufferSize = getIntProperty(FELIX_JETTY_HEADER_BUFFER_SIZE, 16 * 1024);
+        this.requestBufferSize = getIntProperty(FELIX_JETTY_REQUEST_BUFFER_SIZE, 8 * 014);
+        this.responseBufferSize = getIntProperty(FELIX_JETTY_RESPONSE_BUFFER_SIZE, 24 * 1024);
 
         // copy rest of the properties
         Enumeration keys = props.keys();
diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
index 7d63625..aa410c1 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
@@ -306,6 +306,9 @@
     private void configureConnector(final Connector connector)
     {
         connector.setMaxIdleTime(this.config.getHttpTimeout());
+        connector.setHeaderBufferSize(this.config.getHeaderBufferSize());
+        connector.setRequestBufferSize(this.config.getRequestBufferSize());
+        connector.setResponseBufferSize(this.config.getResponseBufferSize());
         connector.setHost(this.config.getHost());
         connector.setStatsOn(this.config.isRegisterMBeans());
 
diff --git a/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.properties b/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.properties
index af78f58..b9bb0a4 100644
--- a/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.properties
+++ b/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.properties
@@ -92,4 +92,16 @@
 
 org.apache.felix.http.mbeans.name = Register MBeans
 org.apache.felix.http.mbeans.description = Whether or not to use register \
- JMX MBeans from the servlet container (Jetty).
\ No newline at end of file
+ JMX MBeans from the servlet container (Jetty).
+ 
+org.apache.felix.http.jetty.headerBufferSize.name = Header Buffer Size
+org.apache.felix.http.jetty.headerBufferSize.description = Size of the \
+ buffer for request and response headers. Default is 16KB.
+ 
+org.apache.felix.http.jetty.requestBufferSize.name = Request Buffer Size
+org.apache.felix.http.jetty.requestBufferSize.description = Size of the \
+ buffer for requests not fitting the header buffer. Default is 8KB.
+ 
+org.apache.felix.http.jetty.responseBufferSize.name = Response Buffer Size
+org.apache.felix.http.jetty.responseBufferSize.description = Size of the \
+ buffer for responses. Default is 24KB.
diff --git a/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.xml b/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.xml
index 8e308e8..ae31108 100644
--- a/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.xml
+++ b/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.xml
@@ -15,6 +15,9 @@
         <AD id="org.apache.felix.https.truststore" type="String" name="%org.apache.felix.https.truststore.name" description="%org.apache.felix.https.truststore.description"/>
         <AD id="org.apache.felix.https.truststore.password" type="String" name="%org.apache.felix.https.truststore.password.name" description="%org.apache.felix.https.truststore.password.description"/>
         <AD id="org.apache.felix.https.clientcertificate" type="String" default="none" name="%org.apache.felix.https.clientcertificate.name" description="%org.apache.felix.https.clientcertificate.description">
+        <AD id="org.apache.felix.http.jetty.headerBufferSize" type="Integer" default="16384" name="%org.apache.felix.http.jetty.headerBufferSize.name" description="%org.apache.felix.http.jetty.headerBufferSize.description">
+        <AD id="org.apache.felix.http.jetty.requestBufferSize" type="Integer" default="8192" name="%org.apache.felix.http.jetty.requestBufferSize.name" description="%org.apache.felix.http.jetty.requestBufferSize.description">
+        <AD id="org.apache.felix.http.jetty.responseBufferSize" type="Integer" default="24576" name="%org.apache.felix.http.jetty.responseBufferSize.name" description="%org.apache.felix.http.jetty.responseBufferSize.description">
             <Option value="none" label="%clientcertificate.none"/>
             <Option value="wants" label="%clientcertificate.wants"/>
             <Option value="needs" label="%clientcertificate.needs"/>
