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

Reply via email to