diff --git a/pom.xml b/pom.xml
index 3ae0471..bd19c13 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,26 +117,6 @@
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <configuration>
-                    <tasks>
-                        <sleep seconds="10"/>
-                    </tasks>
-                </configuration>
-                <executions>
-                    <execution>
-                        <!-- workaround for https://issues.apache.org/jira/browse/SLING-6543 -->
-                        <id>sleep-until-http-port-is-bound</id>
-                        <phase>pre-integration-test</phase>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
                 <executions>
                     <execution>
@@ -206,6 +186,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>osgi.core</artifactId>
             <scope>test</scope>
diff --git a/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java b/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java
index 81fc4c5..a1f815a 100644
--- a/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java
+++ b/src/test/java/org/apache/sling/servlets/annotations/ServletRegistrationIT.java
@@ -30,7 +30,6 @@
 import org.apache.sling.testing.junit.rules.SlingRule;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 
@@ -41,7 +40,7 @@
     
     public static OsgiConsoleClient CLIENT;
     
-    private static final String BUNDLE_SYMBOLICNAME = "sling-org-apache-sling-servlets-annotations-it";
+    private static final String BUNDLE_SYMBOLICNAME = "org.apache.sling.servlets.annotations.it";
     private static final long BUNDLE_START_TIMEOUT = TimeUnit.SECONDS.toMillis(10);
     private static final long SERVICE_START_TIMEOUT = TimeUnit.SECONDS.toMillis(60);
     
@@ -63,16 +62,15 @@
         if (!file.exists()) {
             throw new IllegalArgumentException("Test bundle file in " + file + " does not exist!");
         }
-        CLIENT.waitInstallBundle(file, true, -1, BUNDLE_START_TIMEOUT, 500);
         // wait until the server is fully started
         CLIENT.waitExists("/index.html", SERVICE_START_TIMEOUT, 500);
+
+        CLIENT.waitInstallBundle(file, true, -1, BUNDLE_START_TIMEOUT, 500);
         
         // the following method somehow fails sometimes
-        //CLIENT.waitServiceRegistered("javax.servlet.Servlet", BUNDLE_SYMBOLICNAME, SERVICE_START_TIMEOUT, 500);
+        CLIENT.waitServiceRegistered("javax.servlet.Servlet", BUNDLE_SYMBOLICNAME, SERVICE_START_TIMEOUT, 500);
         CLIENT.waitComponentRegistered("org.apache.sling.servlets.annotations.testservlets.PathBoundServlet", SERVICE_START_TIMEOUT, 500);
         CLIENT.waitComponentRegistered("org.apache.sling.servlets.annotations.testservletfilters.SimpleServletFilter", SERVICE_START_TIMEOUT, 500);
-        // wait a bit longer to make sure really all servlets and filters are active
-        //Thread.sleep(500);
     }
     
     @AfterClass
