Did you package this spring app in a bundle ?
If yes, you need to make sure your bundle import (statically or
dynamically, or through a RequiredBundle header) the com.mysql.jdbc
package.
Spring applications deployed through the deployer have a dynamic
import package declaration on everything iirc, so it should work that
way.

On Fri, Mar 20, 2009 at 14:57, cmoulliard <[email protected]> wrote:
>
> Hi,
>
> I would like to know if someones has resolved top of SMX4 the issue related
> with the loading of JDBC driver like MySQL, ...
>
> I have created the following Spring configuration
>
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans";
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>       xmlns:context="http://www.springframework.org/schema/context";
>       xmlns:osgi="http://www.springframework.org/schema/osgi";
>        xsi:schemaLocation="
>       http://www.springframework.org/schema/beans
>       http://www.springframework.org/schema/beans/spring-beans.xsd
>       http://www.springframework.org/schema/context
>       http://www.springframework.org/schema/context/spring-context.xsd
>       http://www.springframework.org/schema/osgi
>       http://www.springframework.org/schema/osgi/spring-osgi.xsd";>
>
>    <context:annotation-config/>
>
>        <!--  DB connection and persistence layer -->
>        <!--  DataSource Definition  -->
>        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
> destroy-method="close">
>                <property name="driverClassName" value="com.mysql.jdbc.Driver" 
> />
>                <property name="url" value="jdbc:mysql:///report" />
>                <property name="username" value="root" />
>                <property name="password" value="" />
>        </bean>
>
>
>        <!--  Spring Data Access Exception Translator Definition        -->
>        <bean id="jdbcExceptionTranslator"
> class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
>                <property name="dataSource">
>                        <ref bean="dataSource" />
>                </property>
>        </bean>
>
>        <!--  Hibernate SessionFactory Definition -->
>        <bean id="sessionFactory"
> class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
>
>                <!-- Classloading does not work under OSGI
>                <property name="mappingResources">
>                        <list>
>
> <value>META-INF/org/apache/camel/example/reportincident/model/Incident.hbm.xml</value>
>                        </list>
>                </property>
>                 -->
>
>                <!-- see here
>
> http://www.carbonfive.com/community/archives/2007/05/using_classpath.html
> and
>                     http://jira.springframework.org/browse/SPR-3965
>                     for more info about the classloading issue on OSGI -->
>                <property name="mappingLocations">
>                        <list>
>
> <value>classpath*:META-INF/org/apache/camel/example/reportincident/model/Incident.hbm.xml</value>
>                        </list>
>                </property>
>
>
>                <property name="hibernateProperties">
>                        <props>
>                                <prop 
> key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
>                                <prop key="hibernate.show_sql">false</prop>
>                                <prop key="hibernate.format_sql">true</prop>
>                                <prop 
> key="hibernate.cglib.use_reflection_optimizer">true</prop>
>                                <prop
> key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
>                                <prop key="hibernate.jdbc.batch_size">10</prop>
>                        </props>
>                </property>
>                <property name="dataSource">
>                        <ref bean="dataSource" />
>                </property>
>        </bean>
>
>        <!--  Hibernate Transaction Manager Definition -->
>        <bean id="transactionManager"
> class="org.springframework.orm.hibernate3.HibernateTransactionManager">
>                <property name="sessionFactory">
>                        <ref local="sessionFactory" />
>                </property>
>        </bean>
>
>
>        <!--  Hibernate Transaction Manager exported as OSGI service because 
> used
>              org.apache.camel.example.reportincident.service -->
>        <osgi:service id="transactionManagerOsgi"
>                      ref="transactionManager"
>
> interface="org.springframework.transaction.PlatformTransactionManager"/>
>
> </beans>
>
> but I receive the following error :
>
> 14:42:30,382 | WARN  | xtenderThread-15 | SQLErrorCodesFactory             |
> dbc.support.SQLErrorCodesFactory  230 | Error while extracting database
> product name - falling back to empty error codes
> org.springframework.jdbc.support.MetaDataAccessException: Could not get
> Connection for extracting meta data; nested exception is
> org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get
> JDBC Connection; nested exception is
> org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class
> 'com.mysql.jdbc.Driver'
>        at
> org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:293)
>        at
> org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:320)
>        at
> org.springframework.jdbc.support.SQLErrorCodesFactory.getErrorCodes(SQLErrorCodesFactory.java:216)
>        at
> org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:140)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:840)
>        at
> org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:651)
>        at
> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:78)
>        at
> org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:59)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1276)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>        at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>        at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>        at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>        at
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:69)
>        at
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:355)
>        at
> org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
>        at
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
>        at
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:136)
>        at java.lang.Thread.run(Thread.java:619)
> Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could
> not get JDBC Connection; nested exception is
> org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class
> 'com.mysql.jdbc.Driver'
>        at
> org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
>        at
> org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:280)
>        ... 30 more
> Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC
> driver class 'com.mysql.jdbc.Driver'
>        at
> org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
>        at
> org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
>        at
> org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
>        at
> org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
>        ... 31 more
> Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
>        at
> org.apache.felix.framework.searchpolicy.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:558)
>        at
> org.apache.felix.framework.searchpolicy.ModuleImpl.access$100(ModuleImpl.java:59)
>        at
> org.apache.felix.framework.searchpolicy.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1427)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
>        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>        at java.lang.Class.forName0(Native Method)
>        at java.lang.Class.forName(Class.java:169)
>        at
> org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130)
>        ... 34 more
>
> Apparently, this point has been discussed by Spring user :
> http://forum.springframework.org/showthread.php?t=59588
>
> Regards,
>
>
>
> -----
> Charles Moulliard
> SOA Architect
>
> My Blog :  http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/
> --
> View this message in context: 
> http://www.nabble.com/SMX4-and-classloading-of-JDBC-driver-%28MySQL%2C-...%29---question----tp22620802p22620802.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Reply via email to