jboss7.x - Hibernate 4 is not working c3p0 on JBoss 7 -
when deploy spring4-hibernate-4 application on jboss7, throws error , deployment fails. details:
configuration code:
@configuration @enabletransactionmanagement @componentscan(basepackages = { "com.arg.utility.hibernate" }) @propertysource(value = { "classpath:application.properties" }) public class hibernateconfigws { @bean public localsessionfactorybean sessionfactoryws() throws sqlexception, namingexception { localsessionfactorybean sessionfactory = new localsessionfactorybean(); sessionfactory.setdatasource(datasourcews()); sessionfactory.setpackagestoscan(new string[] { "com.arg.utility.hibernate.model" }); sessionfactory.sethibernateproperties(hibernateproperties()); return sessionfactory; } @bean @lazy public datasource datasourcews() throws sqlexception, namingexception { initialcontext initcontext = new initialcontext(); datasource ds = null; try{ ds = (datasource)initcontext.lookup(system.getproperty(utilityconstants.jndi_ws_datasource)); }catch(exception e){ logger.error("datasource lookup failed :"+e.getstacktrace()); } return ds; } @bean public hibernatetransactionmanager transactionmanagerws(sessionfactory sessionfactoryws) { hibernatetransactionmanager txmanager = new hibernatetransactionmanager(); txmanager.setsessionfactory(sessionfactoryws); return txmanager; } //----------------------hibernate common properties config---------------------// /** * * @return properties object */ private properties hibernateproperties() { properties properties = new properties(); properties.put("hibernate.dialect", environment.getrequiredproperty("hibernate.dialect")); properties.put("hibernate.show_sql", "false"); properties.put("hibernate.format_sql", environment.getrequiredproperty("hibernate.format_sql")); /*properties.put("hibernate.connection.provider_class", "org.hibernate.c3p0.internal.c3p0connectionprovider"); // commented properties.put("hibernate.c3p0.min_size", "5"); // commented properties.put("hibernate.c3p0.max_size", "20"); // commented properties.put("hibernate.c3p0.timeout", "1800"); // commented properties.put("hibernate.c3p0.max_statements", "50");*/ // commented return properties; } } datasource entry in jboss 7 standalone.xml:
<datasource jndi-name="java:/wsdatasource" pool-name="wsdatasource" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://dshost:3306/ds_name</connection-url> <connection-property name="zerodatetimebehavior"> converttonull </connection-property> <driver>com.mysql</driver> <pool> <min-pool-size>0</min-pool-size> <max-pool-size>10</max-pool-size> <prefill>true</prefill> </pool> <security> <user-name>abc</user-name> <password>abc@123</password> </security> <validation> <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.mysqlvalidconnectionchecker"/> <validate-on-match>false</validate-on-match> <background-validation>true</background-validation> <background-validation-millis>30000</background-validation-millis> <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.mysqlexceptionsorter"/> </validation> </datasource> while deploying application, following error:
<<< serverservice thread pool -- 68:2017/04/07 16:20:54.676:org.springframework.web.context.contextloader::::: context initialization failed >>> org.springframework.beans.factory.beancreationexception: error creating bean name 'transactionmanagerws' defined in com.arg.hibernate.config.hibernateconfigws: invocation of init method failed; nested exception org.hibernate.service.unknownunwraptypeexception: cannot unwrap requested type [javax.sql.datasource] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1628) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:555) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:483) @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:306) @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:230) @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:302) @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:197) @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:761) @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:866) @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:542) @ org.springframework.web.context.contextloader.configureandrefreshwebapplicationcontext(contextloader.java:444) @ org.springframework.web.context.contextloader.initwebapplicationcontext(contextloader.java:326) @ org.springframework.web.context.contextloaderlistener.contextinitialized(contextloaderlistener.java:107) @ io.undertow.servlet.core.applicationlisteners.contextinitialized(applicationlisteners.java:187) @ io.undertow.servlet.core.deploymentmanagerimpl.deploy(deploymentmanagerimpl.java:198) @ org.wildfly.extension.undertow.deployment.undertowdeploymentservice.startcontext(undertowdeploymentservice.java:100) @ org.wildfly.extension.undertow.deployment.undertowdeploymentservice$1.run(undertowdeploymentservice.java:82) @ java.util.concurrent.executors$runnableadapter.call(unknown source) @ java.util.concurrent.futuretask.run(unknown source) @ java.util.concurrent.threadpoolexecutor.runworker(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ java.lang.thread.run(unknown source) @ org.jboss.threads.jbossthread.run(jbossthread.java:320) caused by: org.hibernate.service.unknownunwraptypeexception: cannot unwrap requested type [javax.sql.datasource] @ org.hibernate.engine.jdbc.connections.internal.usersuppliedconnectionproviderimpl.unwrap(usersuppliedconnectionproviderimpl.java:55) @ org.springframework.orm.hibernate4.sessionfactoryutils.getdatasource(sessionfactoryutils.java:106) @ org.springframework.orm.hibernate4.hibernatetransactionmanager.afterpropertiesset(hibernatetransactionmanager.java:356) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.invokeinitmethods(abstractautowirecapablebeanfactory.java:1687) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1624) ... 22 more when uncomment c3p0 properties setting lines in config file, application deployed (but later throws exception while creating connection). however, requirement don't have use c3p0. queries:
- is possible run hibernate 4 on jboss 7 without using c3p0?
- if yes, how? other configuration needed?
if @ stack trace refers usersuppliedconnectionproviderimpl. exception being thrown. based on configuration , code in connectionproviderinitiator.initiateservice have expected instance of datasourceconnectionproviderimpl instead.
availablesettings.datasource set localsessionfactorybuilder.localsessionfactorybuilder constructor if datasource has been provided yours has. sure jndi lookup isn't silently returning null?
Comments
Post a Comment