[jbossseam-issues] [JBoss JIRA] Updated: (JBSEAM-2575) The jta transaction manager returns a null transaction when ending a process that was triggered by a jbpm timer.

Peter Brewer (JIRA) jira-events at lists.jboss.org
Mon Feb 4 09:49:04 EST 2008


     [ http://jira.jboss.com/jira/browse/JBSEAM-2575?page=all ]

Peter Brewer updated JBSEAM-2575:
---------------------------------

    Attachment: timertest.zip

Attached is a test project (created via seam-gen v2.0.0.GA) that can be used to replicate this error.
It includes all the files generated by seam-gen *except for the bootstrap and lib directories.* (due to size constraints)

In particular there is a ready to deploy timertest.ear file that will auto start the workflow after one minute (and repeats every 5 minutes). The workflow has a start node, a task node with a 15sec timeout and an end node.

There is also a timerTest.xhtml file that can be used to create the workflow via a webpage.

Full file list:
timertest\.classpath
timertest\.project
timertest\.settings
timertest\build-dev.properties
timertest\build-prod.properties
timertest\build.properties
timertest\build.xml
timertest\classes
timertest\dist
timertest\explode.launch
timertest\filelist.txt
timertest\hibernate-console.properties
timertest\nbproject
timertest\resources
timertest\src
timertest\test-build
timertest\timertest.launch
timertest\view
timertest\.settings\org.hibernate.eclipse.console.prefs
timertest\classes\action
timertest\classes\test
timertest\classes\action\uk
timertest\classes\action\uk\co
timertest\classes\action\uk\co\iblocks
timertest\classes\action\uk\co\iblocks\timertest
timertest\classes\action\uk\co\iblocks\timertest\Authenticator.class
timertest\classes\action\uk\co\iblocks\timertest\JbpmScheduler.class
timertest\classes\action\uk\co\iblocks\timertest\StartupScheduler.class
timertest\classes\action\uk\co\iblocks\timertest\TimerTest.class
timertest\classes\action\uk\co\iblocks\timertest\TimerTestSchedule.class
timertest\classes\action\uk\co\iblocks\timertest\TimerTestWorkflow.class
timertest\classes\test\readme.txt
timertest\dist\timertest.ear
timertest\nbproject\debug-jboss.properties
timertest\nbproject\ide-file-targets.xml
timertest\nbproject\project.xml
timertest\resources\.gpd.timerTest.jpdl.xml
timertest\resources\components.properties
timertest\resources\hibernate.cfg.xml
timertest\resources\import-dev.sql
timertest\resources\import-prod.sql
timertest\resources\import-test.sql
timertest\resources\jbpm.cfg.xml
timertest\resources\messages_bg.properties
timertest\resources\messages_de.properties
timertest\resources\messages_en.properties
timertest\resources\messages_fr.properties
timertest\resources\messages_tr.properties
timertest\resources\META-INF
timertest\resources\seam-gen.reveng.xml
timertest\resources\seam.properties
timertest\resources\security.drl
timertest\resources\timertest-dev-ds.xml
timertest\resources\timertest-prod-ds.xml
timertest\resources\timerTest.jpdl.jpg
timertest\resources\timerTest.jpdl.xml
timertest\resources\WEB-INF
timertest\resources\META-INF\application.xml
timertest\resources\META-INF\ejb-jar.xml
timertest\resources\META-INF\jboss-app.xml
timertest\resources\META-INF\persistence-dev.xml
timertest\resources\META-INF\persistence-prod.xml
timertest\resources\META-INF\persistence-test.xml
timertest\resources\WEB-INF\components.xml
timertest\resources\WEB-INF\faces-config.xml
timertest\resources\WEB-INF\pages.xml
timertest\resources\WEB-INF\web.xml
timertest\src\action
timertest\src\model
timertest\src\test
timertest\src\action\uk
timertest\src\action\uk\co
timertest\src\action\uk\co\iblocks
timertest\src\action\uk\co\iblocks\timertest
timertest\src\action\uk\co\iblocks\timertest\Authenticator.java
timertest\src\action\uk\co\iblocks\timertest\JbpmScheduler.java
timertest\src\action\uk\co\iblocks\timertest\StartupScheduler.java
timertest\src\action\uk\co\iblocks\timertest\TimerTest.java
timertest\src\action\uk\co\iblocks\timertest\TimerTestSchedule.java
timertest\src\action\uk\co\iblocks\timertest\TimerTestWorkflow.java
timertest\src\test\readme.txt
timertest\test-build\META-INF
timertest\test-build\uk
timertest\test-build\WEB-INF
timertest\test-build\uk\co
timertest\test-build\uk\co\iblocks
timertest\test-build\uk\co\iblocks\timertest
timertest\test-build\uk\co\iblocks\timertest\Authenticator.class
timertest\test-build\uk\co\iblocks\timertest\Schedulable.class
timertest\test-build\uk\co\iblocks\timertest\StartupScheduler.class
timertest\test-build\uk\co\iblocks\timertest\TimerTestSchedule.class
timertest\test-build\uk\co\iblocks\timertest\TimerTestWorkflow.class
timertest\view\error.xhtml
timertest\view\home.xhtml
timertest\view\img
timertest\view\index.html
timertest\view\layout
timertest\view\login.page.xml
timertest\view\login.xhtml
timertest\view\stylesheet
timertest\view\timerTest.page.xml
timertest\view\timerTest.xhtml
timertest\view\img\cal-next.png
timertest\view\img\cal-prev.png
timertest\view\img\dtpick.gif
timertest\view\layout\display.xhtml
timertest\view\layout\edit.xhtml
timertest\view\layout\loginout.xhtml
timertest\view\layout\menu.xhtml
timertest\view\layout\template.xhtml
timertest\view\stylesheet\theme.css

> The jta transaction manager returns a null transaction when ending a process that was triggered by a jbpm timer.
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: JBSEAM-2575
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-2575
>             Project: JBoss Seam
>          Issue Type: Bug
>          Components: BPM
>    Affects Versions: 2.0.0.GA
>         Environment: JBoss AS 4.2.1.GA
> JBoss Seam 2.0.0.GA (with Hibernate 3.2.2.GA and JBPM JPDL 3.2.2)
>            Reporter: Peter Brewer
>         Attachments: timertest.zip
>
>
> Summary:
> The jta transaction manager returns a null transaction when ending a process that was triggered by a jbpm timer.
> Steps to reproduce:
> Define a jbpm process containing a task timer with an expiry.
> Start the process and progress to the task with the timer defined.
> Wait for the timer to fire.
> The timer fires and progresses to the end of the workflow. This causes a call to deleteTimersByProcessInstance:
> org.jbpm.db.JobSession.java
> 205  public void deleteJobsForProcessInstance(ProcessInstance processInstance) {
> 206    try {
> 207      Transaction transaction = session.getTransaction();
> 208      transaction.registerSynchronization(new DeleteJobsSynchronization(processInstance));
> 209    } catch (Exception e) {
> 210      log.error(e);
> 211      throw new JbpmException("couldn't delete jobs for '"+processInstance+"'", e);
> 212    }
> 213  }
> Stepping through the code, on line 207 the transaction variable is populated (i.e. not null) but when it calls transaction.registerSynchronization(...):
> org.hibernate.transaction.JTATransaction.java
> 300	public void registerSynchronization(Synchronization sync) throws HibernateException {
> 301		if (getTransactionManager()==null) {
> 302			throw new IllegalStateException("JTA TransactionManager not available");
> 303		}
> 304		else {
> 305			try {
> 306				getTransactionManager().getTransaction().registerSynchronization(sync);
> 307			}
> 308			catch (Exception e) {
> 309				throw new TransactionException("could not register synchronization", e);
> 310			}
> 311		}
> 312	}
> the call on line 306 to getTransactionManager().getTransaction() returns null causing a NPE.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list