0 Replies Latest reply on Jan 12, 2011 8:14 AM by gabriel.kb

    Seam, TestNG  and Jbpm - Could not find datasource error

    gabriel.kb

      I'm using Seam 2.2, Eclipse 3.5, JBoss tools, jBPM 3.2.7 and the TestNG plugin for Eclipse.

       

      I created a seam project and its test project with the jboss tools. It's a simple "to do list" seam-jbpm application and works fine. However, when I run my seam test (see below) I get this stacktrace:

       

      INFO  [org.jbpm.JbpmConfiguration] using configuration resource: jbpm.cfg.xml
      INFO  [org.jbpm.persistence.db.StaleObjectLogConfigurer] stale object exceptions will be hidden from logging
      ERROR [org.hibernate.connection.DatasourceConnectionProvider] Could not find datasource: java:/EjemplosJbpmDatasource
      java.lang.RuntimeException: PROVIDER_URL not provided in jndi.properties.  Automatic discovery not implemented yet.
                at org.jboss.naming.JBossRemotingContextFactory.getInitialContext(JBossRemotingContextFactory.java:158)
                at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
                at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
                at javax.naming.InitialContext.init(InitialContext.java:223)
                at javax.naming.InitialContext.<init>(InitialContext.java:175)
                at org.hibernate.util.NamingHelper.getInitialContext(NamingHelper.java:51)
                at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
                at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
                at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79)
                at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:448)
                at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89)
                at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
                at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
                at org.jbpm.persistence.db.DbPersistenceServiceFactory.getSessionFactory(DbPersistenceServiceFactory.java:105)
                at org.jbpm.persistence.db.DbPersistenceService.getSessionFactory(DbPersistenceService.java:84)
                at org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:89)
                at org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:340)
                at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:596)
                at org.jbpm.scheduler.db.DbSchedulerService.<init>(DbSchedulerService.java:49)
                at org.jbpm.scheduler.db.DbSchedulerServiceFactory.openService(DbSchedulerServiceFactory.java:32)
                at org.jbpm.svc.Services.getService(Services.java:155)
                at org.jbpm.svc.Services.getCurrentService(Services.java:93)
                at org.jbpm.svc.Services.getCurrentService(Services.java:86)
                at org.jbpm.scheduler.def.CreateTimerAction.execute(CreateTimerAction.java:79)
                at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:280)
                at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:237)
                at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:207)
                at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:190)
                at org.jbpm.taskmgmt.exe.TaskInstance.create(TaskInstance.java:156)
                at org.jbpm.taskmgmt.exe.TaskMgmtInstance.createTaskInstance(TaskMgmtInstance.java:191)
                at org.jbpm.graph.node.TaskNode.execute(TaskNode.java:189)
                at org.jbpm.graph.def.Node.enter(Node.java:375)
                at org.jbpm.graph.def.Transition.take(Transition.java:151)
                at org.jbpm.graph.def.Node.leave(Node.java:453)
                at org.jbpm.graph.node.StartState.leave(StartState.java:78)
                at org.jbpm.graph.exe.Token.signal(Token.java:214)
                at org.jbpm.graph.exe.Token.signal(Token.java:143)
                at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:287)
                at org.ejemplosjbpm.test.SubProcesoTest.testMinimo(SubProcesoTest.java:25)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:597)
                at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
                at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
                at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
                at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
                at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
                at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
                at org.testng.TestRunner.runWorkers(TestRunner.java:759)
                at org.testng.TestRunner.privateRun(TestRunner.java:592)
                at org.testng.TestRunner.run(TestRunner.java:486)
                at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
                at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
                at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
                at org.testng.SuiteRunner.run(SuiteRunner.java:204)
                at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
                at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
                at org.testng.TestNG.run(TestNG.java:751)
                at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
                at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
      ERROR [org.jbpm.graph.def.GraphElement] action threw exception: Could not find datasource
      org.hibernate.HibernateException: Could not find datasource
                at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:79)
                at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
                at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79)
                at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:448)
                at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89)
                at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
                at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
                at org.jbpm.persistence.db.DbPersistenceServiceFactory.getSessionFactory(DbPersistenceServiceFactory.java:105)
                at org.jbpm.persistence.db.DbPersistenceService.getSessionFactory(DbPersistenceService.java:84)
                at org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:89)
                at org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:340)
                at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:596)
                at org.jbpm.scheduler.db.DbSchedulerService.<init>(DbSchedulerService.java:49)
                at org.jbpm.scheduler.db.DbSchedulerServiceFactory.openService(DbSchedulerServiceFactory.java:32)
                at org.jbpm.svc.Services.getService(Services.java:155)
                at org.jbpm.svc.Services.getCurrentService(Services.java:93)
                at org.jbpm.svc.Services.getCurrentService(Services.java:86)
                at org.jbpm.scheduler.def.CreateTimerAction.execute(CreateTimerAction.java:79)
                at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:280)
                at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:237)
                at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:207)
                at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:190)
                at org.jbpm.taskmgmt.exe.TaskInstance.create(TaskInstance.java:156)
                at org.jbpm.taskmgmt.exe.TaskMgmtInstance.createTaskInstance(TaskMgmtInstance.java:191)
                at org.jbpm.graph.node.TaskNode.execute(TaskNode.java:189)
                at org.jbpm.graph.def.Node.enter(Node.java:375)
                at org.jbpm.graph.def.Transition.take(Transition.java:151)
                at org.jbpm.graph.def.Node.leave(Node.java:453)
                at org.jbpm.graph.node.StartState.leave(StartState.java:78)
                at org.jbpm.graph.exe.Token.signal(Token.java:214)
                at org.jbpm.graph.exe.Token.signal(Token.java:143)
                at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:287)
                at org.ejemplosjbpm.test.SubProcesoTest.testMinimo(SubProcesoTest.java:25)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:597)
                at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
                at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
                at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
                at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
                at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
                at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
                at org.testng.TestRunner.runWorkers(TestRunner.java:759)
                at org.testng.TestRunner.privateRun(TestRunner.java:592)
                at org.testng.TestRunner.run(TestRunner.java:486)
                at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
                at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
                at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
                at org.testng.SuiteRunner.run(SuiteRunner.java:204)
                at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
                at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
                at org.testng.TestNG.run(TestNG.java:751)
                at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
                at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
      Caused by: java.lang.RuntimeException: PROVIDER_URL not provided in jndi.properties.  Automatic discovery not implemented yet.
                at org.jboss.naming.JBossRemotingContextFactory.getInitialContext(JBossRemotingContextFactory.java:158)
                at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
                at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
                at javax.naming.InitialContext.init(InitialContext.java:223)
                at javax.naming.InitialContext.<init>(InitialContext.java:175)
                at org.hibernate.util.NamingHelper.getInitialContext(NamingHelper.java:51)
                at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
                ... 54 more
      FAILED: testMinimo
      org.jbpm.graph.def.DelegationException: Could not find datasource
                at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:359)
                at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:350)
                at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:350)
                at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:296)
                at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:237)
                at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:207)
                at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:190)
                at org.jbpm.taskmgmt.exe.TaskInstance.create(TaskInstance.java:156)
                at org.jbpm.taskmgmt.exe.TaskMgmtInstance.createTaskInstance(TaskMgmtInstance.java:191)
                at org.jbpm.graph.node.TaskNode.execute(TaskNode.java:189)
                at org.jbpm.graph.def.Node.enter(Node.java:375)
                at org.jbpm.graph.def.Transition.take(Transition.java:151)
                at org.jbpm.graph.def.Node.leave(Node.java:453)
                at org.jbpm.graph.node.StartState.leave(StartState.java:78)
                at org.jbpm.graph.exe.Token.signal(Token.java:214)
                at org.jbpm.graph.exe.Token.signal(Token.java:143)
                at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:287)
                at org.ejemplosjbpm.test.SubProcesoTest.testMinimo(SubProcesoTest.java:25)
      Caused by: org.hibernate.HibernateException: Could not find datasource
                at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:79)
                at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
                at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79)
                at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:448)
                at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89)
                at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
                at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
                at org.jbpm.persistence.db.DbPersistenceServiceFactory.getSessionFactory(DbPersistenceServiceFactory.java:105)
                at org.jbpm.persistence.db.DbPersistenceService.getSessionFactory(DbPersistenceService.java:84)
                at org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:89)
                at org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:340)
                at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:596)
                at org.jbpm.scheduler.db.DbSchedulerService.<init>(DbSchedulerService.java:49)
                at org.jbpm.scheduler.db.DbSchedulerServiceFactory.openService(DbSchedulerServiceFactory.java:32)
                at org.jbpm.svc.Services.getService(Services.java:155)
                at org.jbpm.svc.Services.getCurrentService(Services.java:93)
                at org.jbpm.svc.Services.getCurrentService(Services.java:86)
                at org.jbpm.scheduler.def.CreateTimerAction.execute(CreateTimerAction.java:79)
                at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:280)
                ... 36 more
      Caused by: java.lang.RuntimeException: PROVIDER_URL not provided in jndi.properties.  Automatic discovery not implemented yet.
                at org.jboss.naming.JBossRemotingContextFactory.getInitialContext(JBossRemotingContextFactory.java:158)
                at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
                at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
                at javax.naming.InitialContext.init(InitialContext.java:223)
                at javax.naming.InitialContext.<init>(InitialContext.java:175)
                at org.hibernate.util.NamingHelper.getInitialContext(NamingHelper.java:51)
                at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
      
      

      This is my test class:

       

      public class SubProcesoTest{
      
        @Test
        public void testMinimo() throws Exception {
        JbpmConfiguration jbpmConfig = JbpmConfiguration.getInstance();
        JbpmContext jbpmContext = jbpmConfig.createJbpmContext();
        try {
      
      
        ProcessDefinition subProceso = ProcessDefinition
        .parseXmlResource("subproceso/processdefinition.xml");
        ProcessInstance subProcesoPI = subProceso.createProcessInstance();
        Assert.assertEquals(
        subProcesoPI.getRootToken().getNode().getName(), "start");
      
      
        subProcesoPI.signal();
      
      
        Assert.assertEquals(
        subProcesoPI.getRootToken().getNode().getName(), "todo");
        } finally {
        jbpmContext.close();
        }
        }
      }
      

       

      This is the persistence unit defined in the persistence.xml for the project:

       

        <persistence-unit name="EjemplosJbpm" transaction-type="JTA">
            <provider>org.hibernate.ejb.HibernatePersistence</provider>
            <jta-data-source>java:/EjemplosJbpmDatasource</jta-data-source>
            <properties>
               <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
               <property name="hibernate.hbm2ddl.auto" value="update"/>
               <property name="hibernate.show_sql" value="true"/>
               <property name="hibernate.format_sql" value="true"/>
               <!-- Only relevant if Seam is loading the persistence unit (Java SE bootstrap) -->
               <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
            </properties>
         </persistence-unit>
      
      

       

      And the jbpm.cfg.xml:

       

      <jbpm-configuration>
      
      
                <jbpm-context>
                          <service name="persistence">
                                    <factory>
                                              <bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
                                                        <field name="isTransactionEnabled">
                                                                  <false />
                                                        </field>
                                              </bean>
                                    </factory>
      
      
                          </service>
      
      
                          <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>
      
      

       

      I've spent several days reading many threads (like this one ttp://seamframework.org/Community/UnitTestCouldNotFindDatasourceJavaDefaultD) and trying many "workarounds" but nothing of that worked.

       

      Thanks in advance for your help.

       

      Kind regards,

      GK