如何配置Camunda流程特定的数据源?

时间:2019-01-11 11:24:01

标签: camunda

我在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流程引擎主要数据源配置的信息,该信息在手册,论坛等中都有详细介绍。

1 个答案:

答案 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 JavaDelegateTaskListener中,可以使用DataSource以通常的方式通过InitialContext获得URL为表格:

java:/comp/env/jdbc/myDatasource

使用特定于流程的数据源可避免使用特定于流程的项目污染主tomcat server.xml配置文件。