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

Reply via email to