diff --git a/meecrowave-core/pom.xml b/meecrowave-core/pom.xml
index 414654d..a05649a 100644
--- a/meecrowave-core/pom.xml
+++ b/meecrowave-core/pom.xml
@@ -80,6 +80,11 @@
       <version>${openwebbeans.version}</version>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.openwebbeans</groupId>
+      <artifactId>openwebbeans-spi</artifactId>
+      <version>${openwebbeans.version}</version>
+    </dependency>
     <dependency> <!-- not that if a user adds owb-se this should get excluded -->
       <groupId>org.apache.openwebbeans</groupId>
       <artifactId>openwebbeans-web</artifactId>
diff --git a/meecrowave-core/src/main/java/org/apache/meecrowave/tomcat/OWBJarScanner.java b/meecrowave-core/src/main/java/org/apache/meecrowave/tomcat/OWBJarScanner.java
index 9cb96b3..3afcb8a 100644
--- a/meecrowave-core/src/main/java/org/apache/meecrowave/tomcat/OWBJarScanner.java
+++ b/meecrowave-core/src/main/java/org/apache/meecrowave/tomcat/OWBJarScanner.java
@@ -27,6 +27,7 @@
 import org.apache.tomcat.util.scan.JarFactory;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.corespi.scanner.xbean.CdiArchive;
+import org.apache.webbeans.corespi.scanner.xbean.OwbAnnotationFinder;
 import org.apache.webbeans.web.scanner.WebScannerService;
 import org.apache.xbean.finder.util.Files;
 
@@ -43,7 +44,12 @@
     public void scan(final JarScanType jarScanType, final ServletContext servletContext, final JarScannerCallback callback) {
         switch (jarScanType) {
             case PLUGGABILITY:
-                CdiArchive.class.cast(WebScannerService.class.cast(WebBeansContext.getInstance().getScannerService()).getFinder().getArchive())
+                final WebBeansContext owb = WebBeansContext.getInstance();
+                final OwbAnnotationFinder finder = WebScannerService.class.cast(owb.getScannerService()).getFinder();
+                if (finder == null) {
+                    return;
+                }
+                CdiArchive.class.cast(finder.getArchive())
                         .classesByUrl().keySet().stream()
                         .filter(u -> !"jar:file://!/".equals(u)) // not a fake in memory url
                         .forEach(u -> {
diff --git a/meecrowave-core/src/test/java/org/apache/meecrowave/MeecrowaveTest.java b/meecrowave-core/src/test/java/org/apache/meecrowave/MeecrowaveTest.java
index 391887b..f7cd553 100644
--- a/meecrowave-core/src/test/java/org/apache/meecrowave/MeecrowaveTest.java
+++ b/meecrowave-core/src/test/java/org/apache/meecrowave/MeecrowaveTest.java
@@ -58,6 +58,15 @@
 
 public class MeecrowaveTest {
     @Test
+    public void noTomcatScanning() {
+        try (final Meecrowave meecrowave = new Meecrowave(
+                new Meecrowave.Builder().tomcatScanning(false).randomHttpPort())
+                .bake()) {
+            // ok it started, before the fix it was failing due to a NPE
+        }
+    }
+
+    @Test
     public void fastStartupSessionId() {
         try (final Meecrowave meecrowave = new Meecrowave(new Meecrowave.Builder().randomHttpPort())
                 .start().deployClasspath()) {
diff --git a/pom.xml b/pom.xml
index e9c9974..4a33e94 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,6 +53,8 @@
     <junit.version>4.13.1</junit.version>
     <tomcat.version>9.0.39</tomcat.version>
     <openwebbeans.version>2.0.19</openwebbeans.version>
+    <cxf.version>3.4.0</cxf.version>
+    <openwebbeans.version>2.0.19</openwebbeans.version>
     <cxf.version>3.4.1-SNAPSHOT</cxf.version>
     <johnzon.version>1.2.8</johnzon.version>
     <log4j2.version>2.13.3</log4j2.version>
@@ -235,5 +237,9 @@
       </snapshots>
     </repository>
 -->
+    <repository>
+      <id>owb</id>
+      <url>https://repository.apache.org/content/repositories/orgapacheopenwebbeans-1065/</url>
+    </repository>
   </repositories>
 </project>
