TOMEE-725 jaxb-impl in lib instead of endorsed to be able to load class correctly + minor fix on the rest application name used for the config

git-svn-id: https://svn.apache.org/repos/asf/openejb/trunk@1432024 13f79535-47bb-0310-9956-ffa450edef68
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);