diff --git a/bikeshed/src/com/google/gwt/sample/expenses/server/ExpensesDataServlet.java b/bikeshed/src/com/google/gwt/sample/expenses/server/ExpensesDataServlet.java
index 689a1d4..3fb9d33 100644
--- a/bikeshed/src/com/google/gwt/sample/expenses/server/ExpensesDataServlet.java
+++ b/bikeshed/src/com/google/gwt/sample/expenses/server/ExpensesDataServlet.java
@@ -30,7 +30,6 @@
 
 import java.io.BufferedInputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.PrintWriter;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -40,7 +39,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Set;
 
 import javax.servlet.http.HttpServlet;
@@ -52,7 +50,6 @@
  */
 public class ExpensesDataServlet extends HttpServlet {
 
-  private static final String PROPERTY_FILENAME = "servlet.properties";
   // TODO: Remove this hack
   private static final Set<String> PROPERTY_SET = new HashSet<String>();
   static {
@@ -76,15 +73,10 @@
         sync(topLevelJsonObject.getString(RequestDataManager.CONTENT_TOKEN),
             writer);
       } else {
-        InputStream is = this.getClass().getClassLoader().getResourceAsStream(PROPERTY_FILENAME);
-        if (is == null) {
-          throw new IllegalArgumentException("unable to find servlet.properties");
-        }
-        Properties properties = new Properties();
-        properties.load(is);
         operation = getOperationFromName(
             operationName,
-            (Class<RequestDefinition>) Class.forName(properties.getProperty("servlet.serveroperation")));
+            (Class<RequestDefinition>) Class.forName(getServletContext().getInitParameter(
+                "servlet.serverOperation")));
         Class<?> domainClass = Class.forName(operation.getDomainClassName());
         Method domainMethod = domainClass.getMethod(
             operation.getDomainMethodName(), operation.getParameterTypes());
diff --git a/bikeshed/war/WEB-INF/classes/servlet.properties b/bikeshed/war/WEB-INF/classes/servlet.properties
deleted file mode 100644
index ae714e2..0000000
--- a/bikeshed/war/WEB-INF/classes/servlet.properties
+++ /dev/null
@@ -1 +0,0 @@
-servlet.serveroperation=com.google.gwt.sample.expenses.shared.ExpenseRequestFactory$ServerSideOperation
diff --git a/bikeshed/war/WEB-INF/web.xml b/bikeshed/war/WEB-INF/web.xml
index ad7251e..9a43bd7 100644
--- a/bikeshed/war/WEB-INF/web.xml
+++ b/bikeshed/war/WEB-INF/web.xml
@@ -5,6 +5,11 @@
 
 <web-app>
 
+ <context-param>
+    <param-name>servlet.serverOperation</param-name>
+    <param-value>com.google.gwt.sample.expenses.shared.ExpenseRequestFactory$ServerSideOperation</param-value>
+  </context-param>
+
   <!-- Servlets -->
   <servlet>
     <servlet-name>expensesData</servlet-name>
