camunda - 您如何配置特定于 Camunda 进程的数据源?
问题描述
我在 Tomcat 9.0.12 上运行 Camunda 7.10。
流程引擎数据源配置在
/[tomcat-home]/conf/server.xml
并且,必要时,所有已部署的 Web 应用程序都可以使用。
我希望配置仅对该进程可用的特定于进程的数据源。
对于普通的 Web 应用程序,通常有一个
[tomcat-home]/webapps/[web-app-name]/META-INF/context.xml
定义数据源的配置文件和 javax.sql.DataSource
使用javax.naming.InitialContext
etc返回的定位器代码
看部署的具体流程,有两个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 流程引擎数据源配置的信息,这些信息在手册、论坛等中有很好的介绍。
解决方案
以下配置适用于在 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-app,此字段不是必需的,因为范围仅限于该 web-app。对于 Camunda,任务侦听器等在 Camunda 主网络应用程序的范围内运行。
使用 Maven 构建,只需将META-INF
文件夹和文件添加到项目文件结构中。
然后,在 CamundaJavaDelegate
或TaskListener
中,可以使用以下形式的 URL 以DataSource
通常的方式通过 an 获取连接:InitialContext
java:/comp/env/jdbc/myDatasource
使用特定于进程的数据源可避免使用特定server.xml
于进程的项目污染主 tomcat 配置文件。
推荐阅读
- facebook-graph-api - 我可以在我的后端访问有关 Instagram 媒体的 Instagram 见解吗?
- asp.net - FluentValidation 验证字段总和
- javascript - HTML获取React中表单的内部html标签值onSubmit
- angular - 在循环中获取 ngModel 类型元素的值
- python - 如何更改类中的变量并返回它
- c++ - 在 C++11 中返回包含 const-reference 的 std::tuple
- java - 布局未在 Android Studio 中呈现
- apache-spark - 如何在 hive udf 或 taskcontext 中使用累加器
- angular - Ionic Angular 编译器变量名
- javascript - 通过 HTML 调用导入的函数