Hi, I'm using Spring 1.1.5 with a WebSphere 5.0 web container.
I originally configured a DataSource bean using Jakarta's DBCP and everything worked fine.
I've just reconfigured the DataSource bean to use a WebSphere DataSource via JNDI and it doesn't work.
The applicationContext.xml has the following entries:
<bean id="ibDataSource" class="org.springframework.jndi.JndiObjectFactoryB ean">
<property name="jndiName"><value>jdbc/IB</value></property>
<property name="resourceRef"><value>false</value></property>
</bean>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTran sactionManager"/>
Later on in the same file I define a bean that uses the ibDataSource bean:
<bean id="eventLogConfigDao" class="nz.co.bnz.ib.integration.eventlog.db.EventL ogConfigDaoJdbc">
<property name="dataSource">
<ref bean="ibDataSource" />
</property>
</bean>
When Spring starts up (via org.springframework.web.context.ContextLoaderServl et), it attempts to load these beans. The first two load fine, but the eventLogConfigDao bean gets an exception when setting the dataSource property:
[28/04/05 10:49:38:015 NZST] 7dea382b SystemOut O INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started
[28/04/05 10:49:38:015 NZST] 7dea382b WebGroup I SRVE0180I: [IBWebApp] [/IBWebApp] [Servlet.LOG]: Loading Spring root WebApplicationContext
[28/04/05 10:49:38:124 NZST] 7dea382b SystemOut O INFO org.springframework.beans.factory.xml.XmlBeanDefin itionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]
[28/04/05 10:49:38:343 NZST] 7dea382b SystemOut O INFO org.springframework.web.context.support.XmlWebAppl icationContext - Bean factory for application context [org.springframework.web.context.support.XmlWebAppl icationContext;hashCode=1644148779]: org.springframework.beans.factory.support.DefaultL istableBeanFactory defining beans [ibServiceContext,ibDataSource,transactionManager,i bGCSInterface,eventLogConfigDao,bnz.ib.eventlogcon fig,ibSQLInterface,ibErrorMapper,ibSessionHandler, ibLogin]; root of BeanFactory hierarchy
[28/04/05 10:49:38:343 NZST] 7dea382b SystemOut O INFO org.springframework.web.context.support.XmlWebAppl icationContext - 10 beans defined in application context [org.springframework.web.context.support.XmlWebAppl icationContext;hashCode=1644148779]
[28/04/05 10:49:38:343 NZST] 7dea382b SystemOut O INFO org.springframework.core.CollectionFactory - Using JDK 1.3 collections
[28/04/05 10:49:38:359 NZST] 7dea382b SystemOut O INFO org.springframework.web.context.support.XmlWebAppl icationContext - Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMess ageSource@106ff829]
[28/04/05 10:49:38:359 NZST] 7dea382b SystemOut O INFO org.springframework.web.context.support.XmlWebAppl icationContext - Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicatio nEventMulticaster@17ee7829]
[28/04/05 10:49:38:359 NZST] 7dea382b SystemOut O INFO org.springframework.ui.context.support.UiApplicati onContextUtils - No ThemeSource found for [org.springframework.web.context.support.XmlWebAppl icationContext;hashCode=1644148779]: using ResourceBundleThemeSource
[28/04/05 10:49:38:359 NZST] 7dea382b SystemOut O INFO org.springframework.beans.factory.support.DefaultL istableBeanFactory - Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultL istableBeanFactory defining beans [ibServiceContext,ibDataSource,transactionManager,i bGCSInterface,eventLogConfigDao,bnz.ib.eventlogcon fig,ibSQLInterface,ibErrorMapper,ibSessionHandler, ibLogin]; root of BeanFactory hierarchy]
[28/04/05 10:49:38:359 NZST] 7dea382b SystemOut O INFO org.springframework.beans.factory.support.DefaultL istableBeanFactory - Creating shared instance of singleton bean 'ibServiceContext'
[28/04/05 10:49:38:671 NZST] 7dea382b SystemOut O INFO org.springframework.beans.factory.support.DefaultL istableBeanFactory - Creating shared instance of singleton bean 'ibDataSource'
[28/04/05 10:49:38:734 NZST] 7dea382b SystemOut O INFO org.springframework.beans.factory.support.DefaultL istableBeanFactory - Creating shared instance of singleton bean 'transactionManager'
[28/04/05 10:49:38:765 NZST] 7dea382b SystemOut O INFO org.springframework.transaction.jta.JtaTransaction Manager - Using JTA UserTransaction [com.ibm.ejs.jts.jta.UserTransactionImpl@4fa37827] from JNDI location [java:comp/UserTransaction]
[28/04/05 10:49:38:765 NZST] 7dea382b SystemOut O INFO org.springframework.transaction.jta.JtaTransaction Manager - No JTA TransactionManager specified: transaction suspension not available
[28/04/05 10:49:38:765 NZST] 7dea382b SystemOut O INFO org.springframework.beans.factory.support.DefaultL istableBeanFactory - Creating shared instance of singleton bean 'ibGCSInterface'
[28/04/05 10:49:40:202 NZST] 7dea382b SystemOut O INFO org.springframework.beans.factory.support.DefaultL istableBeanFactory - Creating shared instance of singleton bean 'eventLogConfigDao'
[28/04/05 10:49:40:234 NZST] 7dea382b SystemOut O INFO org.springframework.beans.factory.support.DefaultL istableBeanFactory - Destroying singletons in factory {org.springframework.beans.factory.support.Default ListableBeanFactory defining beans [ibServiceContext,ibDataSource,transactionManager,i bGCSInterface,eventLogConfigDao,bnz.ib.eventlogcon fig,ibSQLInterface,ibErrorMapper,ibSessionHandler, ibLogin]; root of BeanFactory hierarchy}
[28/04/05 10:49:40:234 NZST] 7dea382b SystemOut O ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationExce ption: Error creating bean with name 'eventLogConfigDao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyAccessExceptions Exception: PropertyAccessExceptionsException (1 errors); nested propertyAccessExceptions are: [org.springframework.beans.TypeMismatchException: Failed to convert property value of type [com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource] to required type [javax.sql.DataSource] for property 'dataSource']
PropertyAccessExceptionsException (1 errors)
org.springframework.beans.TypeMismatchException: Failed to convert property value of type [com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource] to required type [javax.sql.DataSource] for property 'dataSource'
at org.springframework.beans.BeanWrapperImpl.doTypeCo nversionIfNecessary(BeanWrapperImpl.java:1016)
at org.springframework.beans.BeanWrapperImpl.setPrope rtyValue(BeanWrapperImpl.java:779)
at org.springframework.beans.BeanWrapperImpl.setPrope rtyValue(BeanWrapperImpl.java:685)
at org.springframework.beans.BeanWrapperImpl.setPrope rtyValue(BeanWrapperImpl.java:826)
at org.springframework.beans.BeanWrapperImpl.setPrope rtyValues(BeanWrapperImpl.java:853)
at org.springframework.beans.BeanWrapperImpl.setPrope rtyValues(BeanWrapperImpl.java:842)
at org.springframework.beans.factory.support.Abstract AutowireCapableBeanFactory.applyPropertyValues(Abs tractAutowireCapableBeanFactory.java:870)
at org.springframework.beans.factory.support.Abstract AutowireCapableBeanFactory.populateBean(AbstractAu towireCapableBeanFactory.java:688)
at org.springframework.beans.factory.support.Abstract AutowireCapableBeanFactory.createBean(AbstractAuto wireCapableBeanFactory.java:325)
at org.springframework.beans.factory.support.Abstract AutowireCapableBeanFactory.createBean(AbstractAuto wireCapableBeanFactory.java:260)
at org.springframework.beans.factory.support.Abstract BeanFactory.getBean(AbstractBeanFactory.java:221)
at org.springframework.beans.factory.support.Abstract BeanFactory.getBean(AbstractBeanFactory.java:145)
at org.springframework.beans.factory.support.DefaultL istableBeanFactory.preInstantiateSingletons(Defaul tListableBeanFactory.java:291)
at org.springframework.context.support.AbstractApplic ationContext.refresh(AbstractApplicationContext.ja va:317)
at org.springframework.web.context.support.AbstractRe freshableWebApplicationContext.refresh(AbstractRef reshableWebApplicationContext.java:131)
at org.springframework.web.context.ContextLoader.crea teWebApplicationContext(ContextLoader.java:224)
at org.springframework.web.context.ContextLoader.init WebApplicationContext(ContextLoader.java:150)
at org.springframework.web.context.ContextLoaderServl et.init(ContextLoaderServlet.java:81)
at javax.servlet.GenericServlet.init(GenericServlet.j ava:258)
at com.ibm.ws.webcontainer.servlet.StrictServletInsta nce.doInit(StrictServletInstance.java:82)
at com.ibm.ws.webcontainer.servlet.StrictLifecycleSer vlet._init(StrictLifecycleServlet.java:147)
at com.ibm.ws.webcontainer.servlet.PreInitializedServ letState.init(StrictLifecycleServlet.java:270)
at com.ibm.ws.webcontainer.servlet.StrictLifecycleSer vlet.init(StrictLifecycleServlet.java:113)
at com.ibm.ws.webcontainer.servlet.ServletInstance.in it(ServletInstance.java:189)
at javax.servlet.GenericServlet.init(GenericServlet.j ava:258)
at com.ibm.ws.webcontainer.webapp.WebAppServletManage r.addServlet(WebAppServletManager.java:876)
at com.ibm.ws.webcontainer.webapp.WebAppServletManage r.loadServlet(WebAppServletManager.java:224)
at com.ibm.ws.webcontainer.webapp.WebAppServletManage r.loadAutoLoadServlets(WebAppServletManager.java:5 42)
at com.ibm.ws.webcontainer.webapp.WebApp.loadServletM anager(WebApp.java:1272)
at com.ibm.ws.webcontainer.webapp.WebApp.init(WebApp. java:277)
at com.ibm.ws.webcontainer.srt.WebGroup.loadWebApp(We bGroup.java:400)
at com.ibm.ws.webcontainer.srt.WebGroup.init(WebGroup .java:218)
at com.ibm.ws.webcontainer.WebContainer.addWebApplica tion(WebContainer.java:1004)
at com.ibm.ws.runtime.component.WebContainerImpl.inst all(WebContainerImpl.java:136)
at com.ibm.ws.runtime.component.WebContainerImpl.star t(WebContainerImpl.java:356)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.st art(ApplicationMgrImpl.java:415)
at com.ibm.ws.runtime.component.DeployedApplicationIm pl.fireDeployedObjectStart(DeployedApplicationImpl .java:808)
at com.ibm.ws.runtime.component.DeployedModuleImpl.st art(DeployedModuleImpl.java:351)
at com.ibm.ws.runtime.component.DeployedApplicationIm pl.start(DeployedApplicationImpl.java:578)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.st artApplication(ApplicationMgrImpl.java:268)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.st artApplication(ApplicationMgrImpl.java:485)
at java.lang.reflect.Method.invoke(Native Method)
at com.tivoli.jmx.modelmbean.MMBInvoker.invoke(MMBInv oker.java:46)
at com.tivoli.jmx.modelmbean.MMBInvoker.invokeOperati on(MMBInvoker.java:115)
at com.tivoli.jmx.modelmbean.DynamicModelMBeanSupport .invoke(DynamicModelMBeanSupport.java:409)
at javax.management.modelmbean.RequiredModelMBean.inv oke(RequiredModelMBean.java:323)
at com.tivoli.jmx.GenericMBeanSupport.invoke(GenericM BeanSupport.java:178)
at com.tivoli.jmx.MBeanAccess.invoke(MBeanAccess.java :113)
at com.tivoli.jmx.MBeanServerImpl.invoke(MBeanServerI mpl.java:290)
at com.ibm.ws.management.AdminServiceImpl.invoke(Admi nServiceImpl.java:658)
at com.ibm.ws.management.connector.AdminServiceDelega tor.invoke(AdminServiceDelegator.java:130)
at java.lang.reflect.Method.invoke(Native Method)
at com.ibm.ws.management.connector.soap.SOAPConnector .invoke(SOAPConnector.java:306)
at com.ibm.ws.management.connector.soap.SOAPConnector .service(SOAPConnector.java:178)
at com.ibm.ws.management.connector.soap.SOAPConnectio n.handleRequest(SOAPConnection.java:55)
at com.ibm.ws.http.HttpConnection.readAndHandleReques t(HttpConnection.java:615)
at com.ibm.ws.http.HttpConnection.run(HttpConnection. java:439)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.j ava:672)
I've checked com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource. It implements com.ibm.websphere.rsadapter.WSDataSource, which in turn extends javax.sql.DataSource. So it should work.
Any ideas?
Cheers,
Dunc


Reply With Quote