3

我无法在 Windows 的 tomcat(版本 7.x)中启动 drools 6.2。这在我的 linux 机器上运行良好。但在 Windows 中,我不断收到以下错误

Caused by: org.hibernate.service.jndi.JndiException: Unable to lookup JNDI name [java:comp/env/jdbc/jbpm]
    at org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:68)
    at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.configure(DatasourceConnectionProviderImpl.java:116)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
    at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1827)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1785)
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
    ... 94 more
Caused by: javax.naming.NamingException: no resource registered with uniqueName 'jdbc/jbpm', available resources: []
    at bitronix.tm.resource.ResourceObjectFactory.getObjectInstance(ResourceObjectFactory.java:55)
    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:141)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
4

3 回答 3

3

安全地包裹在 drools 战争文件中的是一个 README.txt。确保在从这里继续之前阅读它。我遵循了大部分说明。在第一次尝试中它在 linux 中运行良好。但是对于 Windows 来说,情况有点不同:

README.txt 中的第 3 步

*******************************************************************************

    NOTE: jdbc/jbpm is the JNDI name used by tomcat distribution of the application

3. Define system properties for btm.root, bitronix config file, JBoss logging provider and others.

    create setenv.sh (or setenv.bat) file inside TOMCAT_HOME/bin and add following:

    CATALINA_OPTS="-Xmx512M -XX:MaxPermSize=512m -Dbtm.root=$CATALINA_HOME \
    -Dbitronix.tm.configuration=$CATALINA_HOME/conf/btm-config.properties \
    -Djbpm.tsr.jndi.lookup=java:comp/env/TransactionSynchronizationRegistry \
    -Djava.security.auth.login.config=$CATALINA_HOME/webapps/kie-drools-wb/WEB-INF/classes/login.config \
    -Dorg.jboss.logging.provider=jdk"

    NOTE: this is an example for unix like systems for Windows $CATALINA_HOME needs to be replaced with windows env variable or absolute path
    NOTE: java.security.auth.login.config value includes name of the folder in which application is deployed by default it assumes kie-drools-wb so ensure that matches real installation.
    login.config file can be externalized as well meaning be placed outside of war file.


   *****************************************************************

在上面的注释中:

注意:这是适用于 Windows 的类 unix 系统的示例 $CATALINA_HOME 需要替换为 windows 环境变量或绝对路径

这适用于所有文件。在这里,如果您不是(像我一样)批处理和窗口方面的专家,事情就会变得复杂。所以我会告诉你两件事,并给出我为使它工作所做的确切改变。

  1. 上述说明适用于所有文件。
  2. 仅使用真实路径设置环境变量并不能使它对我有用,我也需要删除那些奇怪的斜杠。

以下是我遵循的确切步骤:

  1. 在 resources.properties 中,将此道具的路径更改为 windows 格式而不是 linux。(~ 在 linux 中表示主目录)

    resource.ds1.driverProperties.url=jdbc:h2:file:C:/Users/nanospeck/Downloads/apache-tomcat-7.0.54/temp2

  2. 在 catalina.bat 中,在 CATALINA_HOME 上方添加“set CATALINA_OPTS”行的全部内容(或者您也可以尝试将其添加到 setenv.bat,可能会起作用)。 当然,更改路径以适合您机器中的位置。

使用 CATALINA_BASE 回显:“%CATALINA_BASE%”

set CATALINA_OPTS=-Xmx512M -XX:MaxPermSize=512m -Dbtm.root=C:\Users\nanospeck\Downloads\apache-tomcat-7.0.54\ -Dbitronix.tm.configuration=C:\Users\nanospeck\Downloads\apache-tomcat-7.0.54\conf\btm-config.properties -Djbpm.tsr.jndi.lookup=java:comp/env/TransactionSynchronizationRegistry -Djava.security.auth.login.config=C:\Users\nanospeck\Downloads\apache-tomcat-7.0.54\webapps\kie-drools-wb\WEB-INF\classes\login.config -Dorg.jboss.logging.provider=jdk

echo Using CATALINA_HOME:   "%CATALINA_HOME%"
echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
于 2015-06-25T12:08:37.177 回答
2

我按照以下答案中的工作台自述文件说明进行了一些更改 - 我必须添加 jvm 选项,而不是通过 setenv.bat 而是直接在 tomcat 启动选项中。我还使用了路径中没有 %catalina_home% 环境变量名称的完整路径 在此处输入图像描述

-Dbtm.root=C:\Program Files\Apache Software Foundation\Tomcat 8.0
-Dbitronix.tm.configuration=C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf\btm-config.properties
-Djbpm.tsr.jndi.lookup=java:comp/env/TransactionSynchronizationRegistry
-Djava.security.auth.login.config=C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\kie-drools-wb\WEB-INF\classes\login.config
-Dorg.jboss.logging.provider=jdk
于 2016-04-07T21:36:14.940 回答
1

在 Windows 中,setenv.bat 应该是这样的:

SET CATALINA_OPTS=-Xmx512M -XX:MaxPermSize=512m -Dbtm.root=%CATALINA_HOME% -Dbitronix.tm.configuration=%CATALINA_HOME%/conf/btm-config.properties -Djbpm.tsr.jndi.lookup=java:comp/env/TransactionSynchronizationRegistry -Djava.security.auth.login.config=%CATALINA_HOME%/webapps/kie-drools-wb/WEB-INF/classes/login.config -Dorg.jboss.logging.provider=jdk
于 2020-03-14T04:35:10.940 回答