[jboss-user] [JBoss jBPM] - JBPM Logging Filter Not Working As Described

bdavis do-not-reply at jboss.com
Thu Jan 22 16:12:51 EST 2009


I tried to create a log filter as described in: Chapter 17 of the documentation.

http://docs.jboss.org/jbpm/v3/userguide/logging.html

Here is the code for my logger:

  | package org.jbpm.logging.db;
  | 
  | import java.util.Collection;
  | import java.util.HashSet;
  | import java.util.List;
  | import java.util.Set;
  | import java.util.logging.Logger;
  | 
  | import org.apache.commons.logging.Log;
  | import org.apache.commons.logging.LogFactory;
  | import org.jbpm.logging.log.ProcessLog;
  | 
  | public class FilteredDbLoggingService extends DbLoggingService {
  | 
  | 	private static final Log LOG = LogFactory.getLog(FilteredDbLoggingService.class);
  | 	private static Set<Class> classFilter;
  | 	public FilteredDbLoggingService(Set<Class> classFilter) {
  | 		super();
  | 		if(classFilter!=null)
  | 		{
  | 			LOG.debug("Set class filters.");
  | 			this.classFilter = (classFilter);
  | 		}
  | 		else
  | 		{
  | 			this.classFilter = new HashSet<Class>();
  | 		}
  | 	}
  | 	
  | 	@Override
  | 	public void log(ProcessLog processLog) {
  | 		if(classFilter.contains(processLog.getClass()))
  | 		{
  | 			super.log(processLog);
  | 		}
  | 		else if(LOG.isDebugEnabled())
  | 		{
  | 			LOG.debug("Class not found: "+processLog.getClass());
  | 		}
  | 	}
  | }
  | 
  | 

This is getting called successfully, as I have wired in my factory which uses the logger above.  

However, I get the following exception when I run JBPM in the container:


  | java.lang.RuntimeException: javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state
  | 	at org.jboss.aspects.tx.TxPolicy.handleEndTransactionException(TxPolicy.java:198)
  | 	at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:180)
  | 	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
  | 	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:94)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
  | 	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:106)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.service.ServiceContainer.localInvoke(ServiceContainer.java:309)
  | 	at org.jboss.ejb3.service.ServiceLocalProxy.invoke(ServiceLocalProxy.java:77)
  | 	at $Proxy165.startActionUnitWorkflow(Unknown Source)
  | 	at com.enernoc.actionService.action.jms.ActionUnitWorkflowCreateQueueConsumerMdb.onMessage(ActionUnitWorkflowCreateQueueConsumerMdb.java:32)
  | 	at sun.reflect.GeneratedMethodAccessor758.invoke(Unknown Source)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 	at java.lang.reflect.Method.invoke(Method.java:585)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
  | 	at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
  | 	at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.tx.BMTInterceptor.handleStateless(BMTInterceptor.java:71)
  | 	at org.jboss.ejb3.tx.BMTInterceptor.invoke(BMTInterceptor.java:131)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.mdb.MessagingContainer.localInvoke(MessagingContainer.java:245)
  | 	at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.delivery(MessageInflowLocalProxy.java:268)
  | 	at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.invoke(MessageInflowLocalProxy.java:138)
  | 	at $Proxy178.onMessage(Unknown Source)
  | 	at org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:178)
  | 	at org.jboss.jms.client.container.ClientConsumer.callOnMessageStatic(ClientConsumer.java:160)
  | 	at org.jboss.jms.client.container.SessionAspect.handleRun(SessionAspect.java:831)
  | 	at org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect14.invoke(SessionAspect14.java)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate$run_N8003352271541955702.invokeNext(ClientSessionDelegate$run_N8003352271541955702.java)
  | 	at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
  | 	at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:105)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate$run_N8003352271541955702.invokeNext(ClientSessionDelegate$run_N8003352271541955702.java)
  | 	at org.jboss.jms.client.delegate.ClientSessionDelegate.run(ClientSessionDelegate.java)
  | 	at org.jboss.jms.client.JBossSession.run(JBossSession.java:199)
  | 	at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:237)
  | 	at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
  | 	at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
  | 	at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
  | 	at java.lang.Thread.run(Thread.java:595)
  | Caused by: javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state
  | 	at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1394)
  | 	at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
  | 	at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
  | 	at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
  | 	... 51 more
  | Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: org.jbpm.logging.log.CompositeLog
  | 	at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)
  | 	at org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)
  | 	at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:242)
  | 	at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:597)
  | 	at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:3123)
  | 	at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:479)
  | 	at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:204)
  | 	at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:127)
  | 	at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
  | 	at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
  | 	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
  | 	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
  | 	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
  | 	at org.hibernate.transaction.CacheSynchronization.beforeCompletion(CacheSynchronization.java:59)
  | 	at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)
  | 	at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:247)
  | 	at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:86)
  | 	at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
  | 	at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1382)
  | 	... 54 more
  | 

We are running 3.2.6GA in the container, with JBPM Enterprise EAR deployed.  Here is the configuration I have for JBPM.


  | <jbpm-configuration>
  |   <jbpm-context>
  |     <service name="persistence" factory="org.jbpm.persistence.jta.JtaDbPersistenceServiceFactory" />
  |     <service name="message" factory="org.jbpm.msg.jms.JmsMessageServiceFactory" />
  |     <service name="scheduler" factory="org.jbpm.scheduler.ejbtimer.EntitySchedulerServiceFactory" />
  |     <service name="tx" factory="org.jbpm.tx.TxServiceFactory" />
  |     <service name="logging">
  | 		<factory>
  | 			<bean class="org.jbpm.logging.db.FilteredDbLoggingServiceFactory">
  | 				<property name="filteredClasses">										
  | 					  <list>
  | 						<string>org.jbpm.graph.log.TransitionLog</string>
  | 					  </list>
  | 				</property>
  | 			</bean>
  | 		</factory>
  | 	</service>
  | 	
  |     <service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" />
  |   </jbpm-context>
  | 
  |   <null name="jbpm.job.executor" />
  |   
  | </jbpm-configuration>
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4204122#4204122

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4204122



More information about the jboss-user mailing list