我在Tomcat 9.0.12上运行了Camunda 7.10。
在以下位置配置流程引擎数据源
/[tomcat-home]/conf/server.xml
,并且必要时,该功能可用于所有已部署的Web应用程序。
我希望配置仅适用于该流程的特定于流程的数据源。
对于普通的网络应用,通常会有一个
[tomcat-home]/webapps/[web-app-name]/META-INF/context.xml
配置文件,用于定义数据源和使用javax.sql.DataSource
等返回javax.naming.InitialContext
的定位符代码
看部署的具体过程,有两个META-INF文件夹
[tomcat-home]\webapps\[process-name]\META-INF
[tomcat-home]\webapps\[process-name]\WEB-INF\classes\META-INF
第一个具有Maven特定项目。 第二个是process.xml文件所在的位置。
使用经过验证的数据源定位符代码并将经过验证的context.xml
文件放在此处失败
javax.naming.NameNotFoundException: Name [jdbc/recruitDS] is not bound in this Context. Unable to find [jdbc].
搜索此内容只会导致有关Camunda流程引擎主要数据源配置的信息,该信息在手册,论坛等中都有详细介绍。
答案 0 :(得分:1)
以下配置适用于运行在Tomcat 9.0.12上的Camunda 7.10,并根据Camunda Java Process Get-Started示例使用Maven构建项目访问SQL Server 2012。
在展开的WAR文件中的文件夹中:
[tomcat-home]\webapps\[process-name]\META-INF
必须有一个包含以下字段的context.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="jdbc/myDatasource"
global="jdbc/myDatasource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://127.0.0.1:1433;databaseName=myDatabaseName"
username="myUsername"
password="myPassword"
maxTotal="50"
maxIdle="0"
maxWaitMillis="-1"
removeAbandonedOnBorrow="true"
removeAbandonedOnMaintenance="true" />
</Context>
重要字段是global
标记-缺少此标记将导致上述异常。对于普通的JSP / servlet Web应用程序,此字段不是必需的,因为范围仅限于该Web应用程序。对于Camunda,任务监听器等在Camunda主网络应用程序的范围内运行。
使用Maven构建,只是将META-INF
文件夹和文件添加到项目文件结构中的情况。
然后,在Camunda JavaDelegate
或TaskListener
中,可以使用DataSource
以通常的方式通过InitialContext
获得URL为表格:
java:/comp/env/jdbc/myDatasource
使用特定于流程的数据源可避免使用特定于流程的项目污染主tomcat server.xml
配置文件。