Easiest thing is to probably just remove the constraint :-) Though maybe Marvin can shed some light since they store their information in a databse. We actually write ours out to log files. -Scott
-Scott Battaglia PGP Public Key Id: 0x383733AA LinkedIn: http://www.linkedin.com/in/scottbattaglia On Wed, Apr 15, 2009 at 2:44 PM, Aleksandr Tarutin <[email protected]>wrote: > Hello, > > I'm trying to setup audit trail with CAS following > http://www.ja-sig.org/wiki/display/CASUM/Auditing+and+Statistics+Via+Inspektr > > When i try to authenticate (accessing Services Management application) I > get the following exception: > > Exception in thread "pool-2-thread-2" > org.springframework.dao.DataIntegrityViolationException: > PreparedStatementCallback > ; SQL [Insert into COM_AUDIT_TRAIL(AUD_USER, AUD_CLIENT_IP, AUD_SERVER_IP, > AUD_RESOURCE, AUD_ACTION, APPLIC_CD, AUD_DATE > ) Values(?, ?, ?, ?, ?, ?, ?)]; ORA-01400: cannot insert NULL into > ("SSO01"."COM_AUDIT_TRAIL"."AUD_USER") > ; nested exception is java.sql.SQLIntegrityConstraintViolationException: > ORA-01400: cannot insert NULL into ("SSO01"."CO > M_AUDIT_TRAIL"."AUD_USER") > > at > org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.j > ava:228) > at > org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTransl > ator.java:72) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:607) > at > org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792) > at > org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850) > at > org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858) > at > org.springframework.jdbc.core.simple.SimpleJdbcTemplate.update(SimpleJdbcTemplate.java:237) > at > org.inspektr.audit.support.JdbcAuditTrailManager$LoggingTask$1.doInTransactionWithoutResult(JdbcAuditTrailManager.ja > va:96) > at > org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutR > esult.java:33) > at > org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128) > at > org.inspektr.audit.support.JdbcAuditTrailManager$LoggingTask.run(JdbcAuditTrailManager.java:89) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: > cannot insert NULL into ("SSO01"."COM_AUDIT_TRA > IL"."AUD_USER") > > at > oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:85) > at > oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133) > at > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206) > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455) > at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413) > at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034) > at > oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194) > at > oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:953) > at > oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222) > at > oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3387) > at > oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3468) > at > oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350) > at > org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101) > at > org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:798) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591) > ... 11 more > > > Debugging the server shows that the method resolveFromInternal(final > JoinPoint joinPoint) of class > org.jasig.cas.audit.spi.TicketOrCredentialBasedAuditablePrincipalResolver > returns the following values to be set into AUD_USER column: > 1st pass: arg1 is Credentials, return is arg1.toString(); > 2nd pass: arg1 is TGT, return is > TGT.getAuthentication().getPrincipal().getId(); > 3rd pass: arg1 is ST, call on line 50 of > TicketOrCredentialBasedAuditablePrincipalResolver returns null and hence the > method returns an empty string. > > We're using our own authentication handler. > > Any clues? > > Thank you, > > AT. > -- > 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
