diff --git a/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java b/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
index 51dcde8..573327b 100644
--- a/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
+++ b/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
@@ -219,7 +219,12 @@
                                   final ServiceConfiguration serviceConfiguration) {
         final JAXRSServerFactoryBean factory = newFactory(prefix);
         if (InternalApplication.class.equals(application.getClass())) { // todo: check it is the good choice
-            configureFactory("jaxrs-application", additionalProviders, serviceConfiguration, factory);
+            final Application original = InternalApplication.class.cast(application).getOriginal();
+            if (original == null) {
+                configureFactory("jaxrs-application", additionalProviders, serviceConfiguration, factory);
+            } else {
+                configureFactory(original.getClass().getName(), additionalProviders, serviceConfiguration, factory);
+            }
         } else {
             configureFactory(application.getClass().getName(), additionalProviders, serviceConfiguration, factory);
         }
@@ -379,7 +384,7 @@
 
         final Collection<ServiceInfo> services = serviceConfiguration.getAvailableServices();
 
-        final String staticSubresourceResolution = serviceConfiguration.getProperties().getProperty(STATIC_SUB_RESOURCE_RESOLUTION_KEY);
+        final String staticSubresourceResolution = serviceConfiguration.getProperties().getProperty(CXF_JAXRS_PREFIX + STATIC_SUB_RESOURCE_RESOLUTION_KEY);
         if (staticSubresourceResolution != null) {
             factory.setStaticSubresourceResolution("true".equalsIgnoreCase(staticSubresourceResolution));
         }
diff --git a/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/InternalApplication.java b/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/InternalApplication.java
index 58918ab..2035805 100644
--- a/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/InternalApplication.java
+++ b/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/InternalApplication.java
@@ -23,6 +23,11 @@
 public class InternalApplication extends Application {
     private final Set<Class<?>> classes = new HashSet<Class<?>>();
     private final Set<Object> singletons = new HashSet<Object>();
+    private final Application original;
+
+    public InternalApplication(final Application original) {
+        this.original = original;
+    }
 
     @Override
     public Set<Class<?>> getClasses() {
@@ -33,4 +38,8 @@
     public Set<Object> getSingletons() {
         return singletons;
     }
+
+    public Application getOriginal() {
+        return original;
+    }
 }
diff --git a/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java b/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
index dcd9ac2..d93a3cb 100644
--- a/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
+++ b/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
@@ -205,7 +205,7 @@
 
                 if (deploymentWithApplication) { // don't do it if we detected we should use old deployment
                     if (application == null) {
-                        application = new InternalApplication();
+                        application = new InternalApplication(application);
 
                         for (final String clazz : webApp.restClass) {
                             try {
@@ -497,7 +497,7 @@
                 }
 
                 if ("true".equalsIgnoreCase(appInfo.properties.getProperty(OPENEJB_USE_APPLICATION_PROPERTY, APPLICATION_DEPLOYMENT))) {
-                    final Application application = new InternalApplication();
+                    final Application application = new InternalApplication(null);
                     for (final Map.Entry<String, EJBRestServiceInfo> ejb : restEjbs.entrySet()) {
                         application.getClasses().add(ejb.getValue().context.getBeanClass());
                     }
diff --git a/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java b/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
index 67abde3..ffc4c3d 100644
--- a/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
+++ b/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
@@ -249,7 +249,8 @@
         copyClasses(paths.getJavaEEAPIJar(), jaxbApi, new File(endorsed, "jaxb-api.jar"), "javax/xml/bind/.*", Arrays.asList("javax/xml/bind/ContextFinder.class", "javax/xml/bind/DatatypeConverter.class"));
         removeJar(jaxbApi);
 
-        final File jaxbImpl = new File(endorsed, "jaxb-impl.jar");
+        // don't put jaxb-impl in endorsed since it relies on the jvm itself
+        final File jaxbImpl = new File(paths.getCatalinaLibDir(), "jaxb-impl.jar");
         if (!jaxbImpl.exists()) {
             try {
                 Installers.copyFile(paths.getJAXBImpl(), jaxbImpl);
