obtain the instance lazily
diff --git a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
index a32a3f5..93fcd37 100644
--- a/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
+++ b/jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/Whiteboard.java
@@ -348,16 +348,14 @@
                                     cachingServiceReference.getProperty(
                                             "org.apache.aries.jax.rs.whiteboard.application.scoped")));
             if (applicationScoped) {
-                ServiceObjects<T> serviceObjects = serviceTuple.getServiceObjects();
-
-                T service = serviceObjects.getService();
-
-                return OSGi.<ResourceProvider>just(
-                        new SingletonServiceReferenceResourceProvider(
-                                cachingServiceReference, service)
+                return just(
+                    serviceTuple.getServiceObjects().getService()
                 ).effects(
-                        __ -> {},
-                        __ -> serviceObjects.ungetService(service)
+                    __ -> {},
+                    serviceTuple.getServiceObjects()::ungetService
+                ).map(
+                    service -> new SingletonServiceReferenceResourceProvider(
+                        cachingServiceReference, service)
                 );
             }