Я пытаюсь создать простой источник данных в Wildfly 12, чтобы подключить базу данных mysql к Java WEB-приложению.
Я попробовал 2 варианта:
Измените standalone-full.xml, чтобы добавить источник данных следующим образом:
<datasource jndi-name="java:jboss/datasources/MyDS" pool-name="MyDS" enabled="true" use-java-context="true">
<connection-url>jdbc:mysql://localhost:3306/MyDatabaseName</connection-url>
<driver>mysql</driver>
<pool>
<min-pool-size>2</min-pool-size>
<max-pool-size>5</max-pool-size>
</pool>
<security>
<user-name>myuser</user-name>
<password>mypassword</password>
</security>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
</driver>
</drivers>
Я создаю соединение с использованием источника данных без проблем:
Context initCtx = new InitialContext(), envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/MyDS");
this.connection = ds.getConnection();
Java Connection работает без ошибок, но когда я создаю сервлет для запроса к моей базе данных, у меня есть такое исключение:
"Таблица" пользователь "не найден; оператор SQL: выберите * у пользователя, где username = 'myusername'"
Я проверил несколько тестов, и я заметил, что Java подключен к базе данных, но не к конкретной схеме. Я запускаю запрос типа "SELECT DATABASE() FROM DUAL", и результатом является "TEST". Поэтому я предполагаю, что параметр имени базы данных в URL-соединении не работает должным образом.
Как я могу решить эту проблему? Я не нашел дополнительного параметра для указания имени базы данных в источнике данных.
Спасибо за ваше время.
Ну, после того, как я попробовал некоторые изменения, я понял, что мне пришлось добавить следующий код в файл web.xml:
<resource-ref>
<res-ref-name>jdbc/MyDS/<res-ref-name>
<jndi-name>jdbc:mysql://localhost:3306/MyDatabaseName</jndi-name>
</resource-ref>
Это решило проблему.