Java Drools 6.x Workbench无法部署到windows中的tomcat-没有向uniqueName';注册的资源;jdbc/jbpm';

Java Drools 6.x Workbench无法部署到windows中的tomcat-没有向uniqueName';注册的资源;jdbc/jbpm';,java,tomcat,drools,kie-workbench,Java,Tomcat,Drools,Kie Workbench,我无法在tomcat(7.x版)中为Windows启动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(J

我无法在tomcat(7.x版)中为Windows启动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)
原因:org.hibernate.service.jndi.JndiException:无法查找jndi名称[java:comp/env/jdbc/jbpm]
位于org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:68)
位于org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.configure(DatasourceConnectionProviderImpl.java:116)
位于org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
位于org.hibernate.engine.jdbc.internal.jdbcservicesiml.buildJdbcConnectionAccess(jdbcservicesiml.java:223)
位于org.hibernate.engine.jdbc.internal.jdbcservicesiml.configure(jdbcservicesiml.java:89)
位于org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
位于org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1827)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1785)
位于org.hibernate.ejb.EntityManagerFactoryImpl。(EntityManagerFactoryImpl.java:96)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
... 94多
原因:javax.naming.NamingException:没有向uniqueName“jdbc/jbpm”注册资源,可用资源:[]
位于bitronix.tm.resource.ResourceObjectFactory.getObjectInstance(ResourceObjectFactory.java:55)
位于org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:141)
位于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$CATALINA\u HOME的类unix系统的一个示例,需要将其替换为Windows环境变量或绝对路径

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

  • 上述注释适用于所有文件
  • 仅仅用realpath设置环境变量对我来说不起作用,我还需要删除那些奇怪的斜杠 以下是我遵循的具体步骤:

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

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

  • 在catalina.bat中,在catalina_HOME上方添加行'set catalina_OPTS'的完整内容(或者您也可以尝试将其添加到setenv.bat中,可能会奏效)。 当然,更改路径以适应机器中的位置

  • 使用CATALINA_碱的回声:“%CATALINA_碱%”


    我按照下面答案中的workbench自述说明进行了一些修改——我必须添加jvm选项,而不是通过setenv.bat,而是直接添加到tomcat启动选项中。 我还使用了完整路径,路径中没有%catalina_home%环境变量名


    在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
    

    谢谢我要强调的是,setenv.bat中CATALINA_OPTS的值不应在qoutes中关闭。
    -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
    
    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