Как определить источник данных MySQL в TomEE?
Платформа: TomEE Web profile 1.5.0.
Я пытаюсь сделать очень простую вещь, настроить источник данных для MySQL. Я прочитал официальное руководство (http://openejb.apache.org/configuring-datasources.html). Он просит нас ввести элемент Resource в openejb.xml. Я не могу найти этот файл в Tomee-Webprofile-1.5.0. Я читал в других местах, что я мог бы использовать tomee.xml для той же цели. Итак, я добавил это в свой conf / tomee.xml.
<Resource id="TestDS" type="DataSource">
JdbcDriver com.mysql.jdbc.Driver
JdbcUrl jdbc:mysql://localhost/test
UserName root
Password some_pass
</Resource>
Я скопировал JAR драйвера MySQL в папку tomee / lib.
Я написал этот код. Показаны фрагменты здесь:
@Resource(name="TestDS")
DataSource ds;
Connection con = ds.getConnection();
PreparedStatement ps = con.prepareStatement("select * from UserProfile");
Вызов prepareStatement() вызывает это исключение:
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERPROFILE
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
Почему система использует драйвер hsqldb? Фактически, независимо от того, что используется в качестве имени для @Resource, я получаю одно и то же исключение.
Что я делаю неправильно? Я начинаю TomEE с Eclipse, если это что-то меняет.
4 ответа
Я выследил причину. Проблема возникает только тогда, когда я запускаю TomEE из Eclipse. Если я запускаю его из командной строки, мое определение источника данных работает просто отлично.
Похоже, что когда я запускаю TomEE из командной строки, он использует файлы конфигурации из /.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf. Чтобы изменить это, я должен был предпринять следующие шаги в Eclipse:
- Удалите все развернутые проекты с сервера.
- Откройте настройки сервера и в разделе "Расположение серверов" выберите "Использовать установку Tomcat". Этот раздел неактивен, если у вас есть хотя бы один проект, все еще развернутый на сервере. Итак, убедитесь, что вы сделали шаг #1.
- Перезагрузите сервер и повторно разверните приложение. Теперь мое приложение находит источник данных.
Обычно установка объясняется здесь http://tomee.apache.org/tomee-and-eclipse.html
[Я бы сделал это комментарием к ответу RajV, но у меня недостаточно репутации, чтобы сделать это.]
Платформа: Tomee 1.6.0 Webprofile, eclipse-jee-kepler-SR2-linux-gtk-x86_64 и OpenJDK 1.7.0_51
После выполнения действий, описанных в http://tomee.apache.org/tomee-and-eclipse.html (включая "Установка метаданных рабочей области"), я получил ту же ошибку "пользователю не хватает привилегии или объект не найден". Моя реакция была на:
$ ln -s [workspace_path]/Servers/tomee.xml \
[workspace_path]/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/
В качестве преимущества этого решения TomEE в eclipse всегда использует текущую версию Workspace/Servers/tomee.xml без каких-либо дальнейших ручных операций.
Для меня лучшим решением будет поместить файл tomee.xml в каталог вашего сервера wpt (/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf) и определить там свой источник данных.