[jboss-user] [jBPM] - session closed
Sascha Janz
do-not-reply at jboss.com
Sat Mar 19 17:37:38 EDT 2011
Sascha Janz [http://community.jboss.org/people/AJanz] created the discussion
"session closed"
To view the discussion, visit: http://community.jboss.org/message/594254#594254
--------------------------------------------------------------
i am using seam 2.2 with jbpm.
when executing several jbpm command like signal or saveprocessinstance i got an exception "session closed"
if i execute them via command service bean from jbpm-enterprise.ear everything is ok. where is the difference?
here are my configurations.
jbpm
<jbpm-configuration>
<jbpm-context>
<service name="persistence" factory="org.jbpm.persistence.jta.JtaDbPersistenceServiceFactory" />
<service name="tx" factory="org.jbpm.tx.TxServiceFactory" />
<service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" />
<service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" />
<service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
<service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" />
</jbpm-context>
</jbpm-configuration>
hibernate
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- hibernate dialect -->
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<!-- DataSource properties (begin)
property name="hibernate.connection.datasource">java:comp/env/jdbc/JbpmDataSource</property
DataSource properties (end)
DataSource properties (begin) === -->
<property name="hibernate.connection.datasource">java:/JbpmDS</property>
<!-- ==== DataSource properties (end)
JTA transaction properties (begin) -->
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
<property name="jta.UserTransaction">java:comp/UserTransaction</property>
<!-- JTA transaction properties (end)
..
an my commmand bean
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import org.apache.log4j.Logger;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Name;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.command.Command;
import de.lorenz.soaworkflow.core.performanceprofile.Profiler;
@Name("CommandService")
@Stateful
@AutoCreate
public class CommandServiceBean implements CommandService{
private static final Logger log = Logger.getLogger(CommandServiceBean.class
.getName());
static JbpmConfiguration cfg = JbpmConfiguration
.parseResource("resources/jbpm.cfg.xml");
// AJ 22.1.2010
// default ist jetzt ohne CommandServiceBean
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public Object executeCommand(Command cmd) {
Object returnValue = null;
log.debug("Begin execute command ");
long start = 0;
if (Profiler.isProfiling())
start = Profiler.startProfile("CommandBean:executeCommand");
JbpmContext jbpmContext = null;
Connection con = null;
try {
// AJ 11.2.2010 muss jedesmal neu erzeugt werden!!!
// da n Threads hierauf zugreifen!
jbpmContext = cfg.createJbpmContext();
// con = ConnectionManager.getInstance().getConnection();
// jbpmContext.setConnection(con);
if (jbpmContext == null)
throw new Exception("Error now jbpm context!");
returnValue = cmd.execute(jbpmContext);
} catch (Exception e) {
log.error("Error executeCommand", e);
} finally {
if (jbpmContext != null) {
jbpmContext.close();
jbpmContext = null;
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
log.debug("End execute command ");
if (Profiler.isProfiling())
Profiler.endProfile("CommandBean:executeCommand", start);
return returnValue;
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public Object executeCommands(List<Command> cmdlist) {
Object returnValue = null;
log.debug("Begin executeCommands ");
long start = 0;
if (Profiler.isProfiling())
start = Profiler.startProfile("CommandBean:executeCommands");
JbpmContext jbpmContext = null;
Connection con = null;
try {
// AJ 11.2.2010 muss jedesmal neu erzeugt werden!!!
// da n Threads hierauf zugreifen!
jbpmContext = cfg.createJbpmContext();
// con = ConnectionManager.getInstance().getConnection();
// jbpmContext.setConnection(con);
if (jbpmContext == null)
throw new Exception("Error now jbpm context!");
for ( Command cmd : cmdlist ) {
System.out.println("execute " + cmd.getClass().getName());
returnValue = cmd.execute(jbpmContext);
}
} catch (Exception e) {
log.error("Error CommandBean:executeCommands", e);
} finally {
if (jbpmContext != null) {
jbpmContext.close();
jbpmContext = null;
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
log.debug("End CommandBean:executeCommands");
if (Profiler.isProfiling())
Profiler.endProfile("CommandBean:executeCommands", start);
return returnValue;
}
@Remove
public void remove () {
System.out.println("remove command service ");
}
}
stacktrace
SignalCommand
17:39:58,804 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TwoPhaseC
ordinator_2] TwoPhaseCoordinator.beforeCompletion - failed for com.arjuna.ats.i
ternal.jta.resources.arjunacore.SynchronizationImple at 1ee32dd
org.hibernate.SessionException: Session is closed!
at org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSession
mpl.java:49)
at org.hibernate.impl.SessionImpl.getNamedQuery(SessionImpl.java:1258)
at org.jbpm.db.JobSession$DeleteJobsSynchronization.beforeCompletion(Jo
Session.java:190)
at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImpl
.beforeCompletion(SynchronizationImple.java:114)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompleti
n(TwoPhaseCoordinator.java:247)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCo
rdinator.java:86)
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.
ommitAndDisassociate(TransactionImple.java:1389)
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.c
mmit(BaseTransaction.java:135)
at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTr
nsactionManagerDelegate.java:87)
at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
at org.jboss.aspects.tx.TxInterceptor$RequiresNew.invoke(TxInterceptor.
--------------------------------------------------------------
Reply to this message by going to Community
[http://community.jboss.org/message/594254#594254]
Start a new discussion in jBPM at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110319/0647cefe/attachment-0001.html
More information about the jboss-user
mailing list