Fullständig dokumentation för JPAStorageService finns här https://wiki.shibboleth.net/confluence/display/IDP30/StorageConfiguration#StorageConfiguration-JPAStorageService
- Ladda ner och lägg en av dessa drivers i "/opt/shibboleth-idp/edit-webapp/WEB-INF/lib/".
- HikariCP - http://brettwooldridge.github.io/HikariCP/
- Bonecp - http://www.jolbox.com/
- Tomcat-jdbc - http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
- http://apache.mirrors.spacedump.net/tomcat/tomcat-7/v7.0.68/bin/apache-tomcat-7.0.68.tar.gz
- Filen "apache-tomcat-7.0.68/lib/tomcat-jdbc.jar" behövs
- HikariCP - http://brettwooldridge.github.io/HikariCP/
- JPA Storage Service använder Hibernate ORM.
- Ladda ner orm.xml från https://www.switch.ch/aai/guides/idp/installation/orm.xml
- Lägg den nedladdade filen i "/opt/shibboleth-idp/edit-webapp/WEB-INF/classes/META-INF"
- Lägg till följande javabönor mot slutet av /opt/shibboleth-idp/conf/global.xml (följande är ett exempel för HikariCP och mysql)
- Uppdatera lösenordet för databasanvändaren på sista raden, har man använt installer-scriptet så finns lösenordet i global.xml mot slutet av befintlig fil.
Bean defintion
<bean id="shibboleth.JPAStorageService" class="org.opensaml.storage.impl.JPAStorageService" p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}" c:factory-ref="shibboleth.JPAStorageService.EntityManagerFactory" /> <bean id="shibboleth.JPAStorageService.EntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceUnitName" value="storageservice" /> <property name="packagesToScan" value="org.opensaml.storage.impl" /> <property name="dataSource" ref="shibboleth.JPAStorageService.DataSource" /> <property name="jpaVendorAdapter" ref="shibboleth.JPAStorageService.JPAVendorAdapter" /> <property name="jpaDialect"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> </property> </bean> <bean id="shibboleth.JPAStorageService.JPAVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="database" value="MYSQL" /> </bean> <bean id="shibboleth.JPAStorageService.DataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close" lazy-init="true" p:driverClassName="com.mysql.jdbc.Driver" p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/shibboleth?autoReconnect=true&localSocketAddress=127.0.0.1&connectTimeout=1800&initialTimeout=2&logSlowQueries=true&autoReconnectForPools=true" p:username="shibboleth" p:password="p@ssw0rd" />
- Skapa databastabell i MySQL
MySQL tabell
CREATE TABLE `StorageRecords` ( `context` varchar(255) NOT NULL, `id` varchar(255) NOT NULL, `expires` bigint(20) DEFAULT NULL, `value` longtext NOT NULL, `version` bigint(20) NOT NULL, PRIMARY KEY (`context`,`id`), KEY `storagerecords_expires_index` (`expires`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; GRANT ALL PRIVILEGES ON `shibboleth`.`StorageRecords` TO 'shibboleth'@'localhost';
- Bygg om WAR-filen
/opt/shibboleth-idp/bin/build.sh -Didp.target.dir=/opt/shibboleth-idp