JBPM-存储过程数据(PostgreSQL)

JBPM-存储过程数据(PostgreSQL),postgresql,jbpm,Postgresql,Jbpm,我正在尝试使用PostgreSQL存储JBPM流程数据(使用独立Java应用程序启动流程)。JBPM-5.1(在JBoss5.1上)。Postgresql-9.1。JDBC驱动程序(在应用程序的类路径中)-postgresql-9.1-901.jdbc4 我的persistence.xml(基于JBPM用户指南,第7.1.3章)是: 当我运行它时,最后一行给出了一个异常: 2011-11-18 13:15:02 org.hibernate.util.NamingHelper getInitial

我正在尝试使用PostgreSQL存储JBPM流程数据(使用独立Java应用程序启动流程)。JBPM-5.1(在JBoss5.1上)。Postgresql-9.1。JDBC驱动程序(在应用程序的类路径中)-postgresql-9.1-901.jdbc4

我的persistence.xml(基于JBPM用户指南,第7.1.3章)是:

当我运行它时,最后一行给出了一个异常:

2011-11-18 13:15:02 org.hibernate.util.NamingHelper getInitialContext
INFO: JNDI InitialContext properties:{}
2011-11-18 13:15:02 org.hibernate.connection.DatasourceConnectionProvider configure
SEVERE: Could not find datasource: jdbc/JbpmDS
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
    at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
    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.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
    at com.sample.ProcessTester.main(ProcessTester.java:64)
javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.persistence.jpa] Unable to build EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
    at com.sample.ProcessTester.main(ProcessTester.java:64)
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.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
    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.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
    ... 3 more
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
    ... 10 more

可能我需要执行或配置其他操作。。。但是我被卡住了:(

如果您试图在JBoss内部部署应用程序,那么应该在容器内创建数据源,而不是像在任何容器外运行的单元测试那样从源代码创建数据源。
如果jndi.properties不起作用(jvm找不到),只需在jvm中设置该属性即可 -Djava.naming.factory.initial=bitronix.tm.jndi.BitronixInitialContextFactory


请参阅。

您是如何运行应用程序的?JNDI错误表明您没有在提供JNDI环境的框架内运行应用程序,大多数应用程序服务器都会这样做,尽管像Tomcat这样的Web服务器不会这样做(不添加一些附加配置)。它是一个独立的Java类,具有main方法(嗯,我是jBPM新手,所以现在我只是在测试)。根据jBPM源代码发行版中提供的jBPM指南和jUnit测试,这应该足够了(或者我错过了一些东西,很可能是:()。我还尝试添加了jndi.properies(我在运行的JBoss上部署了一个数据源),但它也不起作用。好的。我自己找到了解决方案,但我还不能发布答案。我会在可能的时候发布。也许有人可以使用它:)嗯,Hibernate正在通过JNDI寻找数据源,这似乎是原因,我想您需要调整配置,以便它使用自己的默认池连接提供程序和JDBC URL来代替它。@Ania您做了什么来解决它?
    PoolingDataSource ds = new PoolingDataSource();         
                ds.setDatabaseName("jbpm");
                ds.setUser("jbpmmanager");
                ds.setPassword("jbpm");     
                ds.setDataSourceName("jdbc/JbpmDS");
                ds.setServerName("localhost");
                ds.setPortNumber(5432);
                ds.setMaxConnections(3);            
                ds.initialize();            

                EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.jbpm.persistence.jpa"); 
.... //other code there
....
2011-11-18 13:15:02 org.hibernate.util.NamingHelper getInitialContext
INFO: JNDI InitialContext properties:{}
2011-11-18 13:15:02 org.hibernate.connection.DatasourceConnectionProvider configure
SEVERE: Could not find datasource: jdbc/JbpmDS
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
    at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
    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.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
    at com.sample.ProcessTester.main(ProcessTester.java:64)
javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.persistence.jpa] Unable to build EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
    at com.sample.ProcessTester.main(ProcessTester.java:64)
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.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
    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.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
    ... 3 more
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
    ... 10 more