Tomcat 7 : NamingException ClassNotFoundException tomcat.dbcp.dbcp.BasicDataSourceFactory
Bonita 6.2.3
EC2 Linux
MySQL 5.5
Tomcat 7
When I bring up tomcat 7 I see the following exception in the tomcat 7 logs:
WARNING: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
SEVERE: Error while initializing the Engine
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'recorderSync' defined in file [/usr/share/tomcat7/bonita_home/server/platform/conf/services/platform-cfg.xml]: Cannot resolve reference to bean 'persistenceService' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistenceService' defined in file [/usr/share/tomcat7/bonita_home/server/platform/conf/services/cfg-bonita-persistence-hibernate.xml]: Cannot resolve reference to bean 'sequenceManager' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sequenceManager' defined in file [/usr/share/tomcat7/bonita_home/server/platform/conf/services/cfg-bonita-sequence-impl.xml]: Cannot resolve reference to bean 'bonitaSequenceManagerDSJNDI' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bonitaSequenceManagerDSJNDI' defined in file [/usr/share/tomcat7/bonita_home/server/platform/conf/services/cfg-bonita-ds.xml]: Invocation of init method failed; nested exception is javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bonitaSequenceManagerDSJNDI' defined in file [/usr/share/tomcat7/bonita_home/server/platform/conf/services/cfg-bonita-ds.xml]: Invocation of init method failed; nested exception is javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:630)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:609)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
at org.bonitasoft.engine.service.impl.AbsoluteFileSystemXmlApplicationContext.<init>(AbsoluteFileSystemXmlApplicationContext.java:41)
at org.bonitasoft.engine.service.impl.SpringPlatformFileSystemBeanAccessor.initializeContext(SpringPlatformFileSystemBeanAccessor.java:81)
at org.bonitasoft.engine.service.impl.SpringPlatformFileSystemBeanAccessor.getContext(SpringPlatformFileSystemBeanAccessor.java:72)
Caused by: java.lang.RuntimeException: Your bonita.home is corrupted: Folder 'services' not found on tenant /usr/share/tomcat7/bonita_home/server/tenants/1/conf
Something is not right in bonita.home. Can you try following:
1. Drop BonitaDB
2. Recreate DB (or just create a new DB with different name and grants privileges to user account) - make sure to change the DB configration if you change the DB name.
3. remove temp folder from tomcat root
4. Remove tenants/1 folder from BONITA.HOME/client
5. Remove tenants folder from BONITA.HOME/server
6. restart the tomcat server
Also, you may not need this paramter -- you can try without this first - "factory="org.apache.commons.dbcp.BasicDataSourceFactory"
Let me know how it goes.
Comments
There was no tenants/1 folder under client. There is no tenants folder under server. I dropped the database and restarted and I have the same error.
Do I have to do something with the client/platform/conf/platform-tenant-config.properties to get it to create something in my tenant dirs? I tried with the settings below and still get no where.
platform.tenant.default.id=1
platform.tenant.default.username=bonita
platform.tenant.default.password=.......
platform.tenant.default.name=default
platform.username=admin
platform.password=........
platform.tenant.default.username=install
platform.tenant.default.description=The default tenant
platform.tenant.default.use=true
platform.create=false
platform.tenant.create=true
platform.stop=true
platform.tenant.default.password=bpm
platform.start=true
Hello Mark.
I searched for the BasicDataSourceFactory classNotFound error you are having and I found a StackOverflow post regarding that error.
One of the answers in that posting states that the tomcat-dbcp-7.0.30.jar file is corrupt and another jar file is suggested.
The person who posted the error stated that the new jar fixed his problem. So while I can't say if it will work for you, it might be worth a try.
Comments
When I do that I get this error in the bonita.log:
Mar 12, 2014 6:32:53 PM org.bonitasoft.engine.log.technical.TechnicalLoggerSLF4JImpl log
SEVERE: We do not support nested calls to the transaction service.
org.bonitasoft.engine.transaction.STransactionCreationException: We do not support nested calls to the transaction service.
at org.bonitasoft.engine.transaction.JTATransactionServiceImpl.begin(JTATransactionServiceImpl.java:60)
at com.bonitasoft.engine.transaction.JTATransactionServiceExt.executeInTransaction(JTATransactionServiceExt.java:57)
at org.bonitasoft.engine.execution.TransactionExecutorImpl.execute(TransactionExecutorImpl.java:50)
at org.bonitasoft.engine.api.impl.PlatformAPIImpl.deleteTenant(PlatformAPIImpl.java:651)
at org.bonitasoft.engine.api.impl.PlatformAPIImpl.createDefaultTenant(PlatformAPIImpl.java:526)
at org.bonitasoft.engine.api.impl.PlatformAPIImpl.initializePlatform(PlatformAPIImpl.java:194)
at com.bonitasoft.engine.api.impl.PlatformAPIExt.initializePlatform(PlatformAPIExt.java:155)
at org.bonitasoft.engine.api.impl.PlatformAPIImpl.createAndInitializePlatform(PlatformAPIImpl.java:214)
at org.bonitasoft.engine.PlatformTenantManager.createPlatform(PlatformTenantManager.java:45)
at org.bonitasoft.engine.EngineInitializer.initPlatform(EngineInitializer.java:114)
at org.bonitasoft.engine.EngineInitializer.initializeEngine(EngineInitializer.java:81)
at com.bonitasoft.engine.api.internal.servlet.EngineInitializerListenerSP.contextInitialized(EngineInitializerListenerSP.java:38)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:663)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1642)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:701)
Mar 12, 2014 6:32:53 PM org.bonitasoft.engine.log.technical.TechnicalLoggerSLF4JImpl log
WARNING: Unable to create tenant default
org.bonitasoft.engine.platform.STenantCreationException: Unable to create tenant default
at org.bonitasoft.engine.api.impl.PlatformAPIImpl.createDefaultTenant(PlatformAPIImpl.java:561)
at org.bonitasoft.engine.api.impl.PlatformAPIImpl.initializePlatform(PlatformAPIImpl.java:194)
at com.bonitasoft.engine.api.impl.PlatformAPIExt.initializePlatform(PlatformAPIExt.java:155)
at org.bonitasoft.engine.api.impl.PlatformAPIImpl.createAndInitializePlatform(PlatformAPIImpl.java:214)
at org.bonitasoft.engine.PlatformTenantManager.createPlatform(PlatformTenantManager.java:45)
at org.bonitasoft.engine.EngineInitializer.initPlatform(EngineInitializer.java:114)
at org.bonitasoft.engine.EngineInitializer.initializeEngine(EngineInitializer.java:81)
at com.bonitasoft.engine.api.internal.servlet.EngineInitializerListenerSP.contextInitialized(EngineInitializerListenerSP.java:38)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:663)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1642)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:701)
Caused by: org.bonitasoft.engine.platform.STenantDeletionException: org.bonitasoft.engine.transaction.STransactionCreationException: We do not support nested calls to the transaction service.
at org.bonitasoft.engine.api.impl.PlatformAPIImpl.deleteTenant(PlatformAPIImpl.java:668)
at org.bonitasoft.engine.api.impl.PlatformAPIImpl.createDefaultTenant(PlatformAPIImpl.java:526)
... 21 more
Seems like issue with your config files. Can you share them?
Have you tried Tomcat bundle with MYSQL?
Comments
This is my msql config in Catalina/localhost/bonita.xml. Adding the factory= line allows me to get further but then I get the exception above about nested transactions.
<Resource name="bonitaSequenceManagerDS"
auth="Container"
type="javax.sql.DataSource"
maxActive="17"
minIdle="5"
maxWait="10000"
initialSize="3"
maxPoolSize="15"
minPoolSize="3"
maxConnectionAge="0"
maxIdleTime="1800"
maxIdleTimeExcessConnections="120"
idleConnectionTestPeriod="30"
acquireIncrement="3"
validationQuery="SELECT 1"
validationInterval="30000"
testConnectionOnCheckout="true"
removeAbandoned="true"
logAbandoned="true"
username="bonita"
password="bonita"
driverClassName="com.mysql.jdbc.Driver"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
url="jdbc:mysql://localhost:3306/bonita?dontTrackOpenResources=true&useUnicode=true&characterEncoding=UTF-8"/>
Comments
Here is where I am now. My bonita log shows this: