#java #sql #database #wildfly #datasource
Вопрос:
Я настроил источник данных на своем сервере Wildfly с именем JNDI java:/Postgres.
JNDI Name java:/Postgres
Driver Name postgresql-42.2.23.jar
Connection URL jdbc:postgresql://localhost:5432/skistuff
Enabled true
Statistics Enabled false
У меня также есть веб-приложение java, которое должно подключаться к этой базе данных. Я могу подключиться к нему с помощью приведенной ниже конфигурации, и все работает нормально, но мне нужно использовать источник данных.
<sql:setDataSource
var = "myDS"
driver = "org.postgresql.Driver"
url = "jdbc:postgresql://localhost:5432/skistuff"
user = "fred"
password = "secret"
/>
<sql:query var = "listStuff" dataSource = "${myDS}">
SELECT * FROM skisEtc ORDER BY id;
</sql:query>
В документации о setDataSource говорится, что существует атрибут «Источник данных», который принимает имя JNDI. Когда я пытаюсь сделать это, как в примере ниже, а затем развертываю его на своем сервере Wildfly, я получаю сообщение об ошибке «Не удается установить соединение, недопустимый источник данных: «Исключение java.sql.SQLException: Не найден подходящий драйвер для java:/Postgres» »
<sql:setDataSource
var = "myDS"
driver = "org.postgresql.Driver"
dataSource="java:/Postgres"
/>
<sql:query var = "listStuff" dataSource = "${myDS}">
SELECT * FROM skisEtc ORDER BY id;
</sql:query>
Какой драйвер я должен использовать? Или как я могу подключить свое приложение к источнику данных?
Комментарии:
1. Вы пробовали отказаться от
driver
собственности? Это актуально только при использованииurl
. Ошибка наводит меня на мысль, что она была сгенерирована наличиемjava:/Postgres
вurl
поле, а не вdataSource
поле. В некоторой документации предполагается, что имя источника данных должно быть «относительным», поэтому также попробуйтеPostgres
(и, возможно/Postgres
).2. Я не могу вспомнить все случаи использования JSTL, но беглый поиск также предполагает, что вы могли бы обойтись без использования
setDataSource
и использовать ссылку JNDI непосредственноdataSource
в запросе.3. Я пытался это сделать. Я также попытался вообще удалить блок setDataSource и поместить имя JNDI в <sql:запрос, подобный этому <sql:запрос var = «listStuff» Источник данных = «java:/Postgres»>