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
