我无法在适用于 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 变量或绝对路径
这适用于所有文件。在这里,如果您不是(像我一样)批处理和窗口专家,事情就会变得复杂。因此,我会告诉您两件事,并给出我为使其正常工作所做的确切更改。
- 以上注意事项适用于所有文件。
- 仅使用真实路径设置环境变量并不能使它对我有用,我还需要删除那些奇怪的斜线。
以下是我遵循的确切步骤:
在 resources.properties 中将此 prop 的路径更改为 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_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/