diff --git a/modules/rampart-integration/pom.xml b/modules/rampart-integration/pom.xml
index 6930dac..1894caf 100644
--- a/modules/rampart-integration/pom.xml
+++ b/modules/rampart-integration/pom.xml
@@ -85,6 +85,7 @@
                         </goals>
                         <configuration>
                             <modules>addressing,rampart,rahas</modules>
+                            <axis2xml>src/test/resources/conf/axis2.xml</axis2xml>
                             <outputDirectory>target/test-resources/rampart_service_repo</outputDirectory>
                         </configuration>
                     </execution>
@@ -105,6 +106,7 @@
                         </goals>
                         <configuration>
                             <modules>addressing,rampart,rahas</modules>
+                            <axis2xml>src/test/resources/conf/axis2.xml</axis2xml>
                             <outputDirectory>target/test-resources/rahas_service_repo_1</outputDirectory>
                         </configuration>
                     </execution>
@@ -115,6 +117,7 @@
                         </goals>
                         <configuration>
                             <modules>addressing,rampart,rahas</modules>
+                            <axis2xml>src/test/resources/conf/axis2.xml</axis2xml>
                             <outputDirectory>target/test-resources/rahas_service_repo_3</outputDirectory>
                         </configuration>
                     </execution>
@@ -126,6 +129,7 @@
                         <configuration>
                             <modules>addressing,rampart</modules>
                             <axis2xml>src/test/resources/conf/axis2.xml</axis2xml>
+                            <configurationDirectory>conf</configurationDirectory>
                             <outputDirectory>target/test-resources/default_security_client_repo</outputDirectory>
                         </configuration>
                     </execution>
@@ -136,13 +140,11 @@
                         </goals>
                         <configuration>
                             <modules>addressing,rampart,rahas</modules>
+                            <axis2xml>src/test/resources/conf/axis2.xml</axis2xml>
                             <outputDirectory>target/test-resources/rahas_service_repo_5</outputDirectory>
                         </configuration>
                     </execution>
                 </executions>
-                <configuration>
-                    <configurationDirectory>conf</configurationDirectory>
-                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
diff --git a/modules/rampart-integration/src/main/java/org/apache/axis2/integration/JettyServer.java b/modules/rampart-integration/src/main/java/org/apache/axis2/integration/JettyServer.java
index 8dccdc3..6742b6e 100644
--- a/modules/rampart-integration/src/main/java/org/apache/axis2/integration/JettyServer.java
+++ b/modules/rampart-integration/src/main/java/org/apache/axis2/integration/JettyServer.java
@@ -69,7 +69,6 @@
     private static final Log log = LogFactory.getLog(JettyServer.class);
     
     private final String repository;
-    private final String axis2xml;
     private final boolean secure;
     private File keyStoreFile;
     private File trustStoreFile;
@@ -87,12 +86,11 @@
      * @param secure
      *            Whether to enable HTTPS.
      */
-    public JettyServer(String repository, String axis2xml, boolean secure) {
+    public JettyServer(String repository, boolean secure) {
         if (repository == null || repository.trim().length() == 0) {
             throw new IllegalArgumentException("Axis2 repository must not be null or empty");
         }
         this.repository = repository;
-        this.axis2xml = axis2xml;
         this.secure = secure;
     }
     
@@ -187,7 +185,7 @@
         context.setThrowUnavailableOnStartupException(true);
         
         final ConfigurationContext configurationContext =
-                ConfigurationContextFactory.createConfigurationContextFromFileSystem(repository, axis2xml);
+                ConfigurationContextFactory.createConfigurationContextFromFileSystem(repository);
         @SuppressWarnings("serial")
         ServletHolder servlet = new ServletHolder(new AxisServlet() {
             @Override
diff --git a/modules/rampart-integration/src/main/java/org/apache/axis2/integration/TestConstants.java b/modules/rampart-integration/src/main/java/org/apache/axis2/integration/TestConstants.java
index 0ffa21f..c20a517 100644
--- a/modules/rampart-integration/src/main/java/org/apache/axis2/integration/TestConstants.java
+++ b/modules/rampart-integration/src/main/java/org/apache/axis2/integration/TestConstants.java
@@ -20,7 +20,6 @@
 
 public final class TestConstants {
     public static final String TESTING_PATH = "target/test-resources/";
-    public static final String AXIS2_XML = "src/test/resources/conf/axis2.xml";
     
     private TestConstants() {}
 }
diff --git a/modules/rampart-integration/src/main/java/org/apache/rahas/TestClient.java b/modules/rampart-integration/src/main/java/org/apache/rahas/TestClient.java
index 215dad0..80fc3e1 100644
--- a/modules/rampart-integration/src/main/java/org/apache/rahas/TestClient.java
+++ b/modules/rampart-integration/src/main/java/org/apache/rahas/TestClient.java
@@ -16,7 +16,6 @@
 
 package org.apache.rahas;
 
-import static org.apache.axis2.integration.TestConstants.AXIS2_XML;
 import static org.apache.axis2.integration.TestConstants.TESTING_PATH;
 
 import java.io.FileInputStream;
@@ -42,7 +41,7 @@
 public abstract class TestClient {
 
     @Rule
-    public final JettyServer server = new JettyServer(TESTING_PATH + getServiceRepo(), AXIS2_XML, false);
+    public final JettyServer server = new JettyServer(TESTING_PATH + getServiceRepo(), false);
 
     /**
      */
diff --git a/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java b/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
index 2e796fd..064d197 100644
--- a/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
+++ b/modules/rampart-integration/src/test/java/org/apache/rampart/RampartTest.java
@@ -16,7 +16,6 @@
 
 package org.apache.rampart;
 
-import static org.apache.axis2.integration.TestConstants.AXIS2_XML;
 import static org.apache.axis2.integration.TestConstants.TESTING_PATH;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
@@ -48,10 +47,10 @@
     private static ResourceBundle resources;
     
     @Rule
-    public final JettyServer server = new JettyServer(TESTING_PATH + "rampart_service_repo", AXIS2_XML, false);
+    public final JettyServer server = new JettyServer(TESTING_PATH + "rampart_service_repo", false);
     
     @Rule
-    public final JettyServer secureServer = new JettyServer(TESTING_PATH + "rampart_service_repo", AXIS2_XML, true);
+    public final JettyServer secureServer = new JettyServer(TESTING_PATH + "rampart_service_repo", true);
     
     static {
         try {
