java - 无法将 Drools 6.x Workbench 部署到 Windows 中的 tomcat - 没有使用 uniqueName 'jdbc/jbpm' 注册的资源

标签 java tomcat drools kie-workbench

我无法在适用于 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)

最佳答案

安全地包裹在 drools war 文件中的是一个 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 env 变量或绝对路径

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

  1. 以上注意事项适用于所有文件。
  2. 仅使用真实路径设置环境变量并不能使它对我有用,我还需要删除那些奇怪的斜线。

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

  1. 在 resources.properties 中将此 prop 的路径更改为 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%"

关于java - 无法将 Drools 6.x Workbench 部署到 Windows 中的 tomcat - 没有使用 uniqueName 'jdbc/jbpm' 注册的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31049973/

相关文章:

java - Drools 在迭代时访问 HashMap 中的对象

maven - 在 Wildfly 上部署 KIE-CI 失败

java - Spring JPA @Transactional - 数据在不同线程中不可见

java - 将 Random() 类与增强的 for 循环一起使用

java - Tomcat 找不到类 freemarker.template.TemplateException

java - 如何在不影响Tomcat重新部署的情况下替换已编译jar中的文件

weblogic - 在 Java 11 中使用枚举时出现 UnsupportedOperationException,在 Java 8 中工作正常

java - 打包多媒体文件(视频或音频文件)

java - 使用spring在 map 中插入枚举值

tomcat - 如何判断MyEclipse如何部署Tomcat webapp