[jboss-cvs] JBossAS SVN: r111571 - projects/specs/trunk/jboss-saaj-api_1.3_spec/src/main/java/javax/xml/soap.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jun 10 07:51:00 EDT 2011
Author: richard.opalka at jboss.com
Date: 2011-06-10 07:51:00 -0400 (Fri, 10 Jun 2011)
New Revision: 111571
Modified:
projects/specs/trunk/jboss-saaj-api_1.3_spec/src/main/java/javax/xml/soap/FactoryFinder.java
Log:
[JBWS-3271] implementing jboss modules classloader hack to lookup org.jboss.ws.saaj-impl module if available
Modified: projects/specs/trunk/jboss-saaj-api_1.3_spec/src/main/java/javax/xml/soap/FactoryFinder.java
===================================================================
--- projects/specs/trunk/jboss-saaj-api_1.3_spec/src/main/java/javax/xml/soap/FactoryFinder.java 2011-06-10 00:23:13 UTC (rev 111570)
+++ projects/specs/trunk/jboss-saaj-api_1.3_spec/src/main/java/javax/xml/soap/FactoryFinder.java 2011-06-10 11:51:00 UTC (rev 111571)
@@ -31,9 +31,9 @@
import java.io.*;
import java.util.Properties;
-
class FactoryFinder {
+ private static final String JBOSS_SAAJ_IMPL_MODULE = "org.jboss.ws.saaj-impl";
/**
* Creates an instance of the specified class using the specified
* <code>ClassLoader</code> object.
@@ -136,6 +136,40 @@
} catch( Exception ex ) {
}
+ ClassLoader moduleClassLoader = null;
+ try {
+ Class<?> moduleClass = Class.forName("org.jboss.modules.Module");
+ Class<?> moduleIdentifierClass = Class.forName("org.jboss.modules.ModuleIdentifier");
+ Class<?> moduleLoaderClass = Class.forName("org.jboss.modules.ModuleLoader");
+ Object moduleLoader = moduleClass.getMethod("getBootModuleLoader").invoke(null);
+ Object moduleIdentifier = moduleIdentifierClass.getMethod("create", String.class).invoke(null, JBOSS_SAAJ_IMPL_MODULE);
+ Object module = moduleLoaderClass.getMethod("loadModule", moduleIdentifierClass).invoke(moduleLoader, moduleIdentifier);
+ moduleClassLoader = (ClassLoader)moduleClass.getMethod("getClassLoader").invoke(module);
+ } catch (ClassNotFoundException e) {
+ //ignore, JBoss Modules might not be available at all
+ } catch (Exception e) {
+ throw new SOAPException(e);
+ }
+ if (moduleClassLoader != null) {
+ try {
+ InputStream is = moduleClassLoader.getResourceAsStream(serviceId);
+
+ if( is!=null ) {
+ BufferedReader rd =
+ new BufferedReader(new InputStreamReader(is, "UTF-8"));
+
+ String factoryClassName = rd.readLine();
+ rd.close();
+
+ if (factoryClassName != null &&
+ ! "".equals(factoryClassName)) {
+ return newInstance(factoryClassName, moduleClassLoader);
+ }
+ }
+ } catch( Exception ex ) {
+ }
+ }
+
return null;
}
More information about the jboss-cvs-commits
mailing list