If I remember I'll try and create them tomorrow do a mysql dump. Feel free to shoot me an email to remind me ;-)
On Fri, Jul 3, 2009 at 11:31 AM, Andrew Tillinghast <[email protected]>wrote: > Problem with dropping it into tomcat, tomcat would have the > JTA/persistence/JNDI for this to attach to. > > I've reconstructed my maven build to build from CAS 3.3.3 > > I've created a second data source for the CAS persistence and updated the > ticket registry for spring 2.5, still getting an error that seems to > indicate the tables don't exist (still no tables in the database either) > there aren't any error indicating that the table build failed. > > Error message: > 2009-07-03 15:09:11,923 INFO > [org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] - > Starting cleaning of expired tickets from ticket registry at [Fri Jul 03 > 15:09:11 GMT 2009] > 2009-07-03 15:09:12,407 ERROR [org.quartz.core.JobRunShell] - Job > DEFAULT.jobDetailTicketRegistryCleaner threw an unhandled Exception: > org.springframework.scheduling.quartz.JobMethodInvocationFailedException: > Invocation of method 'clean' on target class [class > org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] failed; > nested exception is > org.springframework.dao.InvalidDataAccessApiUsageException: > org.hibernate.hql.ast.QuerySyntaxException: TicketGrantingTicketImpl is not > mapped [select t from TicketGrantingTicketImpl t]; nested exception is > java.lang.IllegalArgumentException: > org.hibernate.hql.ast.QuerySyntaxException: TicketGrantingTicketImpl is not > mapped [select t from TicketGrantingTicketImpl t] > at > org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) > at > org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86) > at org.quartz.core.JobRunShell.run(JobRunShell.java:203) > at > org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520) > Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: > org.hibernate.hql.ast.QuerySyntaxException: TicketGrantingTicketImpl is not > mapped [select t from TicketGrantingTicketImpl t]; nested exception is > java.lang.IllegalArgumentException: > org.hibernate.hql.ast.QuerySyntaxException: TicketGrantingTicketImpl is not > mapped [select t from TicketGrantingTicketImpl t] > at > org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:271) > at > org.springframework.orm.jpa.DefaultJpaDialect.translateExceptionIfPossible(DefaultJpaDialect.java:120) > at > org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:212) > at > org.springframework.orm.jpa.JpaAccessor.translateIfNecessary(JpaAccessor.java:152) > at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:189) > at > org.springframework.orm.jpa.JpaTemplate.executeFind(JpaTemplate.java:151) > at org.springframework.orm.jpa.JpaTemplate.find(JpaTemplate.java:311) > at org.springframework.orm.jpa.JpaTemplate.find(JpaTemplate.java:307) > at > org.jasig.cas.ticket.registry.JpaTicketRegistry.getTickets(JpaTicketRegistry.java:117) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > > TicketRegistry.xml > <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:jee="http://www.springframework.org/schema/jee" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.5.xsd > http://www.springframework.org/schema/tx > http://www.springframework.org/schema/tx/spring-tx-2.5.xsd > http://www.springframework.org/schema/jee > http://www.springframework.org/schema/jee/spring-jee-2.5.xsd"> > <!-- JPA attached to jboss persistence unit --> > <bean id="ticketRegistry" > class="org.jasig.cas.ticket.registry.JpaTicketRegistry"> > <constructor-arg index="0" ref="entityManagerFactory" /> > </bean> > <jee:jndi-lookup id="entityManagerFactory" > jndi-name="java:CasPersistence"/> > <bean id="transactionManager" > class="org.springframework.transaction.jta.JtaTransactionManager" /> > <tx:annotation-driven transaction-manager="transactionManager"/> > </beans> > > persistence.xml > <persistence xmlns="http://java.sun.com/xml/ns/persistence" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://java.sun.com/xml/ns/persistence > http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" > version="1.0"> > <persistence-unit name="CasPersistence" transaction-type="JTA"> > <provider>org.hibernate.ejb.HibernatePersistence</provider> > <jta-data-source>java:CAS</jta-data-source> > <properties> > <property name="hibernate.dialect" > value="org.hibernate.dialect.SQLServerDialect"/> > <property name="hibernate.hbm2ddl.auto" value="update"/> > <property name="hibernate.transaction.manager_lookup_class" > value="org.hibernate.transaction.JBossTransactionManagerLookup"/> > <property name="jboss.entity.manager.factory.jndi.name" > value="java:CasPersistence"/> > </properties> > </persistence-unit> > </persistence> > > cas-ds.xml > <?xml version="1.0" encoding="UTF-8"?> > <datasources> > <local-tx-datasource> > <jndi-name>CAS</jndi-name> > <connection-url>jdbc:sqlserver://devdb.conncoll.edu:1433 > ;databaseName=CAS</connection-url> > > > <driver-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</driver-class> > <user-name>xxxxx</user-name> > <password>*****</password> > <check-valid-connection-sql>SELECT 1 FROM > sysobjects</check-valid-connection-sql> > <metadata> > <type-mapping>MS SQLSERVER2000</type-mapping> > </metadata> > </local-tx-datasource> > </datasources> > > One idea I'd like to try, if anyone has the SQL script for the table create > I want to see if the persistence functions when the tables exist. > > -Andrew > > On Jun 24, 2009, at 10:20 PM, Scott Battaglia wrote: > > I'm not sure why your tables aren't being created. The typical reason is > that the database user doesn't have the appropriate permissions. Can you > drop the WAR file in a simple Tomcat instance just to see if it works from > there? (its probably a pain in the butt to do that, but I'm not familiar > enough with JBoss to tell you that something is wrong) > > > > On Wed, Jun 24, 2009 at 12:23 PM, Andrew Tillinghast < > [email protected]> wrote: > >> Ok, sorry to be confusing. Let me clarify. >> >> We're running on JBoss 5.1.0GA and for other applications we need JBoss >> rather then Tomcat, would prefer 5.X could possibly function under 4.2.x >> also seems like going 4.2 would just delay the issue. >> >> I've got CAS installed with OW, LDAP etc, but no persistence if I use >> the <bean id="ticketRegistry" >> class="org.jasig.cas.ticket.registry.DefaultTicketRegistry" /> the CAS >> service is working fine, actually deployed in production this way right now >> and working for the few hundred students that check email during the summer. >> >> We'll be "casifying" additional applications and use volume will increase >> as the summer end so we'll need High Availablity/Clustering so I'm >> attempting to establish persistence, I've reviewed the persistence overview >> here: >> http://www.ja-sig.org/wiki/display/CASUM/Service+Availability+Strategiesand >> I've chosen to go with JPA because we have an existing clustered MS SQL >> server on our backend. >> >> I've followed through the steps in the JPA instructions here: >> http://www.ja-sig.org/wiki/display/CASUM/JpaTicketRegistry >> >> However, when attempting to follow those instructions CAS startup would >> fail with "Instantiation of bean failed; nested exception is >> java.lang.NoClassDefFoundError: >> org/springframework/jdbc/datasource/lookup/DataSourceLookup" >> >> This error came up even though I tried different datasources and I made >> sure that the proper jars were in my classpath. I tried using the SQLJDBC >> drivers and data source first and then also with the jtds ones. All of them >> came back with the DataSourceLookup error. >> >> Example of one of the datasource beans I tried: >> >> <bean id="dataSource" >> class="org.springframework.jdbc.datasource.DriverManagerDataSource" >> p:driverClassName="net.sourceforge.jtds.jdbc.Driver" >> p:url="jdbc:jtds:sqlserver://devdb.conncoll.edu:1433;database=CAS;" >> p:username="xxxxxx" >> p:password="******" /> >> >> After some more research I found information about connecting the JPA >> persistence to the JBoss JTA persistence. http://www.swview.org/node/214 >> I changed my ticketRegistry.xml as per the my previous list posting. >> Now CAS starts error free and validates login but fails on creating the >> ticket when login is successful the text of the error leads me to think >> that the database connection is established but the tables aren't there when >> trying to save the ticket. >> >> Despite the error free startup I'm not seeing tables for CAS being created >> in the jboss databse (no error in CAS.log either.) >> >> CAS.log shows the following error on Clean, which is essentially the same >> error as ticket create: >> >> 2009-06-24 11:53:38,841 INFO >> [org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner] - >> Starting cleaning of expired tickets from ticket registry at [Wed Jun 24 >> 11:53:38 EDT 2009] >> 2009-06-24 11:53:39,177 ERROR [org.quartz.core.JobRunShell] - Job >> DEFAULT.jobDetailTicketRegistryCleaner threw an unhandled Exception: >> org.springframework.scheduling.quartz.JobMethodInvocationFailedException: >> Invocation of method 'clean' on target class [class $Proxy292] failed; >> nested exception is >> org.springframework.dao.InvalidDataAccessApiUsageException: >> org.hibernate.hql.ast.QuerySyntaxException: TicketGrantingTicketImpl is not >> mapped [from TicketGrantingTicketImpl]; nested exception is >> java.lang.IllegalArgumentException: >> org.hibernate.hql.ast.QuerySyntaxException: TicketGrantingTicketImpl is not >> mapped [from TicketGrantingTicketImpl] >> at >> org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) >> at >> org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86) >> at org.quartz.core.JobRunShell.run(JobRunShell.java:203) >> at >> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520) >> Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: >> org.hibernate.hql.ast.QuerySyntaxException: TicketGrantingTicketImpl is not >> mapped [from TicketGrantingTicketImpl]; nested exception is >> java.lang.IllegalArgumentException: >> org.hibernate.hql.ast.QuerySyntaxException: TicketGrantingTicketImpl is not >> mapped [from TicketGrantingTicketImpl] >> at >> org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:271) >> at >> org.springframework.orm.jpa.DefaultJpaDialect.translateExceptionIfPossible(DefaultJpaDialect.java:120) >> at >> org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:212) >> .... >> >> I fully admit that I may be misreading the error, and that the >> JNDI/JTA/JPA connection might be failing and just not generating any >> warnings or error. While I am a reasonably skilled programer I am far from a >> JAVA guru. >> At this point I am begging for assistance with persistence I am not >> restricted to JPA as the solution it just seemed the most reasonable >> clustering solution for our environment with already having established an >> HA SQL server for our other apps on the same server. >> >> -Andrew >> >> On Jun 24, 2009, at 9:49 AM, Scott Battaglia wrote: >> >> You're confusing me. ;-) What's the actual problem? Last time you said >> the tables hadn't been created now you're saying the dataource isn't >> working. >> >> >> >> >> On Wed, Jun 24, 2009 at 9:44 AM, Andrew Tillinghast < >> [email protected]> wrote: >> >>> I added that line, and I changed the JTA reference so that it's a >>> datasource, right now the CAS service starts without any errors and it >>> correctly authenticates the user, when the user successfully logs in however >>> CAS errors out with: >>> >>> 09:36:00,146 ERROR [[cas]] Servlet.service() for servlet cas threw >>> exception >>> java.lang.IllegalArgumentException: Unknown entity: >>> org.jasig.cas.ticket.TicketGrantingTicketImpl >>> at >>> org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:223) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>> at java.lang.reflect.Method.invoke(Unknown Source) >>> at >>> org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:358) >>> at $Proxy298.persist(Unknown Source) >>> at >>> org.springframework.orm.jpa.JpaTemplate$5.doInJpa(JpaTemplate.java:268) >>> at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:184) >>> at >>> org.springframework.orm.jpa.JpaTemplate.persist(JpaTemplate.java:266) >>> at >>> org.jasig.cas.ticket.registry.JpaTicketRegistry.addTicket(JpaTicketRegistry.java:48) >>> at >>> org.jasig.cas.CentralAuthenticationServiceImpl.createTicketGrantingTicket(CentralAuthenticationServiceImpl.java:425) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>> at java.lang.reflect.Method.invoke(Unknown Source) >>> at >>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) >>> at >>> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) >>> .... >>> >>> Here is my ticketRegistry,xml now: >>> >>> <?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:jee="http://www.springframework.org/schema/jee" >>> xsi:schemaLocation="http://www.springframework.org/schema/beans >>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd >>> http://www.springframework.org/schema/tx >>> http://www.springframework.org/schema/tx/spring-tx-2.0.xsd >>> http://www.springframework.org/schema/jee >>> http://www.springframework.org/schema/tx/spring-jee-2.0.xsd"> >>> <!-- JPA attached to jboss persistence unit --> >>> <bean id="ticketRegistry" >>> class="org.jasig.cas.ticket.registry.JpaTicketRegistry"> >>> <constructor-arg index="0" ref="entityManagerFactory" /> >>> </bean> >>> <bean id="entityManagerFactory" >>> class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> >>> <property name="dataSource" ref="dataSource"/> >>> <property name="jpaVendorAdapter"> >>> <bean >>> class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> >>> <property name="showSql" value="true"/> >>> <property name="generateDdl" value="true" /> >>> <property name="database" value="SQL_SERVER"/> >>> </bean> >>> </property> >>> <property name="jpaProperties"> >>> <props> >>> <prop >>> key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> >>> <prop key="hibernate.hbm2ddl.auto">update</prop> >>> <prop >>> key="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</prop> >>> <prop key="hibernate.transaction.auto_close_session">true</prop> >>> <prop key="hibernate.current_session_context_class">jta</prop> >>> <prop key="hibernate.connection.release_mode">auto</prop> >>> </props> >>> </property> >>> </bean> >>> <bean id="dataSource" >>> class="org.springframework.jndi.JndiObjectFactoryBean"> >>> <property name="jndiName" value="java:/DefaultDS"></property> >>> </bean> >>> >>> <bean id="transactionManager" >>> class="org.springframework.transaction.jta.JtaTransactionManager"> >>> <property name="transactionManagerName" value="java:/TransactionManager" >>> /> >>> <property name="autodetectUserTransaction" value="false" /> >>> </bean> >>> <tx:annotation-driven transaction-manager="transactionManager"/> >>> <!-- 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" /> <bean id="scheduler" >>> class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> >>> <property name="triggers"> <list> <ref >>> local="triggerJobDetailTicketRegistryCleaner" /> </list> </property> </bean> >>> </beans> >>> >>> At this point I have everything else working except >>> persistence/clustering any help at all would be great, or help figuring out >>> why the data source wouldn't work when I tried normal JPA instead of the JTA >>> connection. >>> >>> >>> -Andrew >>> >>> >> -- >> 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 > > > -- > 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
