diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml
index 79618bb..6defdb5 100644
--- a/examples/async-rest/async-rest-jar/pom.xml
+++ b/examples/async-rest/async-rest-jar/pom.xml
@@ -23,7 +23,7 @@
     <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>javax.servlet-api</artifactId>
-       <version>3.1-b01</version>
+       <version>3.1-b08</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml
index 866339d..0cb4940 100644
--- a/examples/async-rest/async-rest-webapp/pom.xml
+++ b/examples/async-rest/async-rest-webapp/pom.xml
@@ -27,7 +27,7 @@
       <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
-         <version>3.1-b01</version>
+         <version>3.1-b08</version>
          <scope>provided</scope>
        </dependency>
   </dependencies>
diff --git a/jetty-jsp/pom.xml b/jetty-jsp/pom.xml
index 5fc0eb2..b010b81 100644
--- a/jetty-jsp/pom.xml
+++ b/jetty-jsp/pom.xml
@@ -96,5 +96,10 @@
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+       <groupId>javax.servlet</groupId>
+       <artifactId>javax.servlet-api</artifactId>
+       <version>3.1-b08</version>
+    </dependency>
   </dependencies>
 </project>
diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml
index bcf9990..cf27138 100644
--- a/jetty-osgi/pom.xml
+++ b/jetty-osgi/pom.xml
@@ -25,7 +25,9 @@
     <module>jetty-osgi-httpservice</module>
     <module>test-jetty-osgi-webapp</module>
     <module>test-jetty-osgi-context</module>
+<!--
     <module>test-jetty-osgi</module>
+-->
   </modules>
   <build>
     <resources>
diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/DeferredAuthentication.java b/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/DeferredAuthentication.java
index 422a40c..1dedf0f 100644
--- a/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/DeferredAuthentication.java
+++ b/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/DeferredAuthentication.java
@@ -359,27 +359,33 @@
     /* ------------------------------------------------------------ */
     private static ServletOutputStream __nullOut = new ServletOutputStream()
     {
+        @Override
         public void write(int b) throws IOException
         {
         }
-
+        
+        @Override
         public void print(String s) throws IOException
         {
         }
-
+        
+        @Override
         public void println(String s) throws IOException
         {
         }
 
-        public boolean canWrite()
-        {
-            return false;
-        }
-
+     
+        @Override
         public void setWriteListener(WriteListener writeListener)
         {
             
         }
+
+        @Override
+        public boolean isReady()
+        {
+            return false;
+        }
     };
 
 
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java
index 951c234..6673538 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java
@@ -347,20 +347,14 @@
             BufferUtil.clear(_aggregate);
     }
 
-    @Override
-    public boolean canWrite()
-    {
-        // TODO implement behaviour
-        // return true if data can be written without blocking
-        return false;
-    }
+  
 
     @Override
     public void setWriteListener(WriteListener writeListener)
     {
         _writeListener = writeListener;
         
-        // TODO implement behaviour
+        // TODO 3.1 implement behaviour
         /*
         Registering a WriteListener will start non-blocking IO. It is illegal to switch to
         the traditional blocking IO at that point.
@@ -370,7 +364,15 @@
         called AND has returned false AND a writeListener has previously been
         set. 
          */
-    
+    }
 
+    /** 
+     * @see javax.servlet.ServletOutputStream#isReady()
+     */
+    @Override
+    public boolean isReady()
+    {
+        // TODO 3.1 Auto-generated method stub
+        return false;
     }
 }
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
index 4218daf..e8af1be 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
@@ -56,8 +56,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpUpgradeHandler;
 import javax.servlet.http.Part;
-import javax.servlet.http.ProtocolHandler;
 
 import org.eclipse.jetty.http.HttpCookie;
 import org.eclipse.jetty.http.HttpFields;
@@ -2203,10 +2203,14 @@
     }
 
 
-    /* ------------------------------------------------------------ */
+   
+    /** 
+     * @see javax.servlet.http.HttpServletRequest#upgrade(java.lang.Class)
+     */
     @Override
-    public void upgrade(ProtocolHandler arg0) throws IOException
+    public <T extends HttpUpgradeHandler> T upgrade(Class<T> handlerClass) throws IOException, ServletException
     {
-        // TODO Auto-generated method stub       
+        // TODO Auto-generated method stub
+        return null;
     }
 }
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/ServletRequestHttpWrapper.java b/jetty-server/src/main/java/org/eclipse/jetty/server/ServletRequestHttpWrapper.java
index ea6396f..b0c6270 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/ServletRequestHttpWrapper.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/ServletRequestHttpWrapper.java
@@ -31,8 +31,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpUpgradeHandler;
 import javax.servlet.http.Part;
