Hi Dmitriy,

Thanks for the hint, seems indeed a better approach as far as HA goes. 
However, I'm not the one that decides over that, so I'd like to solve 
the issue with MySQL as well just in case. When declaring the JPA way of 
storing services, it seems to work quite well. It's just the 
configuration to store tickets in MySQL in tickerRegistry.xml that 
fails, like there was some kind of ambiguity:

    org.springframework.beans.factory.BeanCreationException: Error
    creating bean with name 'ticketRegistryCleaner' defined in
    ServletContext resource
    [/WEB-INF/spring-configuration/ticketRegistry.xml]: Could not
    resolve matching constructor (hint: specify index/type/name
    arguments for simple parameters to avoid type ambiguities)

I'm unable to find similar cases on Google, though. Have someone faced 
that problem and did successfully solved it?

Thanks.

Nicolás

El 20/09/15 a las 22:13, Dmitriy Kopylenko escribió:
> For the HA set up, there are more attractive and easier to maintain 
> options in CAS to consider other than RDBMS like Hazelcast Ticket 
> Registry for example which is part of CAS core now:
>
> http://jasig.github.io/cas/development/installation/Hazelcast-Ticket-Registry.html
>
> Best,
> Dmitriy.
>
>
> Sent from my iPhone
>
> On Sep 20, 2015, at 13:47, Nicolás <[email protected] 
> <mailto:[email protected]>> wrote:
>
>> Hi,
>>
>> I'm running CAS 4.1.0 and trying to configure ticketing via MySQL, 
>> because we want to deploy this version for HA. For that, I've done 
>> the following steps:
>>
>> 1) ticketRegistry.xml file: Basically the same as 
>> http://jasig.github.io/cas/4.1.x/installation/JPA-Ticket-Registry.html says 
>> in Configuration + Connection pooling.
>>
>>     <?xml version="1.0" encoding="UTF-8"?>
>>     <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>            xmlns:p="http://www.springframework.org/schema/p";
>>            xmlns:c="http://www.springframework.org/schema/c";
>>            xmlns:tx="http://www.springframework.org/schema/tx";
>>            xmlns:util="http://www.springframework.org/schema/util";
>>            xmlns="http://www.springframework.org/schema/beans";
>>           
>>     xsi:schemaLocation="http://www.springframework.org/schema/beans
>>     http://www.springframework.org/schema/beans/spring-beans.xsd
>>     http://www.springframework.org/schema/tx
>>     http://www.springframework.org/schema/tx/spring-tx.xsd
>>     http://www.springframework.org/schema/util
>>     http://www.springframework.org/schema/util/spring-util.xsd";>
>>         <description>
>>             Configuration for the default TicketRegistry which stores
>>     the tickets in-memory and cleans them out as specified
>>             intervals.
>>         </description>
>>
>>         <bean id="ticketRegistry"
>>     class="org.jasig.cas.ticket.registry.JpaTicketRegistry" />
>>
>>         <bean
>>     
>> class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
>>
>>         <util:list id="packagesToScan">
>>             <value>org.jasig.cas.services</value>
>>             <value>org.jasig.cas.ticket</value>
>>     <value>org.jasig.cas.adaptors.jdbc</value>
>>         </util:list>
>>
>>         <bean
>>     class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
>>             id="jpaVendorAdapter"
>>             p:generateDdl="true"
>>             p:showSql="true" />
>>
>>         <bean id="entityManagerFactory"
>>     
>> class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
>>             p:dataSource-ref="dataSource"
>>             p:jpaVendorAdapter-ref="jpaVendorAdapter"
>>             p:packagesToScan-ref="packagesToScan">
>>             <property name="jpaProperties">
>>               <props>
>>                 <prop key="hibernate.dialect">${database.dialect}</prop>
>>                 <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
>>                 <prop
>>     key="hibernate.jdbc.batch_size">${database.batchSize}</prop>
>>               </props>
>>             </property>
>>         </bean>
>>
>>         <bean id="transactionManager"
>>     class="org.springframework.orm.jpa.JpaTransactionManager"
>>     p:entityManagerFactory-ref="entityManagerFactory" />
>>
>>         <tx:annotation-driven transaction-manager="transactionManager" />
>>
>>         <bean id="ticketRegistryCleaner"
>>     
>> class="org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner"
>>               c:ticketRegistry-ref="ticketRegistry"
>>               c:lockingStrategy-ref="cleanerLock"
>>               c:logoutManager-ref="logoutManager" />
>>
>>         <bean id="cleanerLock"
>>     class="org.jasig.cas.ticket.registry.support.JpaLockingStrategy"
>>                 p:uniqueId="${host.name}"
>>                 p:applicationId="cas-ticket-registry-cleaner" />
>>
>>         <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" />
>>
>>         <bean id="dataSource"
>>               class="com.mchange.v2.c3p0.ComboPooledDataSource"
>>               p:driverClass="${database.driverClass}"
>>               p:jdbcUrl="${database.url}"
>>               p:user="${database.user}"
>>               p:password="${database.password}"
>>               p:initialPoolSize="${database.pool.minSize}"
>>               p:minPoolSize="${database.pool.minSize}"
>>               p:maxPoolSize="${database.pool.maxSize}"
>>     p:maxIdleTimeExcessConnections="${database.pool.maxIdleTime}"
>>               p:checkoutTimeout="${database.pool.maxWait}"
>>     p:acquireIncrement="${database.pool.acquireIncrement}"
>>     p:acquireRetryAttempts="${database.pool.acquireRetryAttempts}"
>>     p:acquireRetryDelay="${database.pool.acquireRetryDelay}"
>>     p:idleConnectionTestPeriod="${database.pool.idleConnectionTestPeriod}"
>>     p:preferredTestQuery="${database.pool.connectionHealthQuery}"
>>               />
>>     </beans>
>>
>> 2) cas.properties:
>>
>>     database.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
>>     database.driverClass=com.mysql.jdbc.Driver
>>     database.url=jdbc:mysql://localhost/cas?ssl=false
>>     database.user=cas
>>     database.password=mypassword
>>
>> The rest, as defined in the PostgreSQL example on 
>> http://jasig.github.io/cas/4.1.x/installation/JPA-Ticket-Registry.html
>>
>> 3) pom.xml:
>>
>>         <dependency>
>>              <groupId>org.jasig.cas</groupId>
>> <artifactId>cas-server-support-jdbc</artifactId>
>>              <version>${cas.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.hibernate</groupId>
>> <artifactId>hibernate-core</artifactId>
>> <version>${hibernate.core.version}</version>
>>             <scope>runtime</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.hibernate</groupId>
>> <artifactId>hibernate-entitymanager</artifactId>
>> <version>${hibernate.core.version}</version>
>>             <scope>runtime</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>mysql</groupId>
>> <artifactId>mysql-connector-java</artifactId>
>> <version>${mysql.connector.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>commons-dbcp</groupId>
>>             <artifactId>commons-dbcp</artifactId>
>> <version>${commons.dbcp.version}</version>
>>             <scope>runtime</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>c3p0</groupId>
>>             <artifactId>c3p0</artifactId>
>>             <version>${c3p0.version}</version>
>>             <scope>runtime</scope>
>>         </dependency>
>>
>> <hibernate.core.version>4.3.10.Final</hibernate.core.version>
>> <mysql.connector.version>5.1.6</mysql.connector.version>
>> <commons.dbcp.version>1.4</commons.dbcp.version>
>>         <c3p0.version>0.9.1.2</c3p0.version>
>>
>> The problem happens when deploying the app, in the logs I see the 
>> following exception. I tried even different versions of the 
>> dependencies and nothing seems to help. Seems to me that there's some 
>> unmet dependency but I can't find out which one is it. Any help or 
>> tip is really appreciated:
>>
>>     sep 20, 2015 6:39:58 PM org.hibernate.tool.hbm2ddl.SchemaExport
>>     execute
>>     INFO: HHH000230: Schema export complete
>>     2015-09-20 18:40:01,264 WARN
>>     [org.springframework.web.context.support.XmlWebApplicationContext] -
>>     <Exception encountered during context initialization - cancelling
>>     refresh attempt
>>     org.springframework.beans.factory.BeanCreationException: Error
>>     creating bean with name 'ticketRegistry': Injection of
>>     persistence dependencies failed; nested exception is
>>     org.springframework.beans.factory.CannotLoadBeanClassException:
>>     Cannot find class
>>     [org.springframework.scheduling.quartz.SimpleTriggerBean] for
>>     bean with name 'triggerJobDetailTicketRegistryCleaner' defined in
>>     ServletContext resource
>>     [/WEB-INF/spring-configuration/ticketRegistry.xml]; nested
>>     exception is java.lang.ClassNotFoundException:
>>     org.springframework.scheduling.quartz.SimpleTriggerBean
>>         at
>>     
>> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessPropertyValues(PersistenceAnnotationBeanPostProcessor.java:357)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
>>         at
>>     
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
>>         at
>>     
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
>>         at
>>     
>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
>>         at
>>     
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
>>         at
>>     
>> org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
>>         at
>>     
>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
>>         at
>>     
>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
>>         at
>>     
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
>>         at
>>     
>> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
>>         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:632)
>>         at
>>     org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073)
>>         at
>>     
>> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
>>         at
>>     java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>         at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>>         at
>>     
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>         at
>>     
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>         at java.lang.Thread.run(Thread.java:745)
>>     Caused by:
>>     org.springframework.beans.factory.CannotLoadBeanClassException:
>>     Cannot find class
>>     [org.springframework.scheduling.quartz.SimpleTriggerBean] for
>>     bean with name 'triggerJobDetailTicketRegistryCleaner' defined in
>>     ServletContext resource
>>     [/WEB-INF/spring-configuration/ticketRegistry.xml]; nested
>>     exception is java.lang.ClassNotFoundException:
>>     org.springframework.scheduling.quartz.SimpleTriggerBean
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1328)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:622)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:591)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1397)
>>         at
>>     
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:434)
>>         at
>>     
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:412)
>>         at
>>     
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:398)
>>         at
>>     
>> org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:143)
>>         at
>>     
>> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findDefaultEntityManagerFactory(PersistenceAnnotationBeanPostProcessor.java:562)
>>         at
>>     
>> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findEntityManagerFactory(PersistenceAnnotationBeanPostProcessor.java:531)
>>         at
>>     
>> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor$PersistenceElement.resolveEntityManager(PersistenceAnnotationBeanPostProcessor.java:697)
>>         at
>>     
>> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor$PersistenceElement.getResourceToInject(PersistenceAnnotationBeanPostProcessor.java:670)
>>         at
>>     
>> org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169)
>>         at
>>     
>> org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
>>         at
>>     
>> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessPropertyValues(PersistenceAnnotationBeanPostProcessor.java:354)
>>         ... 26 more
>>     Caused by: java.lang.ClassNotFoundException:
>>     org.springframework.scheduling.quartz.SimpleTriggerBean
>>         at
>>     
>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
>>         at
>>     
>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
>>         at
>>     org.springframework.util.ClassUtils.forName(ClassUtils.java:249)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:395)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1349)
>>         at
>>     
>> org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1320)
>>         ... 40 more
>>
>>
>> -- 
>> You are currently subscribed [email protected] 
>> <mailto:[email protected]>  as:[email protected] 
>> <mailto:[email protected]>
>> To unsubscribe, change settings or access archives, 
>> seehttp://www.ja-sig.org/wiki/display/JSG/cas-user
> -- 
> You are currently subscribed to [email protected] as: [email protected]
> To unsubscribe, change settings or access archives, see 
> http://www.ja-sig.org/wiki/display/JSG/cas-user


-- 
You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-user

Reply via email to