[jboss-as7-dev] problem with the classloader, not able to load a JDBC driver

Jason T. Greene jason.greene at redhat.com
Mon Jul 23 11:57:32 EDT 2012


That's the correct solution for this.

On 7/23/12 10:42 AM, Flemming Harms wrote:
> I found a solution to my problem. Had to update the xsd schema with an
> extra attribute "module" and then user need pack his JDBC driver as module.
>
> I use the code below to load the model and the driver class.
>
> Class<?> driverClass =
> Module.loadClassFromCallerModuleLoader(ModuleIdentifier.fromString(moduleName),
> driver);
> driverClass.newInstance();
>
> <outbound-connections>
>          <database>
>              <connection module="com.h2database.h2"
> driver="org.h2.jdbcx.JdbcDataSource" name="db"
> url="jdbc:h2:/tmp/test;DB_CLOSE_DELAY=-1" username="sa" password=""
> min-pool-size="10" max-pool-size="20" />
>          </database>
> </outbound-connections>
>
> Does it make sense?
>
> Thanks
>
> 2012/7/20 Flemming Harms <flemming.harms at gmail.com
> <mailto:flemming.harms at gmail.com>>
>
>     Hi
>
>     I'm trying to finish https://issues.jboss.org/browse/AS7-1371 but I
>     ran into a problem with the class loader. I need way to load the
>     class for a specified JDBC driver, but I can't seem to figure out
>     how to make it available on the classpath too my authentication service.
>
>     I try to load the connection class like this, and testing it with
>     the existing H2 JDBC driver:
>     ClassLoader original = null;
>              try {
>                  original = Thread.currentThread().getContextClassLoader();
>                  if (original != null) {
>                      Thread.currentThread().setContextClassLoader(null);
>                  }
>                  Class.forName(this.driver).newInstance();
>              } finally {
>                  if (original != null) {
>                      Thread.currentThread().setContextClassLoader(original);
>                  }
>     }
>
>     The user can setup a outbound connection to a database for
>     authentication, by using the configuration below
>
>       <security-realm name="ManagementRealm">
>            <authentication>
>                 <local default-user="$local"/>
>                 <database connection="db" plain-text="true">
>                   <!-- simple-select-users table="users"
>     username-field="user" password-field="password"/ -->
>                   <sql-select-users sql="select user,password from users
>     where user = ?" />
>                 </database>
>            </authentication>
>     </security-realm>
>
>     <outbound-connections>
>              <database>
>                  <connection driver="org.h2.jdbcx.JdbcDataSource"
>     name="db" url="jdbc:h2:/tmp/test;DB_CLOSE_DELAY=-1" username="sa"
>     password="" min-pool-size="10" max-pool-size="20" />
>              </database>
>     </outbound-connections>
>
>     Any suggestions how to solve this?
>
>     Thanks!
>
>     br
>     Flemming
>
>
>
>
> _______________________________________________
> jboss-as7-dev mailing list
> jboss-as7-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
>


-- 
Jason T. Greene
JBoss AS Lead / EAP Platform Architect
JBoss, a division of Red Hat


More information about the jboss-as7-dev mailing list