Как настроить источник данных для процесса Camunda? - PullRequest
0 голосов
/ 11 января 2019

У меня есть Camunda 7.10, работающая на Tomcat 9.0.12.

Источник данных обработчика настроен в

/[tomcat-home]/conf/server.xml

и, по необходимости, доступен для всех развернутых веб-приложений.

Я хочу настроить конкретный источник данных, доступный только этому процессу.

Для обычного веб-приложения обычно есть

[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 голосов
/ 19 января 2019

Следующая конфигурация работает для Camunda 7.10, работающей на Tomcat 9.0.12, с доступом к SQL Server 2012 с использованием проекта сборки Maven в соответствии с примером Camunda Java Process Get-Started .

В разобранном файле 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 / сервлет это поле не является обязательным, поскольку область действия ограничена этим веб-приложением. Для Camunda слушатели задач и т. Д. Запускаются в рамках основного веб-приложения Camunda.

Используя сборку Maven, это всего лишь случай добавления папки и файла META-INF в структуру файла проекта.

Затем в Камунде JavaDelegate или TaskListener можно использовать DataSource для получения соединения обычным способом через InitialContext с URL-адресом в форме:

java:/comp/env/jdbc/myDatasource

Использование специфического для процесса источника данных позволяет избежать загрязнения основного файла конфигурации tomcat server.xml специфичными для процесса элементами.

...