I'm not sure either, I'm going to step back through and see what I can  
find.

On the other hand I found this: 
http://docs.jboss.org/jbportal/v2.7.1/referenceGuide/html/sso.html

This appears to set CAS to use Jboss as the authentication source.

Doing a little extrapolation, if I enabled JBoss to authenticate  
against my ldap, with the JBoss SSO/Persistence configured behind the  
scenes and then tied CAS on that wouldn't I end up with persistent CAS  
and the added benefit  of single sign on to the JBoss components?

A JBoss LDap guide being available here: 
http://docs.hp.com/en/5992-3330/ch02s06.html

-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+Strategies 
>  and 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

Reply via email to