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);