1 Reply Latest reply on Apr 22, 2008 9:49 AM by syedtaj

    Process Definition Location in a WAR File

      I am attempting to deploy a Seam app that utilizes JBPM. I have a single page definition file and a single process definition file. Both are located, for the time being, at the root of my WAR file, and both are in my components.xml file in the proper places (without slashes or anything).

      When I deploy my WAR to WebLogic 9.2, the page definition file is processed correctly, but the process definition file is not. I get a MalformedURLException when JBPM tries to find it. What can I do to ensure that the process definition file is located correctly? Why would one file be processed but not the other?

      Here is the log:

      15 Apr 2008 17:24:14,075: INFO javax.servlet.ServletContextListener - Welcome to Seam 2.0.0.GA
      15 Apr 2008 17:24:19,172: WARN org.jboss.seam.init.Initialization - Did not install PojoCache due to NoClassDefFoundError: org/jboss/cache/TreeCache : org/jboss/system/ServiceMBeanSupport
      15 Apr 2008 17:24:36,057: WARN org.hibernate.impl.SessionFactoryImpl - JTASessionContext being used with JDBCTransactionFactory; auto-flush will not operate correctly with getCurrentSession()
      15 Apr 2008 17:24:37,739: DEBUG org.jbpm.JbpmConfiguration - creating jbpm configuration from resource 'org/jboss/seam/bpm/jbpm.pageflow.cfg.xml'
      15 Apr 2008 17:24:37,769: DEBUG org.jbpm.JbpmConfiguration - loading defaults in jbpm configuration
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'default.jbpm.context'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.hibernate.cfg.xml'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.business.calendar'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.default.modules'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.converter'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.action.types'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.node.types'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.parsers'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.varmapping'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.mail.templates'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.byte.block.size'
      15 Apr 2008 17:24:37,830: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.mail.smtp.host'
      15 Apr 2008 17:24:37,840: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.task.instance.factory'
      15 Apr 2008 17:24:37,840: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.variable.resolver'
      15 Apr 2008 17:24:37,840: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.mail.address.resolver'
      15 Apr 2008 17:24:37,840: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.job.executor'
      15 Apr 2008 17:24:37,840: DEBUG org.jbpm.JbpmConfiguration - loading specific configuration...
      15 Apr 2008 17:24:37,850: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'default.jbpm.context'
      15 Apr 2008 17:24:37,870: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpmConfiguration'
      15 Apr 2008 17:24:37,950: INFO org.jbpm.JbpmConfiguration - using jbpm configuration resource 'jbpm.cfg.xml'
      15 Apr 2008 17:24:37,950: DEBUG org.jbpm.JbpmConfiguration - loading defaults in jbpm configuration
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'default.jbpm.context'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.hibernate.cfg.xml'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.business.calendar'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.default.modules'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.converter'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.action.types'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.node.types'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.parsers'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.varmapping'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'resource.mail.templates'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.byte.block.size'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.mail.smtp.host'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.task.instance.factory'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.variable.resolver'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.mail.address.resolver'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpm.job.executor'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.JbpmConfiguration - loading specific configuration...
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'default.jbpm.context'
      15 Apr 2008 17:24:37,960: DEBUG org.jbpm.configuration.ObjectFactoryImpl - adding object info 'jbpmConfiguration'
      15 Apr 2008 17:24:38,000: DEBUG org.jbpm.configuration.JbpmContextInfo - creating jbpm context with service factories '[tx, message, scheduler, logging, persistence, authentication]'
      15 Apr 2008 17:24:38,010: DEBUG org.jbpm.JbpmContext - creating org.jbpm.JbpmContext@1af0784
      15 Apr 2008 17:24:38,010: DEBUG org.jbpm.JbpmContext - closing JbpmContext
      15 Apr 2008 17:24:38,020: DEBUG org.jbpm.db.hibernate.HibernateHelper - creating hibernate configuration resource 'hibernate.cfg.xml'
      15 Apr 2008 17:24:41,134: DEBUG org.jbpm.configuration.JbpmContextInfo - creating jbpm context with service factories '[tx, message, scheduler, logging, persistence, authentication]'
      15 Apr 2008 17:24:41,134: DEBUG org.jbpm.JbpmContext - creating org.jbpm.JbpmContext@1655285
      15 Apr 2008 17:24:41,234: ERROR org.jbpm.jpdl.xml.JpdlXmlReader - couldn't parse process definition
      org.dom4j.DocumentException: null Nested exception: null
       at org.dom4j.io.SAXReader.read(SAXReader.java:484)
       at org.jbpm.jpdl.xml.JpdlParser.parse(JpdlParser.java:58)
       at org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:141)
       at org.jbpm.graph.def.ProcessDefinition.parseXmlInputStream(ProcessDefinition.java:180)
       at org.jbpm.graph.def.ProcessDefinition.parseXmlResource(ProcessDefinition.java:161)
       at org.jboss.seam.bpm.Jbpm.deployProcess(Jbpm.java:269)
       at org.jboss.seam.bpm.Jbpm.installProcessDefinitions(Jbpm.java:252)
       at org.jboss.seam.bpm.Jbpm.startup(Jbpm.java:72)
       at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
       at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
       at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
       at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:125)
       at org.jboss.seam.Component.callComponentMethod(Component.java:2074)
       at org.jboss.seam.Component.callCreateMethod(Component.java:1997)
       at org.jboss.seam.Component.newInstance(Component.java:1968)
       at org.jboss.seam.contexts.Contexts.startup(Contexts.java:304)
       at org.jboss.seam.contexts.Contexts.startup(Contexts.java:278)
       at org.jboss.seam.contexts.ServletLifecycle.endInitialization(ServletLifecycle.java:95)
       at org.jboss.seam.init.Initialization.init(Initialization.java:555)
       at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:34)
       at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:376)
       at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
       at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
       at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:82)
       at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1609)
       at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2764)
       at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:889)
       at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:333)
       at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)
       at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
      Nested exception:
      java.net.MalformedURLException
       at java.net.URL.<init>(URL.java:601)
       at java.net.URL.<init>(URL.java:464)
       at java.net.URL.<init>(URL.java:413)
       at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:968)
       at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:184)
       at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:798)
       at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
       at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
       at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
       at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133)
       at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:153)
       at org.dom4j.io.SAXReader.read(SAXReader.java:465)
       at org.jbpm.jpdl.xml.JpdlParser.parse(JpdlParser.java:58)
       at org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:141)
       at org.jbpm.graph.def.ProcessDefinition.parseXmlInputStream(ProcessDefinition.java:180)
       at org.jbpm.graph.def.ProcessDefinition.parseXmlResource(ProcessDefinition.java:161)
       at org.jboss.seam.bpm.Jbpm.deployProcess(Jbpm.java:269)
       at org.jboss.seam.bpm.Jbpm.installProcessDefinitions(Jbpm.java:252)
       at org.jboss.seam.bpm.Jbpm.startup(Jbpm.java:72)
       at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
       at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
       at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
       at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:125)
       at org.jboss.seam.Component.callComponentMethod(Component.java:2074)
       at org.jboss.seam.Component.callCreateMethod(Component.java:1997)
       at org.jboss.seam.Component.newInstance(Component.java:1968)
       at org.jboss.seam.contexts.Contexts.startup(Contexts.java:304)
       at org.jboss.seam.contexts.Contexts.startup(Contexts.java:278)
       at org.jboss.seam.contexts.ServletLifecycle.endInitialization(ServletLifecycle.java:95)
       at org.jboss.seam.init.Initialization.init(Initialization.java:555)
      15 Apr 2008 17:24:41,245: DEBUG org.jbpm.JbpmContext - closing JbpmContext
      15 Apr 2008 17:24:41,325: DEBUG org.jbpm.configuration.JbpmContextInfo - creating jbpm context with service factories '[tx, message, scheduler, logging, persistence, authentication]'
      15 Apr 2008 17:24:41,325: DEBUG org.jbpm.JbpmContext - creating org.jbpm.JbpmContext@165ec73
      15 Apr 2008 17:24:41,325: DEBUG org.jbpm.JbpmContext - closing JbpmContext
      
      


      As a corollary, I would like to put these files and others like them that come along in the future in their own directory relative to the root. Is this possible? How would I indicate that in components.xml?

      Thanks for your insight.

        • 1. Re: Process Definition Location in a WAR File
          syedtaj

          Hi,

          I get the same problem.

          The JBOSS classloader loads the process definition xml files using its custom class loader, for some reason it searches for the xml file with respect to the lib - jbpm-jpdl.jar. Place this jar in the WEB-INF/lib and then place your process definition xml files directly in the class folder under WEB-INF\classes.

          If you want to create your own folder, configure like this -

          Use

          pdSubProcess = processDefinition.parseXmlResource("<ownfolder>/processdefinition.xml");
          jbpmContext.deployProcessDefinition(pdSubProcess);


          and

          create the folder as

          WEB-INF\classes\ownfolder\processdefintion.xml

          I am not sure why this happens though.

          Refer http://www.jboss.com/index.html?module=bb&op=viewtopic&t=133773

          Cheers