Совместное использование базы данных с внешней программой - PullRequest
0 голосов
/ 25 октября 2018

У нас есть приложение Foo , запущенное внутри веб-контейнера (WildFly 14).Он получает соединение с базой данных стандартным способом через JNDI.Итак, соединение настраивается не внутри приложения, а в WildFly.

Теперь Foo запускает внешнюю программу Bar на той же машине.Предполагается, что эта внешняя программа полностью независима от основного приложения, но требует доступа к той же базе данных. Бар также подключен к Foo через каналы, поэтому нет проблем с передачей сериализуемых объектов от одного к другому.

При простой реализации мне потребуетсянастроить Bar доступ к базе данных отдельно от Foo .

Возможно ли как-нибудь автоматически передать необходимые параметры соединения с базой данных из Foo в Бар ?Поскольку мы используем два разных типа базы данных, это будет включать и драйвер JDBC ( Foo получает его «бесплатно» из развертывания WildFly).Плюс JDBC URL, имя пользователя и пароль.Автоопределение даже некоторых из них было бы полезно.

Мы контролируем и можем изменить практически все в этой настройке ( Foo и Bar source, конфигурация WildFly).

1 Ответ

0 голосов
/ 27 октября 2018

На самом деле есть две другие альтернативы (гораздо более легкие, чем JNDI)

  1. Вы можете использовать admin REST api Wildfly, чтобы прочитать настройки источника данных, определенные на сервере (в /configuration/standalone-***.xml).Ваше приложение может выдать простой (аутентифицированный) http GET-запрос и проанализировать полученный xml.

http://localhost:9990/management/subsystem/datasources/data-source/ExampleDS?operation=resource&recursive=true&json.pretty=1

Аналогичным образом эти настройки также доступны для Wildfly в JMX .Вам просто нужно прочитать их, используя JMX API JDK или одну из многочисленных библиотек с открытым исходным кодом, упрощающую JMX-запрос.Просто запустите «jconsole», подключитесь к процессу, на котором работает ваш WF-сервер, и найдите атрибуты вашего источника данных.=> найдите атрибуты «ConnectionUrl», «userName» и «password».Затем код вашего приложения, чтобы прочитать эти 3 атрибута.

Удачи!

enter image description here

...