-import javax.servlet.http.ProtocolHandler;
+
 
 /* ------------------------------------------------------------ */
 /** 
@@ -212,12 +213,25 @@
 
     }
 
-    
+
+    /** 
+     * @see javax.servlet.http.HttpServletRequest#changeSessionId()
+     */
     @Override
-    public void upgrade(ProtocolHandler handler) throws IOException
+    public String changeSessionId()
     {
-        // TODO Auto-generated method stub
-        
+        // TODO 3.1 Auto-generated method stub
+        return null;
+    }
+
+    /** 
+     * @see javax.servlet.http.HttpServletRequest#upgrade(java.lang.Class)
+     */
+    @Override
+    public <T extends HttpUpgradeHandler> T upgrade(Class<T> handlerClass) throws IOException, ServletException
+    {
+        // TODO 3.1 Auto-generated method stub
+        return null;
     }
 
 
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java
index 3d5fad4..6d913fb 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java
@@ -2525,6 +2525,16 @@
         {
             LOG.warn(__unimplmented);
         }
+
+        /** 
+         * @see javax.servlet.ServletContext#getVirtualServerName()
+         */
+        @Override
+        public String getVirtualServerName()
+        {
+            // TODO 3.1 Auto-generated method stub
+            return null;
+        }
     }
     
     
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/AbstractCompressedStream.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/AbstractCompressedStream.java
index 60456a5..45d504a 100644
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/AbstractCompressedStream.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/AbstractCompressedStream.java
@@ -353,18 +353,19 @@
     }
 
     @Override
-    public boolean canWrite()
-    {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
     public void setWriteListener(WriteListener writeListener)
     {
-        // TODO Auto-generated method stub
+        // TODO 3.1 Auto-generated method stub
         
     }
+    
+
+    @Override
+    public boolean isReady()
+    {
+        // TODO 3.1 Auto-generated method stub
+        return false;
+    }
 
     /**
      * Create the stream fitting to the underlying compression type.
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java b/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java
index 68901e3..c81d183 100644
--- a/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java
+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java
@@ -217,6 +217,16 @@
            }
         }
 
+        
+        /** 
+         * @see javax.servlet.http.Part#getSubmittedFileName()
+         */
+        @Override
+        public String getSubmittedFileName()
+        {
+            return getContentDispositionFilename();
+        }
+
         public byte[] getBytes()
         {
             if (_bout!=null)
diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml
index 826b5cc..abe6ee6 100644
--- a/jetty-websocket/websocket-servlet/pom.xml
+++ b/jetty-websocket/websocket-servlet/pom.xml
@@ -23,7 +23,7 @@
         <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
-         <version>3.1-b01</version>
+         <version>3.1-b08</version>
         </dependency>
 
 <!--
diff --git a/pom.xml b/pom.xml
index 0ffd760..91afeb5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -465,7 +465,7 @@
       <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
-         <version>3.1-b01</version>
+         <version>3.1-b08</version>
 <!--
          <groupId>org.eclipse.jetty.orbit</groupId>
          <artifactId>javax.servlet</artifactId>
diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml
index 8bc98f2..010dd00 100644
--- a/tests/test-webapps/test-mock-resources/pom.xml
+++ b/tests/test-webapps/test-mock-resources/pom.xml
@@ -30,7 +30,7 @@
     <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
-         <version>3.1-b01</version>
+         <version>3.1-b08</version>
     </dependency>
 
 <!--
diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml
index 42d5057..9aaf34d 100644
--- a/tests/test-webapps/test-proxy-webapp/pom.xml
+++ b/tests/test-webapps/test-proxy-webapp/pom.xml
@@ -49,7 +49,7 @@
     <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
-       <version>3.1-b01</version>
+       <version>3.1-b08</version>
        <scope>provided</scope>
     </dependency>
 
diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml
index 13ea272..fe27436 100644
--- a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml
@@ -24,7 +24,7 @@
     <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
-       <version>3.1-b01</version>
+       <version>3.1-b08</version>
        <scope>provided</scope>
     </dependency>
 
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml
index 44ac6d8..3ae3cc3 100644
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml
@@ -138,7 +138,7 @@
     <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
-       <version>3.1-b01</version>
+       <version>3.1-b08</version>
        <scope>provided</scope>
     </dependency>
 
diff --git a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml
index e04bb17..3206a0b 100644
--- a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml
@@ -25,7 +25,7 @@
       <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
-         <version>3.1-b01</version>
+         <version>3.1-b08</version>
       </dependency>
 
 <!--
