一、概述
在CAS中,Ticket Registry管理是配置到ticketRegistry.xml文件中的,打开此文件可以看到,默认使用DefaultTicketRegistry来将Ticket Registry保存到内存中,现在如果要将Ticket Registry保存到数据库中,就需要对这个文件进行修改。
二、操作环境
CAS版本:cas-server-3.5.2
Tomcat版本:apache-tomcat-6.0.37
三、操作步骤
1. 打开cas-server-3.5.2\cas-server-core\src\test\resources下的jpaTestApplicationContext.xml文件,将这个文件中的内容复制到ticketRegistry.xml中,然后将数据源修改成实际的数据源,最终的文件如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:sec="http://www.springframework.org/schema/security" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:location="file:database.properties" p:ignoreResourceNotFound="true" p:ignoreUnresolvablePlaceholders="true"> <property name="properties"> <props> <prop key="database.driverClass">com.mysql.jdbc.Driver</prop> <prop key="database.user">root</prop> <prop key="database.password">123456</prop> <prop key="database.url">jdbc:mysql://locahost:3306/cas</prop> <prop key="database.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="database.batchSize">1</prop> </props> </property> </bean>
<bean class="org.springframework.jdbc.datasource.SimpleDriverDataSource" id="dataSource" p:driverClass="${database.driverClass}" p:username="${database.user}" p:password="${database.password}" p:url="${database.url}" />
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="factoryBean" p:dataSource-ref="dataSource" p:jpaVendorAdapter-ref="jpaVendorAdapter"> <property name="jpaProperties"> <props> <prop key="hibernate.dialect">${database.dialect}</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.jdbc.batch_size">${database.batchSize}</prop> </props> </property> </bean>
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" id="jpaVendorAdapter" p:generateDdl="true" p:showSql="true" />
<bean class="org.jasig.cas.services.JpaServiceRegistryDaoImpl" id="dao" p:entityManagerFactory-ref="factoryBean" />
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager" p:entityManagerFactory-ref="factoryBean" />
<!-- Default Ticket Registry <bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.DefaultTicketRegistry" /> --> <bean id="ticketRegistry" class="org.jasig.cas.ticket.registry.JpaTicketRegistry" />
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
<!--Quartz --> <!-- TICKET REGISTRY CLEANER --> <bean id="ticketRegistryCleaner" class="org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner" p:ticketRegistry-ref="ticketRegistry" />
<bean id="jobDetailTicketRegistryCleaner" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" p:targetObject-ref="ticketRegistryCleaner" p:targetMethod="clean" />
<bean id="triggerJobDetailTicketRegistryCleaner" class="org.springframework.scheduling.quartz.SimpleTriggerBean" p:jobDetail-ref="jobDetailTicketRegistryCleaner" p:startDelay="20000" p:repeatInterval="5000000" /> <!-- manager transaction --> <tx:annotation-driven transaction-manager="transactionManager" /> </beans> |
2. 然后重新编译,发布到tomcat中,然后访问http://localhost:8080/cas,输入用户名和密码,登陆进去。
3. 访问数据库,就可以看到数据库中多了几个表。
转载于:https://blog.51cto.com/812824428/1342958