Я пытаюсь написать плагин мониторинга для Artifactory с использованием MySQL. Идея заключается в том, что плагин будет собирать некоторые данные с использованием общедоступного API Artifactory и некоторых утилит командной строки, а затем записывать эти данные в базу данных MySQL для последующего анализа. Проблема в том, что плагин не может найти драйвер jdbc. Я поместил драйвер JAR в <artifactory-home>/etc/plugins/lib
и я регистрирую его так:
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/artifactoryTest', <user>, <pass>, 'com.mysql.jdbc.Driver')
Это приводит к ClassNotFoundException в com.mysql.jdbc.Driver. Похоже, что загрузчик классов, используемый Artifactory, не может найти JAR.
Есть ли способ сделать эту работу, или я лаяю неправильное дерево? Я знаю, что могут быть некоторые технологии баз данных, которые лучше подходят для этой цели, но многие из них кажутся излишними для такого базового варианта использования, и я хотел бы сохранить его максимально простым.
Оказывается, это действительно возможно. Artifactory может быть настроен на использование нескольких различных баз данных, включая MySQL, поэтому я решил, что должен быть способ использовать тот же драйвер, который использует Artifactory и действительно есть.
В документации по настройке Artifactory с MySQL говорится:
Загрузите драйвер JDBC MySQL (доступный с веб-сайта MySQL) и скопируйте файл mysql-connector-java-.jar в каталог общих библиотек сервера. Например, $ TOMCAT_HOME/lib при установке в качестве службы или $ ARTIFACTORY_HOME/tomcat/lib в автономной версии.
Простое отключение JDBC-драйвера JAR в каталоге shared lib делает его доступным для использования в плагинах. Я предполагаю, что этот подход будет работать и для любых других JAR.