<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p>Hi All,<br>
<br>
I'm trying to configure my IdP with persistant database storage based on the wiki: https://wiki.shibboleth.net/confluence/display/IDP30/StorageConfiguration<br>
<br>
I've added shibboleth.JPAStorageService to the idp.conf, and the beans that the wiki mentions (see bellow) to globals.xml. I've also install the Java MySQL connector, added it to the edit-webapp directory and created the appropriate MySQL tables, as per the
 wiki. I've <br>
<br>
Once I make all these changes and restart Tomcat, the IdP fails to start and I get a bunch of errors in my catalina.out log (see bellow). There doesn't seem to be anything in the IdP logs.<br>
<br>
Any idea what could be causing this?<br>
<br>
Thanks,<br>
   David Newswanger<br>
<br>
Software:<br>
Shibboleth IdP: 3.21<br>
Tomcat: 8<br>
Java: 1.8</p>
<p>MySQL: MariaDB 5.5<br>
</p>
<p><br>
</p>
<p>--idp.properties--<br>
idp.session.StorageService = shibboleth.JPAStorageService<br>
<br>
<br>
<br>
--globals.xml--<br>
<bean id="shibboleth.JPAStorageService"<br>
    class="org.opensaml.storage.impl.JPAStorageService"                                                                                <br>
    p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}"                                                                           <br>
    c:factory-ref="shibboleth.JPAStorageService.EntityManagerFactory" />                                                               <br>
<br>
<bean id="shibboleth.JPAStorageService.EntityManagerFactory"                                                                           <br>
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">                                                        <br>
    <property name="persistenceUnitName" value="storageservice" /><br>
    <property name="packagesToScan" value="org.opensaml.storage.impl" />                                                               <br>
    <property name="dataSource" ref="shibboleth.JPAStorageService.DataSource" />                                                       <br>
    <property name="jpaVendorAdapter" ref="shibboleth.JPAStorageService.JPAVendorAdapter" />                                           <br>
    <property name="jpaDialect"><br>
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />                                                        <br>
    </property><br>
</bean>                                                                                                                                <br>
<br>
<bean id="shibboleth.JPAStorageService.JPAVendorAdapter"<br>
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">                                                              <br>
    <property name="database" value="MYSQL" />                                                                                         <br>
</bean><br>
<br>
<bean id="shibboleth.JPAStorageService.DataSource"                                                                                     <br>
    class="com.zaxxer.hikari.HikariDataSource" destroy-method="close" lazy-init="true"                                                 <br>
    p:driverClassName="com.mysql.jdbc.Driver"<br>
    p:jdbcUrl="jdbc:mysql://localhost:3306/storageservice"<br>
    p:username="shibboleth"                                                                                                            <br>
    p:password="PASSWORD" />    <br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><br>
--catalina.out--<br>
2016-03-07 15:03:54.826 [ERROR] : org.springframework.web.context.ContextLoader: Context initialization failed<br>
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.JPAStorageService.EntityManagerFactory' defined in file [/opt/shibboleth-idp/system/conf/../../conf/global.xml]: Cannot resolve reference to bean 'shibboleth.JPAStorageService.DataSource'
 while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.zaxxer.hikari.HikariDataSource] for bean with name 'shibboleth.JPAStorageService.DataSource' defined in file
 [/opt/shibboleth-idp/system/conf/../../conf/global.xml]; nested exception is java.lang.ClassNotFoundException: com.zaxxer.hikari.HikariDataSource<br>
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1051) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:828) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) [spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812) [catalina.jar:8.0.32]<br>
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255) [catalina.jar:8.0.32]<br>
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) [catalina.jar:8.0.32]<br>
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) [catalina.jar:8.0.32]<br>
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) [catalina.jar:8.0.32]<br>
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) [catalina.jar:8.0.32]<br>
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:585) [catalina.jar:8.0.32]<br>
        at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1794) [catalina.jar:8.0.32]<br>
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_73]<br>
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_73]<br>
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_73]<br>
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_73]<br>
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_73]<br>
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.zaxxer.hikari.HikariDataSource] for bean with name 'shibboleth.JPAStorageService.DataSource' defined in file [/opt/shibboleth-idp/system/conf/../../conf/global.xml];
 nested exception is java.lang.ClassNotFoundException: com.zaxxer.hikari.HikariDataSource<br>
        at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1352) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        ... 28 common frames omitted<br>
Caused by: java.lang.ClassNotFoundException: com.zaxxer.hikari.HikariDataSource<br>
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308) ~[catalina.jar:8.0.32]<br>
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1142) ~[catalina.jar:8.0.32]<br>
        at org.springframework.util.ClassUtils.forName(ClassUtils.java:250) ~[spring-core-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:394) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1397) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1344) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]<br>
        ... 34 common frames omitted<br>
07-Mar-2016 15:03:54.829 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file<br>
<br>
</p>
</div>
</body>
</html>