您如何配置 Camunda 流程特定的数据源?
How do you configure a Camunda process specific datasource?
我在 Tomcat 9.0.12 上安装了 Camunda 7.10 运行。
流程引擎数据源配置在
/[tomcat-home]/conf/server.xml
并且必要时可用于所有已部署的网络应用程序。
我希望配置仅供该进程使用的特定于进程的数据源。
对于普通的网络应用程序,通常有一个
[tomcat-home]/webapps/[web-app-name]/META-INF/context.xml
定义数据源和定位器代码的配置文件 returns 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 流程引擎数据源配置的信息,这些信息在手册、论坛等中都有很好的介绍。
以下配置适用于 Camunda 7.10 运行ning on Tomcat 9.0.12 根据 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 网络应用程序,此字段不是必需的,因为范围仅限于该网络应用程序。对于 Camunda,主要 Camunda 网络应用程序范围内的任务侦听器等 运行。
使用Maven构建,只需将META-INF
文件夹&文件添加到项目文件结构即可。
然后,在 Camunda JavaDelegate
或 TaskListener
中,可以使用 DataSource
通过 InitialContext
以通常的方式获得连接URL 的形式:
java:/comp/env/jdbc/myDatasource
使用特定于流程的数据源可避免使用特定于流程的项目污染主 tomcat server.xml
配置文件。
我在 Tomcat 9.0.12 上安装了 Camunda 7.10 运行。
流程引擎数据源配置在
/[tomcat-home]/conf/server.xml
并且必要时可用于所有已部署的网络应用程序。
我希望配置仅供该进程使用的特定于进程的数据源。
对于普通的网络应用程序,通常有一个
[tomcat-home]/webapps/[web-app-name]/META-INF/context.xml
定义数据源和定位器代码的配置文件 returns 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 流程引擎数据源配置的信息,这些信息在手册、论坛等中都有很好的介绍。
以下配置适用于 Camunda 7.10 运行ning on Tomcat 9.0.12 根据 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 网络应用程序,此字段不是必需的,因为范围仅限于该网络应用程序。对于 Camunda,主要 Camunda 网络应用程序范围内的任务侦听器等 运行。
使用Maven构建,只需将META-INF
文件夹&文件添加到项目文件结构即可。
然后,在 Camunda JavaDelegate
或 TaskListener
中,可以使用 DataSource
通过 InitialContext
以通常的方式获得连接URL 的形式:
java:/comp/env/jdbc/myDatasource
使用特定于流程的数据源可避免使用特定于流程的项目污染主 tomcat server.xml
配置文件。