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
